Index: src/scanner-base.cc |
diff --git a/src/scanner-base.cc b/src/scanner-base.cc |
index 89591baa243e003247e44ae4145b819590b8efce..262f4edd8f868b6680eaa826a3f0575c36ad0da5 100644 |
--- a/src/scanner-base.cc |
+++ b/src/scanner-base.cc |
@@ -80,6 +80,7 @@ JavaScriptScanner::JavaScriptScanner(UnicodeCache* scanner_contants) |
Token::Value JavaScriptScanner::Next() { |
current_ = next_; |
has_line_terminator_before_next_ = false; |
+ has_multiline_comment_before_next_ = false; |
Scan(); |
return current_.token; |
} |
@@ -163,11 +164,13 @@ Token::Value JavaScriptScanner::SkipMultiLineComment() { |
if (unicode_cache_->IsLineTerminator(ch)) { |
// Following ECMA-262, section 7.4, a comment containing |
// a newline will make the comment count as a line-terminator. |
- has_line_terminator_before_next_ = true; |
+ has_multiline_comment_before_next_ = true; |
} |
// If we have reached the end of the multi-line comment, we |
// consume the '/' and insert a whitespace. This way all |
- // multi-line comments are treated as whitespace. |
+ // multi-line comments are treated as whitespace (except |
+ // when checking whether there is non-whitespace before a |
William Hesse
2011/06/21 12:38:54
This addition is wrong. They are treated as white
Lasse Reichstein
2011/06/21 13:05:37
Fixed.
|
+ // --> comment). |
if (ch == '*' && c0_ == '/') { |
c0_ = ' '; |
return Token::WHITESPACE; |
@@ -449,6 +452,7 @@ void JavaScriptScanner::SeekForward(int pos) { |
// of the end of a function (at the "}" token). It doesn't matter |
// whether there was a line terminator in the part we skip. |
has_line_terminator_before_next_ = false; |
+ has_multiline_comment_before_next_ = false; |
} |
Scan(); |
} |