aboutsummaryrefslogtreecommitdiff
path: root/new-luxc/source/luxc/generator/host/jvm/type.lux
diff options
context:
space:
mode:
authorEduardo Julian2017-10-31 19:09:47 -0400
committerEduardo Julian2017-10-31 19:09:47 -0400
commit6c753288a89eadb3f7d70a8844e466c48c809051 (patch)
treefb2837b32df793a66f5d93cf5de34296e8dbabcb /new-luxc/source/luxc/generator/host/jvm/type.lux
parentf4ca44d9e155da79632415dbbf9c4ca9eb210f56 (diff)
- Moved the "host" directory from under "generator" to under "luxc".
Diffstat (limited to 'new-luxc/source/luxc/generator/host/jvm/type.lux')
-rw-r--r--new-luxc/source/luxc/generator/host/jvm/type.lux138
1 files changed, 0 insertions, 138 deletions
diff --git a/new-luxc/source/luxc/generator/host/jvm/type.lux b/new-luxc/source/luxc/generator/host/jvm/type.lux
deleted file mode 100644
index 3825d443b..000000000
--- a/new-luxc/source/luxc/generator/host/jvm/type.lux
+++ /dev/null
@@ -1,138 +0,0 @@
-(;module:
- [lux #- char]
- (lux (data [text]
- text/format
- (coll [list "L/" Functor<List>])))
- ["$" ..])
-
-## Types
-(do-template [<name> <primitive>]
- [(def: #export <name> $;Type (#$;Primitive <primitive>))]
-
- [boolean #$;Boolean]
- [byte #$;Byte]
- [short #$;Short]
- [int #$;Int]
- [long #$;Long]
- [float #$;Float]
- [double #$;Double]
- [char #$;Char]
- )
-
-(def: #export (class name params)
- (-> Text (List $;Generic) $;Type)
- (#$;Generic (#$;Class name params)))
-
-(def: #export (var name)
- (-> Text $;Type)
- (#$;Generic (#$;Var name)))
-
-(def: #export (wildcard bound)
- (-> (Maybe [$;Bound $;Generic]) $;Type)
- (#$;Generic (#$;Wildcard bound)))
-
-(def: #export (array depth elemT)
- (-> Nat $;Type $;Type)
- (case depth
- +0 elemT
- _ (#$;Array (array (n.dec depth) elemT))))
-
-(def: #export (binary-name class)
- (-> Text Text)
- (text;replace-all "." "/" class))
-
-(def: #export (descriptor type)
- (-> $;Type Text)
- (case type
- (#$;Primitive prim)
- (case prim
- #$;Boolean "Z"
- #$;Byte "B"
- #$;Short "S"
- #$;Int "I"
- #$;Long "J"
- #$;Float "F"
- #$;Double "D"
- #$;Char "C")
-
- (#$;Array sub)
- (format "[" (descriptor sub))
-
- (#$;Generic generic)
- (case generic
- (#$;Class class params)
- (format "L" (binary-name class) ";")
-
- (^or (#$;Var name) (#$;Wildcard ?bound))
- (descriptor (#$;Generic (#$;Class "java.lang.Object" (list)))))
- ))
-
-(def: #export (signature type)
- (-> $;Type Text)
- (case type
- (#$;Primitive prim)
- (case prim
- #$;Boolean "Z"
- #$;Byte "B"
- #$;Short "S"
- #$;Int "I"
- #$;Long "J"
- #$;Float "F"
- #$;Double "D"
- #$;Char "C")
-
- (#$;Array sub)
- (format "[" (signature sub))
-
- (#$;Generic generic)
- (case generic
- (#$;Class class params)
- (let [=params (if (list;empty? params)
- ""
- (format "<"
- (|> params
- (L/map (|>. #$;Generic signature))
- (text;join-with ""))
- ">"))]
- (format "L" (binary-name class) =params ";"))
-
- (#$;Var name)
- (format "T" name ";")
-
- (#$;Wildcard #;None)
- "*"
-
- (^template [<tag> <prefix>]
- (#$;Wildcard (#;Some [<tag> bound]))
- (format <prefix> (signature (#$;Generic bound))))
- ([#$;Upper "+"]
- [#$;Lower "-"]))
- ))
-
-## Methods
-(def: #export (method args return exceptions)
- (-> (List $;Type) (Maybe $;Type) (List $;Generic) $;Method)
- {#$;args args #$;return return #$;exceptions exceptions})
-
-(def: #export (method-descriptor method)
- (-> $;Method Text)
- (format "(" (text;join-with "" (L/map descriptor (get@ #$;args method))) ")"
- (case (get@ #$;return method)
- #;None
- "V"
-
- (#;Some return)
- (descriptor return))))
-
-(def: #export (method-signature method)
- (-> $;Method Text)
- (format "(" (|> (get@ #$;args method) (L/map signature) (text;join-with "")) ")"
- (case (get@ #$;return method)
- #;None
- "V"
-
- (#;Some return)
- (signature return))
- (|> (get@ #$;exceptions method)
- (L/map (|>. #$;Generic signature (format "^")))
- (text;join-with ""))))