Index: src/parsing/parser-base.h |
diff --git a/src/parsing/parser-base.h b/src/parsing/parser-base.h |
index fce632c7741dd42edaa51170416862cfae224b27..6086f7af196b863a590c18a7252fd1f5143a4e5c 100644 |
--- a/src/parsing/parser-base.h |
+++ b/src/parsing/parser-base.h |
@@ -3243,11 +3243,17 @@ bool ParserBase<Traits>::IsNextLetKeyword() { |
case Token::LBRACK: |
case Token::IDENTIFIER: |
case Token::STATIC: |
- case Token::LET: // Yes, you can do let let = ... in sloppy mode |
+ case Token::LET: // `let let;` is disallowed by static semantics, but the |
+ // token must be first interpreted as a keyword in order |
+ // for those semantics to apply. This ensures that ASI is |
+ // not honored when a LineTerminator separates the |
+ // tokens. |
case Token::YIELD: |
case Token::AWAIT: |
case Token::ASYNC: |
return true; |
+ case Token::FUTURE_STRICT_RESERVED_WORD: |
+ return is_sloppy(language_mode()); |
default: |
return false; |
} |