aboutsummaryrefslogtreecommitdiff
path: root/new-luxc/source/luxc/generator/structure.jvm.lux
diff options
context:
space:
mode:
authorEduardo Julian2017-11-01 00:51:45 -0400
committerEduardo Julian2017-11-01 00:51:45 -0400
commit012f6bd41e527479dddbccbdab10daa78fd9a0fd (patch)
tree621f344a09acd52736f343d94582b3f1a2f0c5f9 /new-luxc/source/luxc/generator/structure.jvm.lux
parent71d7a4c7206155e09f3e1e1d8699561ea6967382 (diff)
- Re-organized code-generation, and re-named it "translation".
Diffstat (limited to 'new-luxc/source/luxc/generator/structure.jvm.lux')
-rw-r--r--new-luxc/source/luxc/generator/structure.jvm.lux59
1 files changed, 0 insertions, 59 deletions
diff --git a/new-luxc/source/luxc/generator/structure.jvm.lux b/new-luxc/source/luxc/generator/structure.jvm.lux
deleted file mode 100644
index 96d5767c6..000000000
--- a/new-luxc/source/luxc/generator/structure.jvm.lux
+++ /dev/null
@@ -1,59 +0,0 @@
-(;module:
- lux
- (lux (control [monad #+ do])
- (data text/format
- (coll [list]))
- [meta]
- [host #+ do-to])
- (luxc ["&" base]
- [";L" host]
- (host ["$" jvm]
- (jvm ["$t" type]
- ["$d" def]
- ["$i" inst]))
- (lang ["la" analysis]
- ["ls" synthesis])
- (generator ["&;" common]))
- [../runtime])
-
-(def: $Object $;Type ($t;class "java.lang.Object" (list)))
-
-(def: #export (generate-tuple generate members)
- (-> (-> ls;Synthesis (Meta $;Inst)) (List ls;Synthesis) (Meta $;Inst))
- (do meta;Monad<Meta>
- [#let [size (list;size members)]
- _ (&;assert "Cannot generate tuples with less than 2 elements."
- (n.>= +2 size))
- membersI (|> members
- list;enumerate
- (monad;map @ (function [[idx member]]
- (do @
- [memberI (generate member)]
- (wrap (|>. $i;DUP
- ($i;int (nat-to-int idx))
- memberI
- $i;AASTORE)))))
- (:: @ map $i;fuse))]
- (wrap (|>. ($i;int (nat-to-int size))
- ($i;array $Object)
- membersI))))
-
-(def: (flagI tail?)
- (-> Bool $;Inst)
- (if tail?
- ($i;string "")
- $i;NULL))
-
-(def: #export (generate-variant generate tag tail? member)
- (-> (-> ls;Synthesis (Meta $;Inst)) Nat Bool ls;Synthesis (Meta $;Inst))
- (do meta;Monad<Meta>
- [memberI (generate member)]
- (wrap (|>. ($i;int (nat-to-int tag))
- (flagI tail?)
- memberI
- ($i;INVOKESTATIC hostL;runtime-class
- "variant_make"
- ($t;method (list $t;int $Object $Object)
- (#;Some ($t;array +1 $Object))
- (list))
- false)))))