diff options
Diffstat (limited to 'new-luxc/source/luxc/lang/translation/jvm/structure.lux')
-rw-r--r-- | new-luxc/source/luxc/lang/translation/jvm/structure.lux | 79 |
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)])))))) |