on master help sign in
Get Parse.Kernel compiling again

Mostly updating for changes in the AST code

commit38bfa1b956766f521aa478409453aceb119da22c authorEvan Czaplicki <evancz@users.noreply.github.com> dateWed 25 Oct 2017, 19:35 (9 years ago) parent6aa367f
2 files changed+32−29
src/Parse/Kernel.hs+31−29 src/Parse/Module.hs+1
src/Parse/Kernel.hs+31−29
@@ -14,14 +14,15 @@ import qualified Data.Text as Text
1414import qualified Data.Text.Encoding as Text
1515import Data.Word (Word8)
1616
17−import qualified AST.Exposing as Exposing
17+import qualified AST.Expression.Source as Src
1818import qualified AST.Kernel as Kernel
19−import qualified AST.Module as Module
2019import qualified AST.Module.Name as Module
20+import qualified Elm.Name as N
2121import Generate.JavaScript.Helpers as Help (toFieldName)
2222import Generate.JavaScript.Variable as Var (intToAscii)
2323import Parse.Primitives (Parser)
2424import qualified Parse.Primitives.Kernel as K
25+import qualified Parse.Primitives.Symbol as Symbol
2526import qualified Parse.Module as Module
2627import qualified Reporting.Annotation as A
2728
@@ -33,10 +34,10 @@ import qualified Reporting.Annotation as A
3334parser :: Parser Kernel.Content
3435parser =
3536 do Symbol.jsMultiCommentOpen
36− freshLine
37− rawImports <- chompImports []
37+ Module.freshLine
38+ srcImports <- Module.chompImports []
3839 Symbol.jsMultiCommentClose
39− let imports = Map.unions (map destructImport rawImports)
40+ let imports = Map.unions (map destructImport srcImports)
4041 chunks <- parserHelp imports Map.empty Map.empty []
4142 return (Kernel.Content (Map.elems imports) chunks)
4243
@@ -138,8 +139,8 @@ type Imports =
138139 Map.Map Text (Module.Raw, Text)
139140
140141
141−destructImport :: Import.ByUser -> Imports
142−destructImport (A.A _ ( A.A _ fullName, Module.ImportMethod maybeAlias exposed )) =
142+destructImport :: Src.Import -> Imports
143+destructImport (Src.Import (A.A _ moduleName) maybeAlias exposing) =
143144 let
144145 shortName =
145146 case maybeAlias of
@@ -147,35 +148,36 @@ destructImport (A.A _ ( A.A _ fullName, Module.ImportMethod maybeAlias exposed )
147148 alias
148149
149150 Nothing ->
150− if Module.isKernel fullName then
151− Module.getKernel fullName
152− else if Text.isInfixOf "." fullName then
153− error ("modules with dots in kernel code need an alias: " ++ show fullName)
151+ if Module.isKernel moduleName then
152+ Module.getKernel moduleName
153+ else if Text.isInfixOf "." moduleName then
154+ error ("modules with dots in kernel code need an alias: " ++ show moduleName)
154155 else
155− fullName
156+ moduleName
156157
157− toEntry value =
158− ( shortName <> "_" <> value, ( fullName, value ) )
158+ toEntry name =
159+ ( shortName <> "_" <> name, ( moduleName, name ) )
159160 in
160161 Map.fromList $ map toEntry $
161− concatMap entryToValues $ getExplicits exposed
162+ case exposing of
163+ Src.Open ->
164+ error "cannot have open imports in kernel code"
162165
166+ Src.Explicit exposed ->
167+ map exposedToName exposed
163168
164−getExplicits :: Exposing.Exposing a -> [a]
165−getExplicits exposed =
166− case exposed of
167− Exposing.Open ->
168− error "cannot have open imports in kernel code"
169169
170− Exposing.Explicit entries ->
171− map A.drop entries
170+exposedToName :: A.Located Src.Exposed -> N.Name
171+exposedToName (A.A _ exposed) =
172+ case exposed of
173+ Src.Lower name ->
174+ name
172175
176+ Src.Upper name Src.Private ->
177+ name
173178
174−entryToValues :: Exposing.Entry -> [Text]
175−entryToValues entry =
176− case entry of
177− Exposing.Lower name ->
178− [name]
179+ Src.Upper _ Src.Public ->
180+ error "cannot have Maybe(..) syntax in kernel code header"
179181
180− Exposing.Upper name ctors ->
181− maybe [name] getExplicits ctors
182+ Src.Operator _ ->
183+ error "cannot use binops in kernel code"
src/Parse/Module.hs+1
@@ -3,6 +3,7 @@
33module Parse.Module
44 ( module_
55 , chompImports
6+ , freshLine
67 )
78 where
89