| // Turn on strict mode and warnings-as-errors mode. |
| if (options().split().indexOf('strict') == -1) |
| options('strict'); |
| if (options().split().indexOf('werror') == -1) |
| options('werror'); |
| |
| function expectSyntaxError(stmt) { |
| print(stmt); |
| var result = 'no error'; |
| try { |
| Function(stmt); |
| } catch (exc) { |
| result = exc.constructor.name; |
| } |
| assertEq(result, 'SyntaxError'); |
| } |
| |
| function test(expr) { |
| // Without extra parentheses, expect an error. |
| expectSyntaxError('if (' + expr + ') {};'); |
| |
| // Extra parentheses silence the warning/error. |
| Function('if ((' + expr + ')) {};'); |
| } |
| |
| // Overparenthesized assignment in a condition should not be a strict error. |
| test('a = 0'); |
| test('a = (f(), g)'); |
| test('a = b || c > d'); |
| expectSyntaxError('if (a == 0);'); |
| reportCompare('passed', 'passed', 'Overparenthesized assignment in a condition should not be a strict error.'); |
| |