diff options
Diffstat (limited to 'new-luxc')
-rw-r--r-- | new-luxc/test/test/luxc/lang/analysis/type.lux | 93 |
1 files changed, 0 insertions, 93 deletions
diff --git a/new-luxc/test/test/luxc/lang/analysis/type.lux b/new-luxc/test/test/luxc/lang/analysis/type.lux deleted file mode 100644 index dc1a0fea9..000000000 --- a/new-luxc/test/test/luxc/lang/analysis/type.lux +++ /dev/null @@ -1,93 +0,0 @@ -(.module: - lux - (lux [io] - (control [monad #+ do] - pipe) - (data [bit "bit/" Eq<Bit>] - [text "text/" Eq<Text>] - (text format - ["l" lexer]) - [number] - ["e" error] - [product] - (coll [list "list/" Functor<List> Fold<List>])) - ["r" math/random "r/" Monad<Random>] - [macro #+ Monad<Meta>] - (macro [code]) - (lang [type "type/" Eq<Type>]) - test) - (luxc ["&" lang] - (lang ["&." module] - ["~" analysis] - (analysis [".A" expression] - ["@" type] - ["@." common]) - (translation (jvm ["@." runtime])) - [eval])) - (// common) - (test/luxc common)) - -(def: check - (r.Random [Code Type Code]) - (with-expansions [<triples> (template [<random> <type> <code>] - [(do r.Monad<Random> - [value <random>] - (wrap [(` <type>) - <type> - (<code> value)]))] - - [r.bit (+0 "#Bit" (+0)) code.bit] - [r.nat (+0 "#Nat" (+0)) code.nat] - [r.int (+0 "#Int" (+0)) code.int] - [r.rev (+0 "#Rev" (+0)) code.rev] - [r.frac (+0 "#Frac" (+0)) code.frac] - [(r.text +5) (+0 "#Text" (+0)) code.text] - )] - ($_ r.either - <triples>))) - -(context: "Type checking/coercion." - (<| (times +100) - (do @ - [[typeC codeT exprC] check] - ($_ seq - (test (format "Can analyse type-checking.") - (|> (do Monad<Meta> - [runtime-bytecode @runtime.translate] - (&.with-scope - (@common.with-unknown-type - (@.analyse-check analyse eval.eval typeC exprC)))) - (&.with-current-module "") - (macro.run (io.run init-jvm)) - (case> (#e.Success [_ [analysisT analysisA]]) - (and (type/= codeT analysisT) - (case [exprC analysisA] - (^template [<tag> <test>] - [[_ (<tag> expected)] [_ (<tag> actual)]] - (<test> expected actual)) - ([#.Bit bit/=] - [#.Nat n/=] - [#.Int i/=] - [#.Rev r/=] - [#.Frac f/=] - [#.Text text/=]) - - _ - #0)) - - (#e.Error error) - #0))) - (test (format "Can analyse type-coercion.") - (|> (do Monad<Meta> - [runtime-bytecode @runtime.translate] - (&.with-scope - (@common.with-unknown-type - (@.analyse-coerce analyse eval.eval typeC exprC)))) - (&.with-current-module "") - (macro.run (io.run init-jvm)) - (case> (#e.Success [_ [analysisT analysisA]]) - (type/= codeT analysisT) - - (#e.Error error) - #0))) - )))) |