on master help sign in
Fix ordering issue with kernel code and debugger
9488ba6Evan Czaplicki
compiler/src/Generate/JavaScript.hs+13−13
@@ -104,7 +104,7 @@ print ansi localizer home name (Can.Forall _ tipe) =
104
104
105data State =
105data State =
106 State
106 State
107− { _kernel :: B.Builder
107+ { _revKernels :: [B.Builder]
108 , _revBuilders :: [B.Builder]
108 , _revBuilders :: [B.Builder]
109 , _seenGlobals :: Set.Set Opt.Global
109 , _seenGlobals :: Set.Set Opt.Global
110 }
110 }
@@ -116,13 +116,13 @@ emptyState =
116
116
117
117
118stateToBuilder :: State -> B.Builder
118stateToBuilder :: State -> B.Builder
119−stateToBuilder (State kernel revBuilders _) =
119+stateToBuilder (State revKernels revBuilders _) =
120− case revBuilders of
120+ prependBuilders revKernels (prependBuilders revBuilders mempty)
121− [] ->
121+
122− kernel
123
122
124− b:bs ->
123+prependBuilders :: [B.Builder] -> B.Builder -> B.Builder
125− kernel <> List.foldl' (\code decl -> decl <> code) b bs
124+prependBuilders revBuilders monolith =
125+ List.foldl' (\m b -> b <> m) monolith revBuilders
126
126
127
127
128
128
@@ -133,12 +133,12 @@ type Graph = Map.Map Opt.Global Opt.Node
133
133
134
134
135addGlobal :: Mode.Mode -> Graph -> State -> Opt.Global -> State
135addGlobal :: Mode.Mode -> Graph -> State -> Opt.Global -> State
136−addGlobal mode graph state@(State kernel builders seen) global =
136+addGlobal mode graph state@(State revKernels builders seen) global =
137 if Set.member global seen then
137 if Set.member global seen then
138 state
138 state
139 else
139 else
140 addGlobalHelp mode graph global $
140 addGlobalHelp mode graph global $
141− State kernel builders (Set.insert global seen)
141+ State revKernels builders (Set.insert global seen)
142
142
143
143
144addGlobalHelp :: Mode.Mode -> Graph -> Opt.Global -> State -> State
144addGlobalHelp :: Mode.Mode -> Graph -> Opt.Global -> State -> State
@@ -213,13 +213,13 @@ addStmt state stmt =
213
213
214
214
215addBuilder :: State -> B.Builder -> State
215addBuilder :: State -> B.Builder -> State
216−addBuilder (State kernel revBuilders seen) builder =
216+addBuilder (State revKernels revBuilders seen) builder =
217− State kernel (builder:revBuilders) seen
217+ State revKernels (builder:revBuilders) seen
218
218
219
219
220addKernel :: State -> B.Builder -> State
220addKernel :: State -> B.Builder -> State
221−addKernel (State kernel revBuilders seen) moreKernel =
221+addKernel (State revKernels revBuilders seen) kernel =
222− State (moreKernel <> kernel) revBuilders seen
222+ State (kernel:revKernels) revBuilders seen
223
223
224
224
225var :: Opt.Global -> Expr.Code -> JS.Stmt
225var :: Opt.Global -> Expr.Code -> JS.Stmt