aboutsummaryrefslogtreecommitdiff
path: root/new-luxc/test
diff options
context:
space:
mode:
authorEduardo Julian2019-04-27 01:03:52 -0400
committerEduardo Julian2019-04-27 01:03:52 -0400
commitce71205758372cad17e09ac1b4b31dc4cea63528 (patch)
treead382efd1ce4c9b93c237dc915d16aada4a1080e /new-luxc/test
parent5b655f558a0cc78b44736eec8eabeed6216f883f (diff)
Ported tests for type analysis.
Diffstat (limited to 'new-luxc/test')
-rw-r--r--new-luxc/test/test/luxc/lang/analysis/type.lux93
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)))
- ))))