Skip to content

Commit f246bba

Browse files
Port "Restore import defer = parsing"
Co-authored-by: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= <[email protected]>
1 parent 4965550 commit f246bba

File tree

123 files changed

+256
-1231
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

123 files changed

+256
-1231
lines changed

internal/parser/parser.go

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2109,11 +2109,21 @@ func (p *Parser) parseImportDeclarationOrImportEqualsDeclaration(pos int, hasJSD
21092109
if p.isIdentifier() {
21102110
identifier = p.parseIdentifier()
21112111
}
2112-
} else if identifier != nil && identifier.AsIdentifier().Text == "defer" && p.nextToken() != ast.KindFromKeyword {
2113-
phaseModifier = ast.KindDeferKeyword
2114-
identifier = nil
2115-
if p.isIdentifier() {
2116-
identifier = p.parseIdentifier()
2112+
} else if identifier != nil && identifier.AsIdentifier().Text == "defer" {
2113+
var shouldParseAsDeferModifier bool
2114+
if p.token == ast.KindFromKeyword {
2115+
shouldParseAsDeferModifier = !p.lookAhead(func(p *Parser) bool {
2116+
return p.nextTokenIsTokenStringLiteral()
2117+
})
2118+
} else {
2119+
shouldParseAsDeferModifier = p.token != ast.KindCommaToken && p.token != ast.KindEqualsToken
2120+
}
2121+
if shouldParseAsDeferModifier {
2122+
phaseModifier = ast.KindDeferKeyword
2123+
identifier = nil
2124+
if p.isIdentifier() {
2125+
identifier = p.parseIdentifier()
2126+
}
21172127
}
21182128
}
21192129
if identifier != nil && !p.tokenAfterImportedIdentifierDefinitelyProducesImportDeclaration() && phaseModifier != ast.KindDeferKeyword {

testdata/baselines/reference/submodule/conformance/importBindingDefer.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,4 @@ import defer from "./a.js";
1010
//// [a.js]
1111
export default 2;
1212
//// [b.js]
13-
import "./a.js";
13+
export {};

testdata/baselines/reference/submodule/conformance/importBindingDefer.js.diff

Lines changed: 0 additions & 8 deletions
This file was deleted.

testdata/baselines/reference/submodule/conformance/importBindingDefer.symbols

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@
55
export default 2;
66

77
=== b.ts ===
8-
98
import defer from "./a.js";
9+
>defer : Symbol(defer, Decl(b.ts, 0, 6))
1010

testdata/baselines/reference/submodule/conformance/importBindingDefer.symbols.diff

Lines changed: 0 additions & 9 deletions
This file was deleted.

testdata/baselines/reference/submodule/conformance/importBindingDefer.types

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@
55
export default 2;
66

77
=== b.ts ===
8-
98
import defer from "./a.js";
9+
>defer : 2
1010

testdata/baselines/reference/submodule/conformance/importBindingDefer.types.diff

Lines changed: 0 additions & 9 deletions
This file was deleted.

testdata/baselines/reference/submodule/conformance/importBindingDefer2.errors.txt

Lines changed: 0 additions & 11 deletions
This file was deleted.

testdata/baselines/reference/submodule/conformance/importBindingDefer2.errors.txt.diff

Lines changed: 0 additions & 15 deletions
This file was deleted.

testdata/baselines/reference/submodule/conformance/importBindingDefer2.symbols

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@
55
export default 2;
66

77
=== b.ts ===
8-
98
import defer, {} from "./a.js";
9+
>defer : Symbol(defer, Decl(b.ts, 0, 6))
1010

0 commit comments

Comments
 (0)