Mercurial > urweb
comparison src/cjrize.sml @ 2221:278e10629ba1
Basic field-resolution invalidation.
author | Ziv Scully <ziv@mit.edu> |
---|---|
date | Sat, 29 Nov 2014 03:37:59 -0500 |
parents | a9159911c3ba |
children | 25874084bf1f |
comparison
equal
deleted
inserted
replaced
2220:794017f378de | 2221:278e10629ba1 |
---|---|
14 * | 14 * |
15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | 15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | 17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
18 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE | 18 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
19 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | 19 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
20 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | 20 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
21 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | 21 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | 22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | 23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
24 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | 24 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
429 end | 429 end |
430 | 430 |
431 | L.EClosure _ => (ErrorMsg.errorAt loc "Nested closure remains in code generation"; | 431 | L.EClosure _ => (ErrorMsg.errorAt loc "Nested closure remains in code generation"; |
432 (dummye, sm)) | 432 (dummye, sm)) |
433 | 433 |
434 | L.EQuery {exps, tables, state, query, body, initial} => | 434 | L.EQuery {exps, tables, state, query, body, initial, sqlcacheInfo} => |
435 let | 435 let |
436 val (exps', sm) = ListUtil.foldlMap (fn ((x, t), sm) => | 436 val (exps', sm) = ListUtil.foldlMap (fn ((x, t), sm) => |
437 let | 437 let |
438 val (t, sm) = cifyTyp (t, sm) | 438 val (t, sm) = cifyTyp (t, sm) |
439 in | 439 in |
584 end | 584 end |
585 | L.DValRec vis => | 585 | L.DValRec vis => |
586 let | 586 let |
587 val (vis, sm) = ListUtil.foldlMap | 587 val (vis, sm) = ListUtil.foldlMap |
588 (fn ((x, n, t, e, _), sm) => | 588 (fn ((x, n, t, e, _), sm) => |
589 let | 589 let |
590 val (t, sm) = cifyTyp (t, sm) | 590 val (t, sm) = cifyTyp (t, sm) |
591 | 591 |
592 fun unravel (tAll as (t, _), eAll as (e, _)) = | 592 fun unravel (tAll as (t, _), eAll as (e, _)) = |
593 case (t, e) of | 593 case (t, e) of |
594 (L'.TFun (dom, ran), L.EAbs (ax, _, _, e)) => | 594 (L'.TFun (dom, ran), L.EAbs (ax, _, _, e)) => |
599 end | 599 end |
600 | (L'.TFun _, _) => | 600 | (L'.TFun _, _) => |
601 (ErrorMsg.errorAt loc "Function isn't explicit at code generation"; | 601 (ErrorMsg.errorAt loc "Function isn't explicit at code generation"; |
602 ([], tAll, eAll)) | 602 ([], tAll, eAll)) |
603 | _ => ([], tAll, eAll) | 603 | _ => ([], tAll, eAll) |
604 | 604 |
605 val (args, ran, e) = unravel (t, e) | 605 val (args, ran, e) = unravel (t, e) |
606 val (e, sm) = cifyExp (e, sm) | 606 val (e, sm) = cifyExp (e, sm) |
607 in | 607 in |
608 ((x, n, args, ran, e), sm) | 608 ((x, n, args, ran, e), sm) |
609 end) | 609 end) |
610 sm vis | 610 sm vis |
611 in | 611 in |
612 (SOME (L'.DFunRec vis, loc), NONE, sm) | 612 (SOME (L'.DFunRec vis, loc), NONE, sm) |
613 end | 613 end |
614 | 614 |
615 | L.DExport (ek, s, n, ts, t, b) => | 615 | L.DExport (ek, s, n, ts, t, b) => |
616 let | 616 let |
617 val (ts, sm) = ListUtil.foldlMap cifyTyp sm ts | 617 val (ts, sm) = ListUtil.foldlMap cifyTyp sm ts |
618 val (t, sm) = cifyTyp (t, sm) | 618 val (t, sm) = cifyTyp (t, sm) |