aboutsummaryrefslogtreecommitdiff
path: root/new-luxc/source/luxc/lang/translation/jvm/structure.lux
diff options
context:
space:
mode:
Diffstat (limited to 'new-luxc/source/luxc/lang/translation/jvm/structure.lux')
-rw-r--r--new-luxc/source/luxc/lang/translation/jvm/structure.lux79
1 files changed, 0 insertions, 79 deletions
diff --git a/new-luxc/source/luxc/lang/translation/jvm/structure.lux b/new-luxc/source/luxc/lang/translation/jvm/structure.lux
deleted file mode 100644
index 46f87142a..000000000
--- a/new-luxc/source/luxc/lang/translation/jvm/structure.lux
+++ /dev/null
@@ -1,79 +0,0 @@
-(.module:
- [lux (#- Type)
- [abstract
- ["." monad (#+ do)]]
- [control
- ["ex" exception (#+ exception:)]]
- [data
- [number
- ["n" nat]]
- [text
- ["%" format (#+ format)]]
- [collection
- ["." list]]]
- [target
- [jvm
- ["." type (#+ Type)
- ["." category (#+ Void Value Return Primitive Object Class Array Var Parameter Method)]
- ["." descriptor (#+ Descriptor)]
- ["." signature (#+ Signature)]]]]
- [tool
- [compiler
- ["." phase]
- [meta
- [archive (#+ Archive)]]
- [language
- [lux
- [synthesis (#+ Synthesis)]]]]]]
- [luxc
- [lang
- [host
- [jvm (#+ Inst Operation Phase Generator)
- ["_" inst]]]]]
- ["." //
- ["#." runtime]])
-
-(exception: #export (not-a-tuple {size Nat})
- (ex.report ["Expected size" ">= 2"]
- ["Actual size" (%.nat size)]))
-
-(def: #export (tuple generate archive members)
- (Generator (List Synthesis))
- (do {@ phase.monad}
- [#let [size (list.size members)]
- _ (phase.assert not-a-tuple size
- (n.>= 2 size))
- membersI (|> members
- list.enumerate
- (monad.map @ (function (_ [idx member])
- (do @
- [memberI (generate archive member)]
- (wrap (|>> _.DUP
- (_.int (.int idx))
- memberI
- _.AASTORE)))))
- (:: @ map _.fuse))]
- (wrap (|>> (_.int (.int size))
- (_.array //runtime.$Value)
- membersI))))
-
-(def: (flagI right?)
- (-> Bit Inst)
- (if right?
- (_.string "")
- _.NULL))
-
-(def: #export (variant generate archive [lefts right? member])
- (Generator [Nat Bit Synthesis])
- (do phase.monad
- [memberI (generate archive member)]
- (wrap (|>> (_.int (.int (if right?
- (.inc lefts)
- lefts)))
- (flagI right?)
- memberI
- (_.INVOKESTATIC //.$Runtime
- "variant_make"
- (type.method [(list //runtime.$Tag //runtime.$Flag //runtime.$Value)
- //.$Variant
- (list)]))))))