diff options
Diffstat (limited to 'js/src/tests/js1_8_1/extensions/strict-warning.js')
-rw-r--r-- | js/src/tests/js1_8_1/extensions/strict-warning.js | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/js/src/tests/js1_8_1/extensions/strict-warning.js b/js/src/tests/js1_8_1/extensions/strict-warning.js new file mode 100644 index 000000000..b5a37ea70 --- /dev/null +++ b/js/src/tests/js1_8_1/extensions/strict-warning.js @@ -0,0 +1,32 @@ +// 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.'); + |