comparison src/corify.sml @ 705:e6706a1df013

Track uniqueness sets in table types
author Adam Chlipala <adamc@hcoop.net>
date Tue, 07 Apr 2009 14:11:32 -0400
parents 70cbdcf5989b
children d8217b4cb617
comparison
equal deleted inserted replaced
704:70cbdcf5989b 705:e6706a1df013
974 (ds, st) 974 (ds, st)
975 end 975 end
976 end 976 end
977 | _ => raise Fail "Non-const signature for 'export'") 977 | _ => raise Fail "Non-const signature for 'export'")
978 978
979 | L.DTable (_, x, n, c, e) => 979 | L.DTable (_, x, n, c, e, cc) =>
980 let 980 let
981 val (st, n) = St.bindVal st x n 981 val (st, n) = St.bindVal st x n
982 val s = relify (doRestify (mods, x)) 982 val s = relify (doRestify (mods, x))
983 in 983 in
984 ([(L'.DTable (x, n, corifyCon st c, s, corifyExp st e), loc)], st) 984 ([(L'.DTable (x, n, corifyCon st c, s, corifyExp st e, corifyCon st cc), loc)], st)
985 end 985 end
986 | L.DSequence (_, x, n) => 986 | L.DSequence (_, x, n) =>
987 let 987 let
988 val (st, n) = St.bindVal st x n 988 val (st, n) = St.bindVal st x n
989 val s = relify (doRestify (mods, x)) 989 val s = relify (doRestify (mods, x))
1050 | L.DValRec vis => foldl (fn ((_, n', _, _), n) => Int.max (n, n)) n vis 1050 | L.DValRec vis => foldl (fn ((_, n', _, _), n) => Int.max (n, n)) n vis
1051 | L.DSgn (_, n', _) => Int.max (n, n') 1051 | L.DSgn (_, n', _) => Int.max (n, n')
1052 | L.DStr (_, n', _, str) => Int.max (n, Int.max (n', maxNameStr str)) 1052 | L.DStr (_, n', _, str) => Int.max (n, Int.max (n', maxNameStr str))
1053 | L.DFfiStr (_, n', _) => Int.max (n, n') 1053 | L.DFfiStr (_, n', _) => Int.max (n, n')
1054 | L.DExport _ => n 1054 | L.DExport _ => n
1055 | L.DTable (_, _, n', _, _) => Int.max (n, n') 1055 | L.DTable (_, _, n', _, _, _) => Int.max (n, n')
1056 | L.DSequence (_, _, n') => Int.max (n, n') 1056 | L.DSequence (_, _, n') => Int.max (n, n')
1057 | L.DDatabase _ => n 1057 | L.DDatabase _ => n
1058 | L.DCookie (_, _, n', _) => Int.max (n, n')) 1058 | L.DCookie (_, _, n', _) => Int.max (n, n'))
1059 0 ds 1059 0 ds
1060 1060