on master help sign in
Fix #543

The function JavaScript.Helpers.split has a hard time deducing when something is an operator, so the JS variable $ was being mistaken for an Elm operator.

commit4e88d397302922c778f12e6820df48f3d2a535e7 authorEvan Czaplicki <info@elm-lang.org> dateMon 31 Mar 2014, 11:29 (13 years ago) parent01593aa
1 file changed+6−5
compiler/Generate/JavaScript.hs+6−5
compiler/Generate/JavaScript.hs+6−5
@@ -56,6 +56,7 @@ expression :: Expr -> State Int (Expression ())
5656expression (A region expr) =
5757 case expr of
5858 Var (V.Raw x) -> return $ obj x
59+
5960 Literal lit -> return $ literal lit
6061
6162 Range lo hi ->
@@ -216,19 +217,19 @@ definition (Definition pattern expr@(A region _) _) = do
216217 decl x n = varDecl x (dotSep ["$","_" ++ show n])
217218 setup vars
218219 | Help.isTuple name = assign "$" : vars
219− | otherwise = assign "$raw" : safeAssign : vars
220+ | otherwise = assign "_raw" : safeAssign : vars
220221
221− safeAssign = varDecl "$" (CondExpr () if' (obj "$raw") exception)
222− if' = InfixExpr () OpStrictEq (obj "$raw.ctor") (string name)
222+ safeAssign = varDecl "$" (CondExpr () if' (obj "_raw") exception)
223+ if' = InfixExpr () OpStrictEq (obj "_raw.ctor") (string name)
223224 exception = obj "_E.Case" `call` [ref "$moduleName", string (renderPretty region)]
224225
225226 _ ->
226227 do defs' <- concat <$> mapM toDef vars
227− return (VarDeclStmt () [assign "$"] : defs')
228+ return (VarDeclStmt () [assign "_"] : defs')
228229 where
229230 vars = P.boundVarList pattern
230231 mkVar = A region . rawVar
231− toDef y = let expr = A region $ Case (mkVar "$") [(pattern, mkVar y)]
232+ toDef y = let expr = A region $ Case (mkVar "_") [(pattern, mkVar y)]
232233 in definition $ Definition (P.Var y) expr Nothing
233234
234235match :: Region -> Case.Match -> State Int [Statement ()]