@@ -1,5 +1,7 @@
1+{-# OPTIONS_GHC -Wall #-}
2+{-# LANGUAGE OverloadedStrings #-}
1module AST.Module
3module AST.Module
2− ( Header(..), Module(..)
4+ ( Header(..), defaultHeader, Module(..)
4 , Source, SourceInfo(..), SourceTag(..), SourceSettings, emptySettings
6 , Source, SourceInfo(..), SourceTag(..), SourceSettings, emptySettings
5 , Valid, ValidInfo(..)
7 , Valid, ValidInfo(..)
@@ -17,6 +19,7 @@ module AST.Module
18import Data.Binary
20import Data.Binary
19import qualified Data.Map as Map
21import qualified Data.Map as Map
22+import Data.Text (Text)
21import qualified AST.Declaration as Decl
24import qualified AST.Declaration as Decl
22import qualified AST.Effects as Effects
25import qualified AST.Effects as Effects
@@ -43,11 +46,21 @@ data Header imports =
43 , _name :: Name.Raw
46 , _name :: Name.Raw
44 , _exports :: Var.Listing (A.Located Var.Value)
47 , _exports :: Var.Listing (A.Located Var.Value)
45 , _settings :: SourceSettings
48 , _settings :: SourceSettings
46− , _docs :: A.Located (Maybe String)
49+ , _docs :: Maybe (A.Located Text)
47 , _imports :: imports
50 , _imports :: imports
54+instance Show (Header a) where
59+defaultHeader :: imports -> Header imports
60+defaultHeader imports_ =
61+ Header Normal "Main" Var.openListing emptySettings Nothing imports_
@@ -68,7 +81,7 @@ data SourceInfo =
69 { srcTag :: SourceTag
82 { srcTag :: SourceTag
70 , srcSettings :: SourceSettings
83 , srcSettings :: SourceSettings
71− , srcDocs :: A.Located (Maybe String)
84+ , srcDocs :: Maybe (A.Located Text)
72 , srcExports :: Var.Listing (A.Located Var.Value)
85 , srcExports :: Var.Listing (A.Located Var.Value)
73 , srcImports :: [UserImport]
86 , srcImports :: [UserImport]
74 , srcDecls :: [Decl.Source]
87 , srcDecls :: [Decl.Source]
@@ -82,7 +95,7 @@ data SourceTag
84type SourceSettings =
97type SourceSettings =
85− A.Located [(A.Located String, A.Located String)]
98+ A.Located [(A.Located Text, A.Located Text)]
88emptySettings :: SourceSettings
101emptySettings :: SourceSettings
@@ -96,7 +109,7 @@ type Valid =
97data ValidInfo =
110data ValidInfo =
99− { validDocs :: A.Located (Maybe String)
112+ { validDocs :: Maybe (A.Located Text)
100 , validExports :: Var.Listing (A.Located Var.Value)
113 , validExports :: Var.Listing (A.Located Var.Value)
101 , validImports :: ([DefaultImport], [UserImport])
114 , validImports :: ([DefaultImport], [UserImport])
102 , validDecls :: Decl.Valid
115 , validDecls :: Decl.Valid
@@ -124,7 +137,7 @@ type DefaultImport = (Name.Raw, ImportMethod)
125data ImportMethod =
138data ImportMethod =
126 ImportMethod
139 ImportMethod
127− { alias :: Maybe String
140+ { alias :: Maybe Text
128 , exposedVars :: !(Var.Listing Var.Value)
141 , exposedVars :: !(Var.Listing Var.Value)
@@ -135,7 +148,7 @@ data ImportMethod =
136data Info program =
149data Info program =
138− { docs :: A.Located (Maybe Docs.Centralized)
151+ { docs :: Maybe (A.Located Docs.Centralized)
139 , exports :: [Var.Value]
152 , exports :: [Var.Value]
140 , imports :: [Name.Raw]
153 , imports :: [Name.Raw]
141 , program :: program
154 , program :: program
@@ -148,19 +161,19 @@ data Info program =
150type Types =
163type Types =
151− Map.Map String Type.Canonical
164+ Map.Map Text Type.Canonical
154type Aliases =
167type Aliases =
155− Map.Map String ([String], Type.Canonical)
168+ Map.Map Text ([Text], Type.Canonical)
158type Unions =
171type Unions =
159− Map.Map String (UnionInfo String)
172+ Map.Map Text (UnionInfo Text)
162type UnionInfo v =
175type UnionInfo v =
163− ( [String], [(v, [Type.Canonical])] )
176+ ( [Text], [(v, [Type.Canonical])] )
166type CanonicalUnion =
179type CanonicalUnion =