Skip to content

Commit dd70fbd

Browse files
authored
fix(es/parser): Correctly handle EOF position (#10934)
**Related issue:** - Closes #10930
1 parent e44fbd4 commit dd70fbd

33 files changed

+23
-36
lines changed

.changeset/curvy-dancers-attend.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
swc_core: patch
3+
swc_ecma_parser: patch
4+
---
5+
6+
fix(es/parser): Correctly handle EOF position

crates/swc/tests/tsc-references/parserArrowFunctionExpression11.1.normal.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33
//! x Expected ':', got '<eof>'
44
//! ,-[1:1]
55
//! 1 | a ? b ? c : (d) : e => f // Legal JS
6-
//! : ^^
6+
//! : ^
77
//! 2 |
88
//! `----
99
//// [fileTs.ts]
1010
//! x Expected ':', got '<eof>'
1111
//! ,----
1212
//! 1 | a ? b ? c : (d) : e => f
13-
//! : ^^
13+
//! : ^
1414
//! `----

crates/swc/tests/tsc-references/parserArrowFunctionExpression11.2.minified.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33
//! x Expected ':', got '<eof>'
44
//! ,-[1:1]
55
//! 1 | a ? b ? c : (d) : e => f // Legal JS
6-
//! : ^^
6+
//! : ^
77
//! 2 |
88
//! `----
99
//// [fileTs.ts]
1010
//! x Expected ':', got '<eof>'
1111
//! ,----
1212
//! 1 | a ? b ? c : (d) : e => f
13-
//! : ^^
13+
//! : ^
1414
//! `----

crates/swc_ecma_parser/src/parser/input.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,9 @@ impl<'a, I: Tokens> swc_ecma_lexer::common::parser::buffer::Buffer<'a> for Buffe
259259
} else if let Some(next) = self.iter.next() {
260260
next
261261
} else {
262-
TokenAndSpan::new(Token::Eof, self.prev_span(), true)
262+
let eof_pos = self.cur.span().hi;
263+
let eof_span = Span::new_with_checked(eof_pos, eof_pos);
264+
TokenAndSpan::new(Token::Eof, eof_span, true)
263265
};
264266
self.set_prev_span(self.cur.span());
265267
self.set_cur(next);

crates/swc_ecma_parser/tests/jsx/errors/wrong-opening-tag-fragment/input.js.swc-stderr

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
x Expression expected
22
,-[$DIR/tests/jsx/errors/wrong-opening-tag-fragment/input.js:1:1]
33
1 | <something></>
4-
: ^^
4+
: ^
55
`----
66
x Expression expected
77
,-[$DIR/tests/jsx/errors/wrong-opening-tag-fragment/input.js:1:1]
Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
x Expected '}', got '<eof>'
22
,-[$DIR/tests/test262-parser/fail/021fb596db81e6d0.js:1:1]
33
1 | {
4-
: ^
54
`----
Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
x Expected ident
22
,-[$DIR/tests/test262-parser/fail/0889113e04d3203f.js:1:1]
33
1 | class
4-
: ^
54
`----
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
x Expected ident
22
,-[$DIR/tests/test262-parser/fail/0f175471e2f0c3d5.js:1:1]
33
1 | class
4-
: ^
4+
: ^
55
`----
Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
x Unexpected token `<eof>`. Expected identifier, string literal, numeric literal or [ for the computed key
22
,-[$DIR/tests/test262-parser/fail/1004b5fec18f14ec.js:1:1]
33
1 | 1 + { t:t,
4-
: ^
54
`----

crates/swc_ecma_parser/tests/test262-error-references/fail/2d1410e37ecc3647.js.swc-stderr

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
x Expected '{', got '<eof>'
22
,-[$DIR/tests/test262-parser/fail/2d1410e37ecc3647.js:1:1]
33
1 | function f(a, ...b = 0)
4-
: ^
54
`----
65
x A rest parameter cannot have an initializer
76
,-[$DIR/tests/test262-parser/fail/2d1410e37ecc3647.js:1:1]

0 commit comments

Comments
 (0)