[V8] Use previous token location as EOS token location
authorkozyatinskiy <kozyatinskiy@chromium.org>
Thu, 30 Apr 2015 12:44:52 +0000 (05:44 -0700)
committerCommit bot <commit-bot@chromium.org>
Thu, 30 Apr 2015 12:44:54 +0000 (12:44 +0000)
EOS token location is useless for users and messages.js are not ready for its location.
With this CL we use location of token before EOS for it.

LOG=Y
BUG=chromium:480652
R=yurys@chromium.org,yangguo@chromium.org

Review URL: https://codereview.chromium.org/1100993003

Cr-Commit-Position: refs/heads/master@{#28164}

src/scanner.cc
test/cctest/test-api.cc

index 1dae1e42cd4c8f726cf95916205066782dc35fcd..6187c6605edfc705e8fcacb503ba4ad2014c5e83 100644 (file)
@@ -225,6 +225,10 @@ static const byte one_char_tokens[] = {
 
 
 Token::Value Scanner::Next() {
+  if (next_.token == Token::EOS) {
+    next_.location.beg_pos = current_.location.beg_pos;
+    next_.location.end_pos = current_.location.end_pos;
+  }
   current_ = next_;
   has_line_terminator_before_next_ = false;
   has_multiline_comment_before_next_ = false;
index f54428875c88bd95185d87015ce01a36da22c60f..64583e67d83cf706bbf2c235151c18300544a7f9 100644 (file)
@@ -12565,6 +12565,18 @@ THREADED_TEST(TryCatchSourceInfo) {
 }
 
 
+THREADED_TEST(TryCatchSourceInfoForEOSError) {
+  LocalContext context;
+  v8::HandleScope scope(context->GetIsolate());
+  v8::TryCatch try_catch;
+  v8::Script::Compile(v8_str("!\n"));
+  CHECK(try_catch.HasCaught());
+  v8::Handle<v8::Message> message = try_catch.Message();
+  CHECK_EQ(1, message->GetLineNumber());
+  CHECK_EQ(0, message->GetStartColumn());
+}
+
+
 THREADED_TEST(CompilationCache) {
   LocalContext context;
   v8::HandleScope scope(context->GetIsolate());