aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/library/lux/meta/target/jvm/type/category.lux
blob: 9dfe3344ced9bad7386bf3e68d7c590b8a1cf246 (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
(.require
 [library
  [lux (.except Primitive Declaration)
   [meta
    [macro
     ["[0]" template]]
    [type
     ["[0]" primitive (.except def)]]]]])

(primitive.def Void' Any)
(primitive.def .public (Value' kind) Any)
(primitive.def .public (Return' kind) Any)
(primitive.def .public Method Any)

(type .public Return (<| Return' Any))
(type .public Value (<| Return' Value' Any))
(type .public Void (<| Return' Void'))

(primitive.def (Object' brand) Any)
(type .public Object (<| Return' Value' Object' Any))

(primitive.def (Parameter' brand) Any)
(type .public Parameter (<| Return' Value' Object' Parameter' Any))

(with_template [<parents> <child>]
  [(with_expansions [<raw> (template.symbol [<child> "'"])]
     (primitive.def <raw> Any)
     (type .public <child>
       (`` (<| Return' Value' (,, (template.spliced <parents>)) <raw>))))]

  [[] Primitive]
  [[Object' Parameter'] Var]
  [[Object' Parameter'] Class]
  [[Object' Parameter'] Array]
  )

(primitive.def .public Declaration Any)
(primitive.def .public Inheritance Any)