on master help sign in
Pass Global to generateCtor instead of just the constructor name
80e6562Evan Czaplicki
builder/src/Generate/Nitpick.hs+3−3
@@ -35,9 +35,9 @@ nodeHasDebug node =
35 case node of
35 case node of
36 Opt.Define expr _ -> hasDebug expr
36 Opt.Define expr _ -> hasDebug expr
37 Opt.DefineTailFunc _ expr _ -> hasDebug expr
37 Opt.DefineTailFunc _ expr _ -> hasDebug expr
38− Opt.Ctor _ _ _ -> False
38+ Opt.Ctor _ _ -> False
39− Opt.Enum _ _ -> False
39+ Opt.Enum _ -> False
40− Opt.Box _ -> False
40+ Opt.Box -> False
41 Opt.Link _ -> False
41 Opt.Link _ -> False
42 Opt.Cycle defs _ -> any (hasDebug . snd) defs
42 Opt.Cycle defs _ -> any (hasDebug . snd) defs
43 Opt.Manager _ -> False
43 Opt.Manager _ -> False
compiler/src/AST/Optimized.hs+9−9
@@ -146,9 +146,9 @@ data Main
146data Node
146data Node
147 = Define Expr (Set.Set Global)
147 = Define Expr (Set.Set Global)
148 | DefineTailFunc [N.Name] Expr (Set.Set Global)
148 | DefineTailFunc [N.Name] Expr (Set.Set Global)
149− | Ctor N.Name Index.ZeroBased Int
149+ | Ctor Index.ZeroBased Int
150− | Enum N.Name Index.ZeroBased
150+ | Enum Index.ZeroBased
151− | Box N.Name
151+ | Box
152 | Link Global
152 | Link Global
153 | Cycle [(N.Name, Expr)] (Set.Set Global)
153 | Cycle [(N.Name, Expr)] (Set.Set Global)
154 | Manager EffectsType
154 | Manager EffectsType
@@ -340,9 +340,9 @@ instance Binary Node where
340 case node of
340 case node of
341 Define a b -> putWord8 0 >> put a >> put b
341 Define a b -> putWord8 0 >> put a >> put b
342 DefineTailFunc a b c -> putWord8 1 >> put a >> put b >> put c
342 DefineTailFunc a b c -> putWord8 1 >> put a >> put b >> put c
343− Ctor a b c -> putWord8 2 >> put a >> put b >> put c
343+ Ctor a b -> putWord8 2 >> put a >> put b
344− Enum a b -> putWord8 3 >> put a >> put b
344+ Enum a -> putWord8 3 >> put a
345− Box a -> putWord8 4 >> put a
345+ Box -> putWord8 4
346 Link a -> putWord8 5 >> put a
346 Link a -> putWord8 5 >> put a
347 Cycle a b -> putWord8 6 >> put a >> put b
347 Cycle a b -> putWord8 6 >> put a >> put b
348 Manager a -> putWord8 7 >> put a
348 Manager a -> putWord8 7 >> put a
@@ -355,9 +355,9 @@ instance Binary Node where
355 case word of
355 case word of
356 0 -> liftM2 Define get get
356 0 -> liftM2 Define get get
357 1 -> liftM3 DefineTailFunc get get get
357 1 -> liftM3 DefineTailFunc get get get
358− 2 -> liftM3 Ctor get get get
358+ 2 -> liftM2 Ctor get get
359− 3 -> liftM2 Enum get get
359+ 3 -> liftM Enum get
360− 4 -> liftM Box get
360+ 4 -> return Box
361 5 -> liftM Link get
361 5 -> liftM Link get
362 6 -> liftM2 Cycle get get
362 6 -> liftM2 Cycle get get
363 7 -> liftM Manager get
363 7 -> liftM Manager get
compiler/src/Generate/JavaScript.hs+12−12
@@ -149,9 +149,9 @@ addGlobalHelp mode graph global state =
149 var global (Expr.generateTailDef mode name argNames body)
149 var global (Expr.generateTailDef mode name argNames body)
150 )
150 )
151
151
152− Opt.Ctor name index arity ->
152+ Opt.Ctor index arity ->
153 addStmt state (
153 addStmt state (
154− var global (Expr.generateCtor mode name index arity)
154+ var global (Expr.generateCtor mode global index arity)
155 )
155 )
156
156
157 Opt.Link linkedGlobal ->
157 Opt.Link linkedGlobal ->
@@ -176,14 +176,14 @@ addGlobalHelp mode graph global state =
176 _ ->
176 _ ->
177 addBuilder (addDeps clientDeps state) (generateKernel mode clientChunks)
177 addBuilder (addDeps clientDeps state) (generateKernel mode clientChunks)
178
178
179− Opt.Enum name index ->
179+ Opt.Enum index ->
180 addStmt state (
180 addStmt state (
181− generateEnum mode global name index
181+ generateEnum mode global index
182 )
182 )
183
183
184− Opt.Box name ->
184+ Opt.Box ->
185 addStmt state (
185 addStmt state (
186− generateBox mode global name
186+ generateBox mode global
187 )
187 )
188
188
189 Opt.PortIncoming decoder deps ->
189 Opt.PortIncoming decoder deps ->
@@ -323,13 +323,13 @@ addChunk mode builder chunk =
323-- GENERATE ENUM
323-- GENERATE ENUM
324
324
325
325
326−generateEnum :: Mode.Mode -> Opt.Global -> N.Name -> Index.ZeroBased -> JS.Stmt
326+generateEnum :: Mode.Mode -> Opt.Global -> Index.ZeroBased -> JS.Stmt
327−generateEnum mode (Opt.Global home name) ctorName index =
327+generateEnum mode global@(Opt.Global home name) index =
328 let
328 let
329 definition =
329 definition =
330 case mode of
330 case mode of
331 Mode.Dev _ _ ->
331 Mode.Dev _ _ ->
332− Expr.codeToExpr (Expr.generateCtor mode ctorName index 0)
332+ Expr.codeToExpr (Expr.generateCtor mode global index 0)
333
333
334 Mode.Prod _ _ ->
334 Mode.Prod _ _ ->
335 JS.Int (Index.toMachine index)
335 JS.Int (Index.toMachine index)
@@ -341,13 +341,13 @@ generateEnum mode (Opt.Global home name) ctorName index =
341-- GENERATE BOX
341-- GENERATE BOX
342
342
343
343
344−generateBox :: Mode.Mode -> Opt.Global -> N.Name -> JS.Stmt
344+generateBox :: Mode.Mode -> Opt.Global -> JS.Stmt
345−generateBox mode (Opt.Global home name) ctorName =
345+generateBox mode global@(Opt.Global home name) =
346 let
346 let
347 definition =
347 definition =
348 case mode of
348 case mode of
349 Mode.Dev _ _ ->
349 Mode.Dev _ _ ->
350− Expr.codeToExpr (Expr.generateCtor mode ctorName Index.first 1)
350+ Expr.codeToExpr (Expr.generateCtor mode global Index.first 1)
351
351
352 Mode.Prod _ _ ->
352 Mode.Prod _ _ ->
353 JS.Ref (Name.fromGlobal ModuleName.basics N.identity)
353 JS.Ref (Name.fromGlobal ModuleName.basics N.identity)
compiler/src/Generate/JavaScript/Expression.hs+2−2
@@ -248,8 +248,8 @@ toChar =
248-- CTOR
248-- CTOR
249
249
250
250
251−generateCtor :: Mode.Mode -> N.Name -> Index.ZeroBased -> Int -> Code
251+generateCtor :: Mode.Mode -> Opt.Global -> Index.ZeroBased -> Int -> Code
252−generateCtor mode name index arity =
252+generateCtor mode (Opt.Global _ name) index arity =
253 let
253 let
254 argNames =
254 argNames =
255 Index.indexedMap (\i _ -> Name.fromIndex i) [1 .. arity]
255 Index.indexedMap (\i _ -> Name.fromIndex i) [1 .. arity]
compiler/src/Optimize/Module.hs+3−3
@@ -73,9 +73,9 @@ addCtorNode home opts nodes (Can.Ctor name index numArgs _) =
73 let
73 let
74 node =
74 node =
75 case opts of
75 case opts of
76− Can.Normal -> Opt.Ctor name index numArgs
76+ Can.Normal -> Opt.Ctor index numArgs
77− Can.Unbox -> Opt.Box name
77+ Can.Unbox -> Opt.Box
78− Can.Enum -> Opt.Enum name index
78+ Can.Enum -> Opt.Enum index
79 in
79 in
80 Map.insert (Opt.Global home name) node nodes
80 Map.insert (Opt.Global home name) node nodes
81
81