on master help sign in
Thread the --debug flag through a bit differently
commitb3569f7f3a8263dc3a9081a17b79147f7830edd4 authorEvan Czaplicki <evancz@users.noreply.github.com> dateWed 13 Sep 2017, 08:56 (9 years ago) parent70865f5
5 files changed+30−27
src/AST/Kernel.hs+5−5 src/Elm/Compiler.hs+1−1 src/Generate/JavaScript.hs+18−15 src/Parse/Kernel.hs+2−2 src/Parse/Primitives.hs+4−4
src/AST/Kernel.hs+5−5
@@ -29,7 +29,7 @@ data Chunk
2929 = JS BS.ByteString
3030 | Var ModuleName.Raw Text.Text
3131 | Field Text.Text
32− | Prod Bool
32+ | Debug Bool
3333
3434
3535
@@ -56,10 +56,10 @@ instance Binary Chunk where
5656 Field field ->
5757 putWord8 2 >> put field
5858
59− Prod True ->
59+ Debug True ->
6060 putWord8 3
6161
62− Prod False ->
62+ Debug False ->
6363 putWord8 4
6464
6565 get =
@@ -68,6 +68,6 @@ instance Binary Chunk where
6868 0 -> liftM JS get
6969 1 -> liftM2 Var get get
7070 2 -> liftM Field get
71− 3 -> return (Prod True)
72− 4 -> return (Prod False)
71+ 3 -> return (Debug True)
72+ 4 -> return (Debug False)
7373 _ -> error "problem deserializing Parse.Kernel.Chunk"
src/Elm/Compiler.hs+1−1
@@ -111,7 +111,7 @@ docsGen isExposed (Module.Module name info) =
111111-- CODE GENERATION
112112
113113
114−generate :: Obj.Graph -> Obj.Roots -> BS.Builder
114+generate :: Bool -> Obj.Graph -> Obj.Roots -> BS.Builder
115115generate =
116116 JS.generate
117117
src/Generate/JavaScript.hs+18−15
@@ -28,11 +28,11 @@ import qualified Generate.JavaScript.Variable as JS
2828-- GENERATE JAVASCRIPT
2929
3030
31−generate :: Obj.Graph -> Obj.Roots -> BS.Builder
32−generate graph roots =
31+generate :: Bool -> Obj.Graph -> Obj.Roots -> BS.Builder
32+generate debug graph roots =
3333 let
34− (State builders _ _ effects) =
35− List.foldl' (crawl graph) initialState (Obj.toGlobals roots)
34+ (State builders _ _ effects _) =
35+ List.foldl' (crawl graph) (initialState debug) (Obj.toGlobals roots)
3636
3737 managers =
3838 JS.run (JsEffects.generate effects)
@@ -50,12 +50,13 @@ data State =
5050 , _seenDecls :: Set.Set Var.Global
5151 , _seenKernels :: Set.Set ModuleName.Raw
5252 , _effects :: Map.Map ModuleName.Canonical Effects.ManagerType
53+ , _debug :: Bool
5354 }
5455
5556
56−initialState :: State
57−initialState =
58− State [] Set.empty Set.empty Map.empty
57+initialState :: Bool -> State
58+initialState debug =
59+ State [] Set.empty Set.empty Map.empty debug
5960
6061
6162
@@ -63,7 +64,7 @@ initialState =
6364
6465
6566crawl :: Obj.Graph -> State -> Var.Global -> State
66−crawl graph@(Obj.Graph decls kernels) state@(State _ seenDecls seenKernels _) name@(Var.Global home _) =
67+crawl graph@(Obj.Graph decls kernels) state@(State _ seenDecls seenKernels _ _) name@(Var.Global home _) =
6768 if Set.member name seenDecls then
6869 state
6970
@@ -101,7 +102,7 @@ crawlDecl graph var@(Var.Global home name) (Opt.Decl direct indirect fx body) st
101102 state2 =
102103 state1 { _seenDecls = Set.insert var (_seenDecls state1) }
103104
104− (State builders seenDecls seenKernels effects) =
105+ (State builders seenDecls seenKernels effects debug) =
105106 Set.foldl' (crawl graph) state2 direct
106107
107108 stmt =
@@ -113,6 +114,7 @@ crawlDecl graph var@(Var.Global home name) (Opt.Decl direct indirect fx body) st
113114 , _seenDecls = seenDecls
114115 , _seenKernels = seenKernels
115116 , _effects = maybe id (Map.insert home) fx effects
117+ , _debug = debug
116118 }
117119 in
118120 Set.foldl' (crawl graph) state4 indirect
@@ -128,17 +130,18 @@ crawlKernel graph name (Kernel.Info imports chunks) state1 =
128130 state2 =
129131 state1 { _seenKernels = Set.insert name (_seenKernels state1) }
130132
131− (State builders seenDecls seenKernels effects) =
133+ (State builders seenDecls seenKernels effects debug) =
132134 List.foldl' (crawl graph) state2 (map toCoreGlobal imports)
133135
134136 builder =
135− JS.run (foldM chunkToBuilder mempty chunks)
137+ JS.run (foldM (chunkToBuilder debug) mempty chunks)
136138 in
137139 State
138140 { _builders = builder : builders
139141 , _seenDecls = seenDecls
140142 , _seenKernels = seenKernels
141143 , _effects = effects
144+ , _debug = debug
142145 }
143146
144147
@@ -147,8 +150,8 @@ toCoreGlobal (home, name) =
147150 Var.Global (ModuleName.inCore home) name
148151
149152
150−chunkToBuilder :: BS.Builder -> Kernel.Chunk -> JS.Generator BS.Builder
151−chunkToBuilder builder chunk =
153+chunkToBuilder :: Bool -> BS.Builder -> Kernel.Chunk -> JS.Generator BS.Builder
154+chunkToBuilder debug builder chunk =
152155 case chunk of
153156 Kernel.JS javascript ->
154157 return $ BS.byteString javascript <> builder
@@ -161,9 +164,9 @@ chunkToBuilder builder chunk =
161164 -- TODO generate a smaller field
162165 return $ Text.encodeUtf8Builder name <> builder
163166
164− Kernel.Prod isProd ->
167+ Kernel.Debug isDebug ->
165168 -- TODO pick based on what compile mode we are in
166− if isProd then
169+ if isDebug && debug then
167170 return builder
168171 else
169172 return $ "_UNUSED" <> builder
src/Parse/Kernel.hs+2−2
@@ -47,8 +47,8 @@ parserHelp imports enums fields chunks =
4747
4848 Just tag ->
4949 case tag of
50− Parse.KernelProd isProd ->
51− parserHelp imports enums fields (Kernel.Prod isProd : Kernel.JS javascript : chunks)
50+ Parse.KernelDebug isDebug ->
51+ parserHelp imports enums fields (Kernel.Debug isDebug : Kernel.JS javascript : chunks)
5252
5353 Parse.KernelImport var ->
5454 case Map.lookup var imports of
src/Parse/Primitives.hs+4−4
@@ -1416,7 +1416,7 @@ eatShader array offset length row col =
14161416
14171417data ChunkTag
14181418 = KernelEnum Word8 Text
1419− | KernelProd Bool
1419+ | KernelDebug Bool
14201420 | KernelImport Text
14211421 | KernelJsField Text
14221422 | KernelElmField Text
@@ -1481,11 +1481,11 @@ chompChunkTag array jsOffset offset length row col =
14811481 else if 0x0061 {- a -} <= word && word <= 0x007A {- z -} then
14821482 KernelJsField chunk
14831483
1484− else if chunk == "DEV" then
1485− KernelProd False
1484+ else if chunk == "DEBUG" then
1485+ KernelDebug False
14861486
14871487 else if chunk == "PROD" then
1488− KernelProd True
1488+ KernelDebug True
14891489
14901490 else
14911491 KernelImport chunk