Index: src/scanner.cc |
diff --git a/src/scanner.cc b/src/scanner.cc |
index 04712e9f32a8ea529cc3b02ff6210e4e0d2b6e91..bf03700a23712c4b7e66fd2b30ff634740940806 100644 |
--- a/src/scanner.cc |
+++ b/src/scanner.cc |
@@ -1499,6 +1499,30 @@ void Scanner::CopyTokenDesc(TokenDesc* to, TokenDesc* from) { |
} |
+bool Scanner::IsNextEscapedReservedWord(LanguageMode language_mode, |
+ bool is_generator, bool sloppy_let) { |
+ if (next_.token == Token::IDENTIFIER) { |
+ if (next_.literal_chars && next_.literal_chars->is_one_byte() && |
adamk
2015/11/03 23:00:57
Please join this if() into the one on the line abo
caitp (gmail)
2015/11/04 04:49:24
Done.
|
+ next_literal_contains_escapes(next_)) { |
adamk
2015/11/03 23:00:57
This won't compile, I'm guessing you can drop next
caitp (gmail)
2015/11/04 04:49:24
It was a last minute fixup, which failed because o
|
+ Vector<const uint8_t> chars = next_.literal_chars->one_byte_literal(); |
caitp (gmail)
2015/11/03 17:19:13
I don't think this allocates a copy of the string,
adamk
2015/11/03 23:00:57
You're correct that there's no copy here.
caitp (gmail)
2015/11/04 04:49:24
Acknowledged.
|
+ switch (KeywordOrIdentifierToken(chars.start(), chars.length())) { |
+ case Token::IDENTIFIER: |
+ return false; |
+ case Token::FUTURE_STRICT_RESERVED_WORD: |
+ return is_strict(language_mode); |
+ case Token::YIELD: |
+ return is_generator; |
+ case Token::LET: |
+ return sloppy_let || is_strict(language_mode); |
adamk
2015/11/03 23:00:57
My reading of the spec you pointed to is that LET
caitp (gmail)
2015/11/04 04:49:24
It was meant for the block underneath, but I guess
|
+ default: |
+ return true; |
+ } |
+ } |
+ } |
+ return false; |
+} |
+ |
+ |
int DuplicateFinder::AddOneByteSymbol(Vector<const uint8_t> key, int value) { |
return AddSymbol(key, true, value); |
} |