on master help sign in
Generate definitions for PROD versions of enums and boxes

It may be used by kernel code, so it makes sense to generate and let the JS minifiers get rid of it.

commita31f7304bc46716f18e39637811e664635df2dc6 authorEvan Czaplicki <evancz@users.noreply.github.com> dateTue 30 Jan 2018, 15:02 (9 years ago) parentbe60233
1 file changed+20−12
src/Generate/JavaScript.hs+20−12
src/Generate/JavaScript.hs+20−12
@@ -300,13 +300,17 @@ addChunk mode builder chunk =
300300
301301
302302generateEnum :: Name.Mode -> Opt.Global -> N.Name -> Index.ZeroBased -> JS.Stmt
303−generateEnum mode global ctorName index =
304− case mode of
305− Name.Debug _ ->
306− var global (Expr.generateCtor mode ctorName index 0)
303+generateEnum mode (Opt.Global home name) ctorName index =
304+ let
305+ definition =
306+ case mode of
307+ Name.Debug _ ->
308+ Expr.codeToExpr (Expr.generateCtor mode ctorName index 0)
307309
308− Name.Prod _ _ ->
309− JS.EmptyStmt
310+ Name.Prod _ _ ->
311+ JS.Int (Index.toMachine index)
312+ in
313+ JS.Var [ (Name.fromGlobal home name, Just definition) ]
310314
311315
312316
@@ -314,13 +318,17 @@ generateEnum mode global ctorName index =
314318
315319
316320generateBox :: Name.Mode -> Opt.Global -> N.Name -> JS.Stmt
317−generateBox mode global ctorName =
318− case mode of
319− Name.Debug _ ->
320− var global (Expr.generateCtor mode ctorName Index.first 1)
321+generateBox mode (Opt.Global home name) ctorName =
322+ let
323+ definition =
324+ case mode of
325+ Name.Debug _ ->
326+ Expr.codeToExpr (Expr.generateCtor mode ctorName Index.first 1)
321327
322− Name.Prod _ _ ->
323− JS.EmptyStmt
328+ Name.Prod _ _ ->
329+ JS.Ref (Name.fromGlobal ModuleName.basics N.identity)
330+ in
331+ JS.Var [ (Name.fromGlobal home name, Just definition) ]
324332
325333
326334