diff options
Diffstat (limited to 'new-luxc/source/luxc/lang')
-rw-r--r-- | new-luxc/source/luxc/lang/analysis/common.lux | 5 | ||||
-rw-r--r-- | new-luxc/source/luxc/lang/translation.lux | 39 |
2 files changed, 4 insertions, 40 deletions
diff --git a/new-luxc/source/luxc/lang/analysis/common.lux b/new-luxc/source/luxc/lang/analysis/common.lux index 5e618d64c..2f3e3a37d 100644 --- a/new-luxc/source/luxc/lang/analysis/common.lux +++ b/new-luxc/source/luxc/lang/analysis/common.lux @@ -15,8 +15,9 @@ (do meta;Monad<Meta> [[_ varT] (&;with-type-env tc;var) analysis (&;with-expected-type varT - action)] - (wrap [varT analysis]))) + action) + knownT (&;with-type-env (tc;clean varT))] + (wrap [knownT analysis]))) (exception: #export Variant-Tag-Out-Of-Bounds) diff --git a/new-luxc/source/luxc/lang/translation.lux b/new-luxc/source/luxc/lang/translation.lux index 85eed9ba1..e573aa3ae 100644 --- a/new-luxc/source/luxc/lang/translation.lux +++ b/new-luxc/source/luxc/lang/translation.lux @@ -37,43 +37,6 @@ (exception: #export Macro-Expansion-Failed) (exception: #export Unrecognized-Statement) -(def: (clean inputT) - (-> Type (tc;Check Type)) - (case inputT - (#;Primitive name paramsT+) - (do tc;Monad<Check> - [paramsT+' (monad;map @ clean paramsT+)] - (wrap (#;Primitive name paramsT+'))) - - (^or #;Void #;Unit (#;Bound _) (#;Ex _) (#;Named _)) - (:: tc;Monad<Check> wrap inputT) - - (^template [<tag>] - (<tag> leftT rightT) - (do tc;Monad<Check> - [leftT' (clean leftT) - rightT' (clean rightT)] - (wrap (<tag> leftT' rightT')))) - ([#;Sum] [#;Product] [#;Function] [#;Apply]) - - (#;Var id) - (do tc;Monad<Check> - [?actualT (tc;read id)] - (case ?actualT - (#;Some actualT) - (clean actualT) - - _ - (wrap inputT))) - - (^template [<tag>] - (<tag> envT+ unquantifiedT) - (do tc;Monad<Check> - [envT+' (monad;map @ clean envT+)] - (wrap (<tag> envT+' unquantifiedT)))) - ([#;UnivQ] [#;ExQ]) - )) - (def: (process-annotations annsC) (-> Code (Meta [$;Inst Code])) (do meta;Monad<Meta> @@ -101,7 +64,7 @@ (commonA;with-unknown-type (analyse valueC)))) valueT (&;with-type-env - (clean valueT)) + (tc;clean valueT)) valueI (expressionT;translate (expressionS;synthesize valueA)) _ (&;with-scope (statementT;translate-def def-name valueT valueI annsI annsV))] |