Skip to content

Strange error when parsing assignment expressions #121

Open
@jeapostrophe

Description

@jeapostrophe
diff --git a/test/Test/Language/Javascript/StatementParser.hs b/test/Test/Language/Javascript/StatementParser.hs
index 5e0c98c..0c102d5 100644
--- a/test/Test/Language/Javascript/StatementParser.hs
+++ b/test/Test/Language/Javascript/StatementParser.hs
@@ -86,8 +86,13 @@ testStatementParser = describe "Parse statements:" $ do
     it "with" $
         testStmt "with (x) {};" `shouldBe` "Right (JSAstStatement (JSWith (JSIdentifier 'x') (JSStatementBlock [])))"
 
-    it "assign" $
+    it "assign" $ do
         testStmt "var z = x[i] / y;"    `shouldBe` "Right (JSAstStatement (JSVariable (JSVarInitExpression (JSIdentifier 'z') [JSExpressionBinary ('/',JSMemberSquare (JSIdentifier 'x',JSIdentifier 'i'),JSIdentifier 'y')])))"
+        testStmt "var [ x ] = y;" `shouldBe` "Right (JSAstStatement (JSVariable (JSVarInitExpression (JSArrayLiteral [JSIdentifier 'x']) [JSIdentifier 'y'])))"
+        testStmt "x = y;" `shouldBe` "Right (JSAstStatement (JSOpAssign ('=',JSIdentifier 'x',JSIdentifier 'y'),JSSemicolon))"
+        testStmt "[ x ] = y;" `shouldBe` "Right (JSAstStatement (JSOpAssign ('=',JSArrayLiteral [JSIdentifier 'x'],JSIdentifier 'y'),JSSemicolon))"
+        testStmt "{ x = y; }" `shouldBe` "Right (JSAstStatement (JSStatementBlock [JSOpAssign ('=',JSIdentifier 'x',JSIdentifier 'y'),JSSemicolon]))"
+        testStmt "{ [ x ] = y; }" `shouldBe` "Right (JSAstStatement (JSStatementBlock [JSOpAssign ('=',JSArrayLiteral [JSIdentifier 'x'],JSIdentifier 'y'),JSSemicolon]))"
 
     it "label" $
         testStmt "abc:x=1"      `shouldBe` "Right (JSAstStatement (JSLabelled (JSIdentifier 'abc') (JSOpAssign ('=',JSIdentifier 'x',JSDecimal '1'))))"

The last one { [ x ] = y; } doesn't work.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions