Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit ae90bcc

Browse filesBrowse files
mmarchiniMylesBorins
authored andcommitted
deps: V8: cherry-pick f9257802c1c0
Original commit message: Fix scanner-level error reporting for hashbang When the file begins with a hashbang, the scanner is in a failed state when SkipHashbang() is called. This is usually not an issue but when the parser encounters an ILLEGAL token, it will reset the SyntaxError location because of it. Bug: v8:10110 Change-Id: I1c7344bf5ad20079cff80130c991f3bff4d7e9a8 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1995312 Reviewed-by: Toon Verwaest <verwaest@chromium.org> Commit-Queue: Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#66038} Refs: v8/v8@f925780 Fixes: #31284 Signed-off-by: Matheus Marchini <mmarchini@netflix.com> PR-URL: #32180 Reviewed-By: Gus Caplan <me@gus.host> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
1 parent fd80c21 commit ae90bcc
Copy full SHA for ae90bcc

File tree

Expand file treeCollapse file tree

8 files changed

+22
-16
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

8 files changed

+22
-16
lines changed
Open diff view settings
Collapse file

‎common.gypi‎

Copy file name to clipboardExpand all lines: common.gypi
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535

3636
# Reset this number to 0 on major V8 upgrades.
3737
# Increment by one for each non-official patch applied to deps/v8.
38-
'v8_embedder_string': '-node.29',
38+
'v8_embedder_string': '-node.30',
3939

4040
##### V8 defaults for Node.js #####
4141

Collapse file

‎deps/v8/src/parsing/parser.cc‎

Copy file name to clipboardExpand all lines: deps/v8/src/parsing/parser.cc
-1Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -503,7 +503,6 @@ FunctionLiteral* Parser::ParseProgram(Isolate* isolate, ParseInfo* info) {
503503
Scope::DeserializationMode::kIncludingVariables);
504504

505505
scanner_.Initialize();
506-
scanner_.SkipHashBang();
507506
FunctionLiteral* result = DoParseProgram(isolate, info);
508507
MaybeResetCharacterStream(info, result);
509508
MaybeProcessSourceRanges(info, result, stack_limit_);
Collapse file

‎deps/v8/src/parsing/preparser.cc‎

Copy file name to clipboardExpand all lines: deps/v8/src/parsing/preparser.cc
-4Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,10 +74,6 @@ PreParser::PreParseResult PreParser::PreParseProgram() {
7474
scope->set_is_being_lazily_parsed(true);
7575
#endif
7676

77-
// Note: We should only skip the hashbang in non-Eval scripts
78-
// (currently, Eval is not handled by the PreParser).
79-
scanner()->SkipHashBang();
80-
8177
// ModuleDeclarationInstantiation for Source Text Module Records creates a
8278
// new Module Environment Record whose outer lexical environment record is
8379
// the global scope.
Collapse file

‎deps/v8/src/parsing/scanner-inl.h‎

Copy file name to clipboardExpand all lines: deps/v8/src/parsing/scanner-inl.h
+4Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -505,6 +505,10 @@ V8_INLINE Token::Value Scanner::ScanSingleToken() {
505505
return ScanTemplateSpan();
506506

507507
case Token::PRIVATE_NAME:
508+
if (source_pos() == 0 && Peek() == '!') {
509+
token = SkipSingleLineComment();
510+
continue;
511+
}
508512
return ScanPrivateName();
509513

510514
case Token::WHITESPACE:
Collapse file

‎deps/v8/src/parsing/scanner.cc‎

Copy file name to clipboardExpand all lines: deps/v8/src/parsing/scanner.cc
-7Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -314,13 +314,6 @@ Token::Value Scanner::SkipMultiLineComment() {
314314
return Token::ILLEGAL;
315315
}
316316

317-
void Scanner::SkipHashBang() {
318-
if (c0_ == '#' && Peek() == '!' && source_pos() == 0) {
319-
SkipSingleLineComment();
320-
Scan();
321-
}
322-
}
323-
324317
Token::Value Scanner::ScanHtmlComment() {
325318
// Check for <!-- comments.
326319
DCHECK_EQ(c0_, '!');
Collapse file

‎deps/v8/src/parsing/scanner.h‎

Copy file name to clipboardExpand all lines: deps/v8/src/parsing/scanner.h
-3Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -421,9 +421,6 @@ class V8_EXPORT_PRIVATE Scanner {
421421

422422
const Utf16CharacterStream* stream() const { return source_; }
423423

424-
// If the next characters in the stream are "#!", the line is skipped.
425-
void SkipHashBang();
426-
427424
private:
428425
// Scoped helper for saving & restoring scanner error state.
429426
// This is used for tagged template literals, in which normally forbidden
Collapse file
+12Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#!/usr/bin/env d8
2+
// Copyright 2015 the V8 project authors. All rights reserved.
3+
// Use of this source code is governed by a BSD-style license that can be
4+
// found in the LICENSE file.
5+
//
6+
//
7+
8+
const x = 'valid code';
9+
10+
'incomplete string
11+
12+
const y = 'even more valid code!';
Collapse file
+5Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
*%(basename)s:10: SyntaxError: Invalid or unexpected token
2+
'incomplete string
3+
^^^^^^^^^^^^^^^^^^
4+
5+
SyntaxError: Invalid or unexpected token

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.