mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-11-03 13:07:31 +09:00
420857 - Part 1: Report the position of opening brace for missing brace error in function body.
This commit is contained in:
parent
379a4231fe
commit
e5f1edc00c
4 changed files with 71 additions and 6 deletions
|
|
@ -1012,6 +1012,35 @@ Parser<ParseHandler>::hasValidSimpleStrictParameterNames()
|
|||
return true;
|
||||
}
|
||||
|
||||
template <typename ParseHandler>
|
||||
void
|
||||
Parser<ParseHandler>::reportMissingClosing(unsigned errorNumber, unsigned noteNumber,
|
||||
uint32_t openedPos)
|
||||
{
|
||||
auto notes = MakeUnique<JSErrorNotes>();
|
||||
if (!notes)
|
||||
return;
|
||||
|
||||
uint32_t line, column;
|
||||
tokenStream.srcCoords.lineNumAndColumnIndex(openedPos, &line, &column);
|
||||
|
||||
const size_t MaxWidth = sizeof("4294967295");
|
||||
char columnNumber[MaxWidth];
|
||||
SprintfLiteral(columnNumber, "%" PRIu32, column);
|
||||
char lineNumber[MaxWidth];
|
||||
SprintfLiteral(lineNumber, "%" PRIu32, line);
|
||||
|
||||
if (!notes->addNoteASCII(pc->sc()->context,
|
||||
getFilename(), line, column,
|
||||
GetErrorMessage, nullptr,
|
||||
noteNumber, lineNumber, columnNumber))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
errorWithNotes(Move(notes), errorNumber);
|
||||
}
|
||||
|
||||
template <typename ParseHandler>
|
||||
void
|
||||
Parser<ParseHandler>::reportRedeclaration(HandlePropertyName name, DeclarationKind prevKind,
|
||||
|
|
@ -1039,11 +1068,11 @@ Parser<ParseHandler>::reportRedeclaration(HandlePropertyName name, DeclarationKi
|
|||
char lineNumber[MaxWidth];
|
||||
SprintfLiteral(lineNumber, "%" PRIu32, line);
|
||||
|
||||
if (!notes->addNoteLatin1(pc->sc()->context,
|
||||
getFilename(), line, column,
|
||||
GetErrorMessage, nullptr,
|
||||
JSMSG_REDECLARED_PREV,
|
||||
lineNumber, columnNumber))
|
||||
if (!notes->addNoteASCII(pc->sc()->context,
|
||||
getFilename(), line, column,
|
||||
GetErrorMessage, nullptr,
|
||||
JSMSG_REDECLARED_PREV,
|
||||
lineNumber, columnNumber))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
|
@ -3613,6 +3642,7 @@ Parser<ParseHandler>::functionFormalParametersAndBody(InHandling inHandling,
|
|||
TokenKind tt;
|
||||
if (!tokenStream.getToken(&tt, TokenStream::Operand))
|
||||
return false;
|
||||
uint32_t openedPos = 0;
|
||||
if (tt != TOK_LC) {
|
||||
if ((funbox->isStarGenerator() && !funbox->isAsync()) || kind == Method ||
|
||||
kind == GetterNoExpressionClosure || kind == SetterNoExpressionClosure ||
|
||||
|
|
@ -3634,6 +3664,8 @@ Parser<ParseHandler>::functionFormalParametersAndBody(InHandling inHandling,
|
|||
tokenStream.ungetToken();
|
||||
bodyType = ExpressionBody;
|
||||
funbox->setIsExprBody();
|
||||
} else {
|
||||
openedPos = pos().begin;
|
||||
}
|
||||
|
||||
// Arrow function parameters inherit yieldHandling from the enclosing
|
||||
|
|
@ -3675,7 +3707,7 @@ Parser<ParseHandler>::functionFormalParametersAndBody(InHandling inHandling,
|
|||
if (!tokenStream.matchToken(&matched, TOK_RC, TokenStream::Operand))
|
||||
return false;
|
||||
if (!matched) {
|
||||
error(JSMSG_CURLY_AFTER_BODY);
|
||||
reportMissingClosing(JSMSG_CURLY_AFTER_BODY, JSMSG_CURLY_OPENED, openedPos);
|
||||
return false;
|
||||
}
|
||||
funbox->setEnd(pos().end);
|
||||
|
|
|
|||
|
|
@ -1459,6 +1459,8 @@ class Parser final : public ParserBase, private JS::AutoGCRooter
|
|||
|
||||
bool hasValidSimpleStrictParameterNames();
|
||||
|
||||
void reportMissingClosing(unsigned errorNumber, unsigned noteNumber, uint32_t openedPos);
|
||||
|
||||
void reportRedeclaration(HandlePropertyName name, DeclarationKind prevKind, TokenPos pos,
|
||||
uint32_t prevPos);
|
||||
bool notePositionalFormalParameter(Node fn, HandlePropertyName name, uint32_t beginPos,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue