on master help sign in
Properly handle pattern matching on non-tuple ADTs in let-expressions, esolving issue #417
f26610bEvan Czaplicki
compiler/Generate/JavaScript.hs+3−3
@@ -226,10 +226,10 @@ definition def =
226 decl x n = varDecl x (dotSep ["$","_" ++ show n])
226 decl x n = varDecl x (dotSep ["$","_" ++ show n])
227 setup vars
227 setup vars
228 | Help.isTuple name = assign "$" : vars
228 | Help.isTuple name = assign "$" : vars
229− | otherwise = safeAssign : vars
229+ | otherwise = assign "$raw" : safeAssign : vars
230
230
231− safeAssign = varDecl "$" (CondExpr () if' expr' exception)
231+ safeAssign = varDecl "$" (CondExpr () if' (obj "$raw") exception)
232− if' = InfixExpr () OpStrictEq (obj "$.ctor") (string name)
232+ if' = InfixExpr () OpStrictEq (obj "$raw.ctor") (string name)
233 exception = obj "_E.Case" `call` [ref "$moduleName", string (show span)]
233 exception = obj "_E.Case" `call` [ref "$moduleName", string (show span)]
234
234
235 _ ->
235 _ ->