Bug 1296814 - Specify an explicit offset when warning about "use asm" found in the directive prologue of a script (rather than a function body). r=anba

--HG--
extra : rebase_source : 40239791b101a8a53f924d71944e412a0b5dbb31
This commit is contained in:
Jeff Walden 2016-11-07 15:23:18 -08:00
parent 1eb4cc8925
commit d141fe456e
3 changed files with 7 additions and 6 deletions

View File

@ -842,7 +842,7 @@ class FullParseHandler
MOZ_MUST_USE ParseNode* setLikelyIIFE(ParseNode* pn) { MOZ_MUST_USE ParseNode* setLikelyIIFE(ParseNode* pn) {
return parenthesize(pn); return parenthesize(pn);
} }
void setPrologue(ParseNode* pn) { void setInDirectivePrologue(ParseNode* pn) {
pn->pn_prologue = true; pn->pn_prologue = true;
} }

View File

@ -3757,10 +3757,10 @@ Parser<FullParseHandler>::asmJS(Node list)
*/ */
template <typename ParseHandler> template <typename ParseHandler>
bool bool
Parser<ParseHandler>::maybeParseDirective(Node list, Node pn, bool* cont) Parser<ParseHandler>::maybeParseDirective(Node list, Node possibleDirective, bool* cont)
{ {
TokenPos directivePos; TokenPos directivePos;
JSAtom* directive = handler.isStringExprStatement(pn, &directivePos); JSAtom* directive = handler.isStringExprStatement(possibleDirective, &directivePos);
*cont = !!directive; *cont = !!directive;
if (!*cont) if (!*cont)
@ -3777,7 +3777,7 @@ Parser<ParseHandler>::maybeParseDirective(Node list, Node pn, bool* cont)
// directive in the future. We don't want to interfere with people // directive in the future. We don't want to interfere with people
// taking advantage of directive-prologue-enabled features that appear // taking advantage of directive-prologue-enabled features that appear
// in other browsers first. // in other browsers first.
handler.setPrologue(pn); handler.setInDirectivePrologue(possibleDirective);
if (directive == context->names().useStrict) { if (directive == context->names().useStrict) {
// Functions with non-simple parameter lists (destructuring, // Functions with non-simple parameter lists (destructuring,
@ -3813,7 +3813,8 @@ Parser<ParseHandler>::maybeParseDirective(Node list, Node pn, bool* cont)
} else if (directive == context->names().useAsm) { } else if (directive == context->names().useAsm) {
if (pc->isFunctionBox()) if (pc->isFunctionBox())
return asmJS(list); return asmJS(list);
return reportWithNode(ParseWarning, false, pn, JSMSG_USE_ASM_DIRECTIVE_FAIL); return reportWithOffset(ParseWarning, false, directivePos.begin,
JSMSG_USE_ASM_DIRECTIVE_FAIL);
} }
} }
return true; return true;

View File

@ -521,7 +521,7 @@ class SyntaxParseHandler
MOZ_MUST_USE Node setLikelyIIFE(Node pn) { MOZ_MUST_USE Node setLikelyIIFE(Node pn) {
return pn; // Remain in syntax-parse mode. return pn; // Remain in syntax-parse mode.
} }
void setPrologue(Node pn) {} void setInDirectivePrologue(Node pn) {}
bool isConstant(Node pn) { return false; } bool isConstant(Node pn) { return false; }