aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/library/lux/target/jvm/class.lux
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--stdlib/source/library/lux/target/jvm/class.lux87
1 files changed, 45 insertions, 42 deletions
diff --git a/stdlib/source/library/lux/target/jvm/class.lux b/stdlib/source/library/lux/target/jvm/class.lux
index 1ba0ae62d..7a342dd54 100644
--- a/stdlib/source/library/lux/target/jvm/class.lux
+++ b/stdlib/source/library/lux/target/jvm/class.lux
@@ -1,31 +1,33 @@
(.using
- [library
- [lux {"-" public private}
- [abstract
- [equivalence {"+" Equivalence}]
- ["[0]" monad {"+" do}]]
- [control
- ["[0]" state]
- ["[0]" try {"+" Try}]]
- [data
- ["[0]" product]
- [format
- ["[0]F" binary {"+" Writer} ("[1]#[0]" monoid)]]
- [collection
- ["[0]" sequence {"+" Sequence}]]]]]
- ["[0]" // "_"
- ["[1][0]" modifier {"+" Modifier modifiers:}]
- ["[1][0]" version {"+" Version Minor Major}]
- ["[1][0]" magic {"+" Magic}]
- ["[1][0]" index {"+" Index}]
- ["[1][0]" attribute {"+" Attribute}]
- ["[1][0]" field {"+" Field}]
- ["[1][0]" method {"+" Method}]
- [encoding
- ["[1][0]" unsigned]
- ["[1][0]" name {"+" Internal}]]
- ["[1][0]" constant {"+" Constant}
- ["[1]/[0]" pool {"+" Pool Resource}]]])
+ [library
+ [lux {"-" Type public private}
+ [abstract
+ [equivalence {"+" Equivalence}]
+ ["[0]" monad {"+" do}]]
+ [control
+ ["[0]" state]
+ ["[0]" try {"+" Try}]]
+ [data
+ ["[0]" product]
+ [format
+ ["[0]F" binary {"+" Writer} ("[1]#[0]" monoid)]]
+ [collection
+ ["[0]" sequence {"+" Sequence}]]]]]
+ ["[0]" // "_"
+ ["[1][0]" modifier {"+" Modifier modifiers:}]
+ ["[1][0]" version {"+" Version Minor Major}]
+ ["[1][0]" magic {"+" Magic}]
+ ["[1][0]" index {"+" Index}]
+ ["[1][0]" attribute {"+" Attribute}]
+ ["[1][0]" field {"+" Field}]
+ ["[1][0]" method {"+" Method}]
+ [encoding
+ ["[1][0]" unsigned]
+ ["[1][0]" name {"+" Internal}]]
+ ["[1][0]" type {"+" Type}
+ [category {"+" Declaration}]]
+ ["[1][0]" constant {"+" Constant}
+ ["[2][0]" pool {"+" Pool Resource}]]])
(type: .public Class
(Rec Class
@@ -59,7 +61,7 @@
//unsigned.equivalence
//unsigned.equivalence
//unsigned.equivalence
- //constant/pool.equivalence
+ //pool.equivalence
//modifier.equivalence
//index.equivalence
//index.equivalence
@@ -71,35 +73,36 @@
(def: (install_classes this super interfaces)
(-> Internal Internal (List Internal)
(Resource [(Index //constant.Class) (Index //constant.Class) (Sequence (Index //constant.Class))]))
- (do [! //constant/pool.monad]
- [@this (//constant/pool.class this)
- @super (//constant/pool.class super)
+ (do [! //pool.monad]
+ [@this (//pool.class this)
+ @super (//pool.class super)
@interfaces (: (Resource (Sequence (Index //constant.Class)))
(monad.mix ! (function (_ interface @interfaces)
(do !
- [@interface (//constant/pool.class interface)]
+ [@interface (//pool.class interface)]
(in (sequence.suffix @interface @interfaces))))
sequence.empty
interfaces))]
(in [@this @super @interfaces])))
(def: .public (class version modifier
- this super interfaces
+ this type super interfaces
fields methods attributes)
(-> Major (Modifier Class)
- Internal Internal (List Internal)
+ Internal (Type Declaration) Internal (List Internal)
(List (Resource Field))
(List (Resource Method))
(Sequence Attribute)
(Try Class))
(do try.monad
- [[pool [@this @super @interfaces] =fields =methods]
- (<| (state.result' //constant/pool.empty)
- (do //constant/pool.monad
+ [[pool [@this @super @interfaces] =fields =methods @signature]
+ (<| (state.result' //pool.empty)
+ (do [! //pool.monad]
[classes (install_classes this super interfaces)
- =fields (monad.all //constant/pool.monad fields)
- =methods (monad.all //constant/pool.monad methods)]
- (in [classes =fields =methods])))]
+ =fields (monad.all ! fields)
+ =methods (monad.all ! methods)
+ @signature (//attribute.signature type)]
+ (in [classes =fields =methods @signature])))]
(in [#magic //magic.code
#minor_version //version.default_minor
#major_version version
@@ -110,7 +113,7 @@
#interfaces @interfaces
#fields (sequence.of_list =fields)
#methods (sequence.of_list =methods)
- #attributes attributes])))
+ #attributes (sequence.suffix @signature attributes)])))
(def: .public (writer class)
(Writer Class)
@@ -121,7 +124,7 @@
[//magic.writer #magic]
[//version.writer #minor_version]
[//version.writer #major_version]
- [//constant/pool.writer #constant_pool]
+ [//pool.writer #constant_pool]
[//modifier.writer #modifier]
[//index.writer #this]
[//index.writer #super]))