Bug 697279 - Properly disable some E4X opcodes in strict mode. r=brendan

This commit is contained in:
Tom Schuster 2011-11-14 20:43:33 +01:00
Родитель 2703feda57
Коммит b29f066f78
2 изменённых файлов: 25 добавлений и 0 удалений

Просмотреть файл

@ -6930,12 +6930,20 @@ Parser::primaryExpr(TokenKind tt, JSBool afterDot)
#if JS_HAS_XML_SUPPORT #if JS_HAS_XML_SUPPORT
case TOK_STAR: case TOK_STAR:
if (tc->inStrictMode()) {
reportErrorNumber(NULL, JSREPORT_ERROR, JSMSG_SYNTAX_ERROR);
return NULL;
}
pn = qualifiedIdentifier(); pn = qualifiedIdentifier();
if (!pn) if (!pn)
return NULL; return NULL;
break; break;
case TOK_AT: case TOK_AT:
if (tc->inStrictMode()) {
reportErrorNumber(NULL, JSREPORT_ERROR, JSMSG_SYNTAX_ERROR);
return NULL;
}
pn = attributeIdentifier(); pn = attributeIdentifier();
if (!pn) if (!pn)
return NULL; return NULL;

Просмотреть файл

@ -0,0 +1,17 @@
/*
* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/licenses/publicdomain/
*/
function checkSyntaxError(code) {
var error;
try {
eval(code);
} catch (e) {
error = e;
}
assertEq(error.name, 'SyntaxError');
}
checkSyntaxError('"use strict"; *');
checkSyntaxError('"use strict"; @7');