diff -r 000000000000 -r 6474c204b198 js/src/tests/js1_8_1/extensions/strict-warning.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/js/src/tests/js1_8_1/extensions/strict-warning.js Wed Dec 31 06:09:35 2014 +0100 @@ -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.'); +