aboutsummaryrefslogtreecommitdiff
path: root/new-luxc/source/luxc/generator/host/jvm.lux
blob: f1eb61166b1ed62fc2059bc2221ef7914ab27eb2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
(;module:
  [lux #- Type Def]
  (lux [host #+ jvm-import]))

## [Host]
(jvm-import org.objectweb.asm.MethodVisitor)

(jvm-import org.objectweb.asm.ClassWriter)

## [Type]
(type: #export Bound
  #Upper
  #Lower)

(type: #export Primitive
  #Boolean
  #Byte
  #Short
  #Int
  #Long
  #Float
  #Double
  #Char)

(type: #export #rec Generic
  (#Var Text)
  (#Wildcard (Maybe [Bound Generic]))
  (#Class Text (List Generic)))

(type: #export #rec Type
  (#Primitive Primitive)
  (#Generic Generic)
  (#Array Type))

(type: #export Method
  {#args (List Type)
   #return (Maybe Type)
   #exceptions (List Generic)})

(type: #export Def
  (-> ClassWriter ClassWriter))

(type: #export Inst
  (-> MethodVisitor MethodVisitor))

(type: #export Visibility
  #Public
  #Protected
  #Private
  #Default)

(type: #export Method-Config
  {#staticM Bool
   #finalM Bool
   #synchronizedM Bool})

(type: #export Field-Config
  {#staticF Bool
   #finalF Bool
   #transientF Bool
   #volatileF Bool})