JavaScript: Recover from missing initializers in const/destructuring declarations.

This commit is contained in:
Max Schaefer
2019-01-29 15:56:35 +00:00
parent fbf2774bb3
commit 63ed569724

View File

@@ -2921,9 +2921,9 @@ public class Parser {
if (this.eat(TokenType.eq)) {
init = this.parseMaybeAssign(isFor, null, null);
} else if (kind.equals("const") && !(this.type == TokenType._in || (this.options.ecmaVersion() >= 6 && this.isContextual("of")))) {
this.unexpected();
this.raiseRecoverable(this.lastTokEnd, "Constant declarations require an initialization value");
} else if (!(id instanceof Identifier) && !(isFor && (this.type == TokenType._in || this.isContextual("of")))) {
this.raise(this.lastTokEnd, "Complex binding patterns require an initialization value");
this.raiseRecoverable(this.lastTokEnd, "Complex binding patterns require an initialization value");
}
declarations.add(this.finishNode(
new VariableDeclarator(new SourceLocation(varDeclStart), (IPattern) id, init, noTypeAnnotation, DeclarationFlags.none)));