@@ -1,5 +1,7 @@
1+{-# OPTIONS_GHC -Wall #-}
2+{-# LANGUAGE OverloadedStrings #-}
13module AST.Module
2− ( Header(..), Module(..)
4+ ( Header(..), defaultHeader, Module(..)
35
46 , Source, SourceInfo(..), SourceTag(..), SourceSettings, emptySettings
57 , Valid, ValidInfo(..)
@@ -17,6 +19,7 @@ module AST.Module
1719
1820import Data.Binary
1921import qualified Data.Map as Map
22+import Data.Text (Text)
2023
2124import qualified AST.Declaration as Decl
2225import qualified AST.Effects as Effects
@@ -43,11 +46,21 @@ data Header imports =
4346 , _name :: Name.Raw
4447 , _exports :: Var.Listing (A.Located Var.Value)
4548 , _settings :: SourceSettings
46− , _docs :: A.Located (Maybe String)
49+ , _docs :: Maybe (A.Located Text)
4750 , _imports :: imports
4851 }
4952
5053
54+instance Show (Header a) where
55+ show header =
56+ show (_name header)
57+
58+
59+defaultHeader :: imports -> Header imports
60+defaultHeader imports_ =
61+ Header Normal "Main" Var.openListing emptySettings Nothing imports_
62+
63+
5164
5265-- MODULES
5366
@@ -68,7 +81,7 @@ data SourceInfo =
6881 Source
6982 { srcTag :: SourceTag
7083 , srcSettings :: SourceSettings
71− , srcDocs :: A.Located (Maybe String)
84+ , srcDocs :: Maybe (A.Located Text)
7285 , srcExports :: Var.Listing (A.Located Var.Value)
7386 , srcImports :: [UserImport]
7487 , srcDecls :: [Decl.Source]
@@ -82,7 +95,7 @@ data SourceTag
8295
8396
8497type SourceSettings =
85− A.Located [(A.Located String, A.Located String)]
98+ A.Located [(A.Located Text, A.Located Text)]
8699
87100
88101emptySettings :: SourceSettings
@@ -96,7 +109,7 @@ type Valid =
96109
97110data ValidInfo =
98111 Valid
99− { validDocs :: A.Located (Maybe String)
112+ { validDocs :: Maybe (A.Located Text)
100113 , validExports :: Var.Listing (A.Located Var.Value)
101114 , validImports :: ([DefaultImport], [UserImport])
102115 , validDecls :: Decl.Valid
@@ -124,7 +137,7 @@ type DefaultImport = (Name.Raw, ImportMethod)
124137
125138data ImportMethod =
126139 ImportMethod
127− { alias :: Maybe String
140+ { alias :: Maybe Text
128141 , exposedVars :: !(Var.Listing Var.Value)
129142 }
130143
@@ -135,7 +148,7 @@ data ImportMethod =
135148
136149data Info program =
137150 Info
138− { docs :: A.Located (Maybe Docs.Centralized)
151+ { docs :: Maybe (A.Located Docs.Centralized)
139152 , exports :: [Var.Value]
140153 , imports :: [Name.Raw]
141154 , program :: program
@@ -148,19 +161,19 @@ data Info program =
148161
149162
150163type Types =
151− Map.Map String Type.Canonical
164+ Map.Map Text Type.Canonical
152165
153166
154167type Aliases =
155− Map.Map String ([String], Type.Canonical)
168+ Map.Map Text ([Text], Type.Canonical)
156169
157170
158171type Unions =
159− Map.Map String (UnionInfo String)
172+ Map.Map Text (UnionInfo Text)
160173
161174
162175type UnionInfo v =
163− ( [String], [(v, [Type.Canonical])] )
176+ ( [Text], [(v, [Type.Canonical])] )
164177
165178
166179type CanonicalUnion =