aboutsummaryrefslogtreecommitdiff
path: root/new-luxc/source/luxc/lang/init.lux
blob: da8fc9c078878a227f5b980dfec0486396758303 (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
(.module:
  lux
  [//]
  (// [".L" extension]
      (extension [".E" analysis]
                 [".E" synthesis]
                 [".E" translation]
                 [".E" statement])
      (translation (jvm [".T" common]))))

(def: #export (cursor file)
  (-> Text Cursor)
  [file +1 +0])

(def: #export (source file code)
  (-> Text Text Source)
  [(cursor file) +0 code])

(def: dummy-source
  Source
  [.dummy-cursor +0 ""])

(def: #export type-context
  Type-Context
  {#.ex-counter +0
   #.var-counter +0
   #.var-bindings (list)})

(def: #export info
  Info
  {#.target  (for {"JVM" "JVM"
                   "JS" "JS"})
   #.version //.version
   #.mode    #.Build})

(def: #export (compiler host)
  (-> Top Lux)
  {#.info            ..info
   #.source          dummy-source
   #.cursor          .dummy-cursor
   #.current-module  #.None
   #.modules         (list)
   #.scopes          (list)
   #.type-context    ..type-context
   #.expected        #.None
   #.seed            +0
   #.scope-type-vars (list)
   #.extensions      (:! Bottom
                         {#extensionL.analysis analysisE.defaults
                          #extensionL.synthesis synthesisE.defaults
                          #extensionL.translation translationE.defaults
                          #extensionL.statement statementE.defaults})
   #.host            (:! Bottom host)})