From 63ed5697243db1a8b3980fb1b7f8ede99f5a9e6d Mon Sep 17 00:00:00 2001 From: Max Schaefer Date: Tue, 29 Jan 2019 15:56:35 +0000 Subject: [PATCH] JavaScript: Recover from missing initializers in const/destructuring declarations. --- javascript/extractor/src/com/semmle/jcorn/Parser.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/javascript/extractor/src/com/semmle/jcorn/Parser.java b/javascript/extractor/src/com/semmle/jcorn/Parser.java index b8207d19e83..0e8be97ba3b 100644 --- a/javascript/extractor/src/com/semmle/jcorn/Parser.java +++ b/javascript/extractor/src/com/semmle/jcorn/Parser.java @@ -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)));