@@ -1000,11 +1000,11 @@ parse_postfix_expression (void)
1000
1000
return expr;
1001
1001
}
1002
1002
1003
- syntax_check_for_eval_and_arguments_in_strict_mode (expr, is_strict_mode (), tok.loc );
1004
-
1005
1003
skip_token ();
1006
1004
if (token_is (TOK_DOUBLE_PLUS))
1007
1005
{
1006
+ syntax_check_for_eval_and_arguments_in_strict_mode (expr, is_strict_mode (), tok.loc );
1007
+
1008
1008
const operand res = dump_post_increment_res (expr);
1009
1009
if (!operand_is_empty (this_arg) && !operand_is_empty (prop))
1010
1010
{
@@ -1014,6 +1014,8 @@ parse_postfix_expression (void)
1014
1014
}
1015
1015
else if (token_is (TOK_DOUBLE_MINUS))
1016
1016
{
1017
+ syntax_check_for_eval_and_arguments_in_strict_mode (expr, is_strict_mode (), tok.loc );
1018
+
1017
1019
const operand res = dump_post_decrement_res (expr);
1018
1020
if (!operand_is_empty (this_arg) && !operand_is_empty (prop))
1019
1021
{
@@ -1601,112 +1603,84 @@ parse_assignment_expression (bool in_allowed)
1601
1603
{
1602
1604
return expr;
1603
1605
}
1604
- syntax_check_for_eval_and_arguments_in_strict_mode (expr, is_strict_mode (), tok. loc );
1606
+
1605
1607
skip_newlines ();
1606
- switch (tok.type )
1607
- {
1608
- case TOK_EQ:
1608
+
1609
+ token_type tt = tok.type ;
1610
+
1611
+ if (tt == TOK_EQ
1612
+ || tt == TOK_MULT_EQ
1613
+ || tt == TOK_DIV_EQ
1614
+ || tt == TOK_MOD_EQ
1615
+ || tt == TOK_PLUS_EQ
1616
+ || tt == TOK_MINUS_EQ
1617
+ || tt == TOK_LSHIFT_EQ
1618
+ || tt == TOK_RSHIFT_EQ
1619
+ || tt == TOK_RSHIFT_EX_EQ
1620
+ || tt == TOK_AND_EQ
1621
+ || tt == TOK_XOR_EQ
1622
+ || tt == TOK_OR_EQ)
1623
+ {
1624
+ syntax_check_for_eval_and_arguments_in_strict_mode (expr, is_strict_mode (), tok.loc );
1625
+ skip_newlines ();
1626
+ start_dumping_assignment_expression ();
1627
+ const operand assign_expr = parse_assignment_expression (in_allowed);
1628
+
1629
+ if (tt == TOK_EQ)
1609
1630
{
1610
- skip_newlines ();
1611
- start_dumping_assignment_expression ();
1612
- const operand assign_expr = parse_assignment_expression (in_allowed);
1613
1631
expr = dump_prop_setter_or_variable_assignment_res (expr, assign_expr);
1614
- break ;
1615
1632
}
1616
- case TOK_MULT_EQ:
1633
+ else if (tt == TOK_MULT_EQ)
1617
1634
{
1618
- skip_newlines ();
1619
- start_dumping_assignment_expression ();
1620
- const operand assign_expr = parse_assignment_expression (in_allowed);
1621
1635
expr = dump_prop_setter_or_multiplication_res (expr, assign_expr);
1622
- break ;
1623
1636
}
1624
- case TOK_DIV_EQ:
1637
+ else if (tt == TOK_DIV_EQ)
1625
1638
{
1626
- skip_newlines ();
1627
- start_dumping_assignment_expression ();
1628
- const operand assign_expr = parse_assignment_expression (in_allowed);
1629
1639
expr = dump_prop_setter_or_division_res (expr, assign_expr);
1630
- break ;
1631
1640
}
1632
- case TOK_MOD_EQ:
1641
+ else if (tt == TOK_MOD_EQ)
1633
1642
{
1634
- skip_newlines ();
1635
- start_dumping_assignment_expression ();
1636
- const operand assign_expr = parse_assignment_expression (in_allowed);
1637
1643
expr = dump_prop_setter_or_remainder_res (expr, assign_expr);
1638
- break ;
1639
1644
}
1640
- case TOK_PLUS_EQ:
1645
+ else if (tt == TOK_PLUS_EQ)
1641
1646
{
1642
- skip_newlines ();
1643
- start_dumping_assignment_expression ();
1644
- const operand assign_expr = parse_assignment_expression (in_allowed);
1645
1647
expr = dump_prop_setter_or_addition_res (expr, assign_expr);
1646
- break ;
1647
1648
}
1648
- case TOK_MINUS_EQ:
1649
+ else if (tt == TOK_MINUS_EQ)
1649
1650
{
1650
- skip_newlines ();
1651
- start_dumping_assignment_expression ();
1652
- const operand assign_expr = parse_assignment_expression (in_allowed);
1653
1651
expr = dump_prop_setter_or_substraction_res (expr, assign_expr);
1654
- break ;
1655
1652
}
1656
- case TOK_LSHIFT_EQ:
1653
+ else if (tt == TOK_LSHIFT_EQ)
1657
1654
{
1658
- skip_newlines ();
1659
- start_dumping_assignment_expression ();
1660
- const operand assign_expr = parse_assignment_expression (in_allowed);
1661
1655
expr = dump_prop_setter_or_left_shift_res (expr, assign_expr);
1662
- break ;
1663
1656
}
1664
- case TOK_RSHIFT_EQ:
1657
+ else if (tt == TOK_RSHIFT_EQ)
1665
1658
{
1666
- skip_newlines ();
1667
- start_dumping_assignment_expression ();
1668
- const operand assign_expr = parse_assignment_expression (in_allowed);
1669
1659
expr = dump_prop_setter_or_right_shift_res (expr, assign_expr);
1670
- break ;
1671
1660
}
1672
- case TOK_RSHIFT_EX_EQ:
1661
+ else if (tt == TOK_RSHIFT_EX_EQ)
1673
1662
{
1674
- skip_newlines ();
1675
- start_dumping_assignment_expression ();
1676
- const operand assign_expr = parse_assignment_expression (in_allowed);
1677
1663
expr = dump_prop_setter_or_right_shift_ex_res (expr, assign_expr);
1678
- break ;
1679
1664
}
1680
- case TOK_AND_EQ:
1665
+ else if (tt == TOK_AND_EQ)
1681
1666
{
1682
- skip_newlines ();
1683
- start_dumping_assignment_expression ();
1684
- const operand assign_expr = parse_assignment_expression (in_allowed);
1685
1667
expr = dump_prop_setter_or_bitwise_and_res (expr, assign_expr);
1686
- break ;
1687
1668
}
1688
- case TOK_XOR_EQ:
1669
+ else if (tt == TOK_XOR_EQ)
1689
1670
{
1690
- skip_newlines ();
1691
- start_dumping_assignment_expression ();
1692
- const operand assign_expr = parse_assignment_expression (in_allowed);
1693
1671
expr = dump_prop_setter_or_bitwise_xor_res (expr, assign_expr);
1694
- break ;
1695
1672
}
1696
- case TOK_OR_EQ:
1673
+ else
1697
1674
{
1698
- skip_newlines ();
1699
- start_dumping_assignment_expression ();
1700
- const operand assign_expr = parse_assignment_expression (in_allowed);
1675
+ JERRY_ASSERT (tt == TOK_OR_EQ);
1701
1676
expr = dump_prop_setter_or_bitwise_or_res (expr, assign_expr);
1702
- break ;
1703
- }
1704
- default :
1705
- {
1706
- lexer_save_token (tok);
1707
- break ;
1708
1677
}
1709
1678
}
1679
+ else
1680
+ {
1681
+ lexer_save_token (tok);
1682
+ }
1683
+
1710
1684
return expr;
1711
1685
}
1712
1686
0 commit comments