65 |
printE le handle x => (done () handle _ => (); raise x); |
printE le handle x => (done () handle _ => (); raise x); |
66 |
done () |
done () |
67 |
end |
end |
68 |
|
|
69 |
|
(* checking for type errors in various phases. *) |
70 |
fun check (checkE,printE,chkId) (enableChk,lvl,logId) e = |
fun check (checkE,printE,chkId) (enableChk,lvl,logId) e = |
71 |
(if !enableChk andalso checkE (e,lvl) then |
(if !enableChk andalso checkE (e,lvl) then |
72 |
(dumpTerm (printE, "." ^ chkId ^ logId, e); |
(dumpTerm (printE, "." ^ chkId ^ logId, e) |
73 |
bug (chkId ^ " typing errors " ^ logId)) |
(* the following line will cause type errors to halt |
74 |
|
* compilation. i'd rather let it continue. --league |
75 |
|
*) |
76 |
|
(* bug (chkId ^ " typing errors " ^ logId) *) |
77 |
|
) |
78 |
else (); |
else (); |
79 |
e) |
e) |
80 |
val chkLexp = check (CheckLty.checkLty, MCprint.printLexp, "lambda") |
val chkLexp = check (CheckLty.checkLty, MCprint.printLexp, "lambda") |
81 |
val chkFlint = check (ChkFlint.checkTop, PPFlint.printFundec, "FLINT") |
val chkFlint = check (ChkFlint.checkTop, PPFlint.printFundec, "FLINT") |
82 |
|
|
83 |
val _ = (chkFlint (CGC.checkflint1,1,"1") o prFlint "Translation") flint |
val _ = (chkFlint (CGC.checkFlint,1,"1") o prFlint "Translation") flint |
84 |
|
|
85 |
val flint = |
val flint = |
86 |
(chkFlint (CGC.checkflint1,1,"2") o prFlint "Lcontract" o lconLexp) |
(chkFlint (CGC.checkFlint,1,"2") o prFlint "Lcontract" o lconLexp) |
87 |
flint |
flint |
88 |
|
|
89 |
val flint = |
val flint = |
90 |
if !CGC.specialize then |
if !CGC.specialize then |
91 |
(chkFlint (CGC.checkflint1,1,"3") |
(chkFlint (CGC.checkFlint,1,"3") |
92 |
o prFlint "Specialization" o specLexp) flint |
o prFlint "Specialization" o specLexp) flint |
93 |
else flint |
else flint |
94 |
|
|