Skip to content

Commit 07e14a4

Browse files
committed
refactor(semantic): remove redundant code handling reference flags (#12043)
This PR is a follow-up to #11990. After `AstKind::TSTypeName` has been removed, a lot of prior handling of the kind can be removed. The semantic snapshot changes are expected, caused by #12042.
1 parent f1d4086 commit 07e14a4

File tree

3 files changed

+34
-37
lines changed

3 files changed

+34
-37
lines changed

crates/oxc_semantic/src/builder.rs

Lines changed: 7 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -2014,9 +2014,6 @@ impl<'a> SemanticBuilder<'a> {
20142014
AstKind::TSTypeParameter(type_parameter) => {
20152015
type_parameter.bind(self);
20162016
}
2017-
AstKind::TSInterfaceHeritage(_) => {
2018-
self.current_reference_flags = ReferenceFlags::Type;
2019-
}
20202017
AstKind::TSPropertySignature(signature) => {
20212018
if signature.key.is_expression() {
20222019
// interface A { [prop]: string }
@@ -2029,33 +2026,18 @@ impl<'a> SemanticBuilder<'a> {
20292026
// ^^^^^^^^
20302027
self.current_reference_flags = ReferenceFlags::ValueAsType;
20312028
}
2032-
AstKind::TSTypeParameterInstantiation(_) => {
2033-
// type A<T> = typeof a<T>;
2034-
// ^^^ avoid treat T as a value and TSTypeQuery
2035-
self.current_reference_flags -= ReferenceFlags::ValueAsType;
2036-
}
2037-
AstKind::TSClassImplements(_) | AstKind::TSTypeReference(_) => {
2038-
// type X = SomeType;
2039-
// ^^^^^^^^
2029+
AstKind::TSInterfaceHeritage(_)
2030+
| AstKind::TSClassImplements(_)
2031+
| AstKind::TSTypeReference(_) => {
2032+
// interface A extends B {}
2033+
// ^^^^^^^^^
20402034
//
20412035
// class A implements B {}
20422036
// ^^^^^^^^^^^^
2043-
//
2044-
// let X: import('module').Y;
2045-
// ^^^^^^^^^^^^^^^^
2046-
if !self.current_reference_flags.is_value_as_type() {
2047-
self.current_reference_flags = ReferenceFlags::Type;
2048-
}
2037+
2038+
self.current_reference_flags = ReferenceFlags::Type;
20492039
}
20502040
AstKind::IdentifierReference(ident) => {
2051-
if let Some(AstKind::TSImportType(_)) = self.nodes.parent_kind(self.current_node_id)
2052-
{
2053-
// let X: import('module').X
2054-
// ^
2055-
// We don't want to treat this as a value reference.
2056-
self.current_reference_flags = ReferenceFlags::Type;
2057-
}
2058-
20592041
self.reference_identifier(ident);
20602042
}
20612043
AstKind::LabeledStatement(stmt) => {
@@ -2093,12 +2075,6 @@ impl<'a> SemanticBuilder<'a> {
20932075
AstKind::CatchParameter(_) => {
20942076
self.resolve_references_for_current_scope();
20952077
}
2096-
AstKind::IdentifierReference(_) | AstKind::TSQualifiedName(_) => {
2097-
if matches!(self.nodes.parent_kind(self.current_node_id), Some(AstKind::TSImportType(_) | AstKind::TSTypeReference(_) | AstKind::TSClassImplements(_))) {
2098-
// Clear the type reference flags that were set in `enter_kind` for these kinds.
2099-
self.current_reference_flags -= ReferenceFlags::Type;
2100-
}
2101-
}
21022078
AstKind::TSTypeQuery(_)
21032079
// Clear the reference flags that are set in AstKind::PropertySignature
21042080
| AstKind::PropertyKey(_) => {

tasks/coverage/snapshots/semantic_babel.snap

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -176,13 +176,19 @@ after transform: SymbolId(0): SymbolFlags(RegularEnum)
176176
rebuilt : SymbolId(0): SymbolFlags(FunctionScopedVariable)
177177

178178
semantic Error: tasks/coverage/babel/packages/babel-parser/test/fixtures/estree/typescript/import/input.js
179+
Symbol reference IDs mismatch for "Y":
180+
after transform: SymbolId(1): [ReferenceId(0)]
181+
rebuilt : SymbolId(1): []
179182
Unresolved references mismatch:
180-
after transform: ["Y", "foo"]
183+
after transform: ["foo"]
181184
rebuilt : []
182185

183186
semantic Error: tasks/coverage/babel/packages/babel-parser/test/fixtures/estree/typescript/import-babel-7/input.js
187+
Symbol reference IDs mismatch for "Y":
188+
after transform: SymbolId(1): [ReferenceId(0)]
189+
rebuilt : SymbolId(1): []
184190
Unresolved references mismatch:
185-
after transform: ["Y", "foo"]
191+
after transform: ["foo"]
186192
rebuilt : []
187193

188194
semantic Error: tasks/coverage/babel/packages/babel-parser/test/fixtures/estree/typescript/import-dot-this/input.js
@@ -196,13 +202,19 @@ after transform: ["this"]
196202
rebuilt : []
197203

198204
semantic Error: tasks/coverage/babel/packages/babel-parser/test/fixtures/estree/typescript/import-with-options/input.js
205+
Symbol reference IDs mismatch for "Y":
206+
after transform: SymbolId(1): [ReferenceId(0)]
207+
rebuilt : SymbolId(1): []
199208
Unresolved references mismatch:
200-
after transform: ["Y", "foo"]
209+
after transform: ["foo"]
201210
rebuilt : []
202211

203212
semantic Error: tasks/coverage/babel/packages/babel-parser/test/fixtures/estree/typescript/import-with-options-babel-7/input.js
213+
Symbol reference IDs mismatch for "Y":
214+
after transform: SymbolId(1): [ReferenceId(0)]
215+
rebuilt : SymbolId(1): []
204216
Unresolved references mismatch:
205-
after transform: ["Y", "foo"]
217+
after transform: ["foo"]
206218
rebuilt : []
207219

208220
semantic Error: tasks/coverage/babel/packages/babel-parser/test/fixtures/estree/typescript/instantiation-expression-optional-chain/input.ts
@@ -2677,13 +2689,19 @@ after transform: ScopeId(0): ["A", "B", "T", "Types"]
26772689
rebuilt : ScopeId(0): []
26782690
26792691
semantic Error: tasks/coverage/babel/packages/babel-parser/test/fixtures/typescript/types/import-type-dynamic/input.ts
2692+
Symbol reference IDs mismatch for "Y":
2693+
after transform: SymbolId(1): [ReferenceId(0)]
2694+
rebuilt : SymbolId(1): []
26802695
Unresolved references mismatch:
2681-
after transform: ["Y", "foo"]
2696+
after transform: ["foo"]
26822697
rebuilt : []
26832698
26842699
semantic Error: tasks/coverage/babel/packages/babel-parser/test/fixtures/typescript/types/import-type-dynamic-babel-7/input.ts
2700+
Symbol reference IDs mismatch for "Y":
2701+
after transform: SymbolId(1): [ReferenceId(0)]
2702+
rebuilt : SymbolId(1): []
26852703
Unresolved references mismatch:
2686-
after transform: ["Y", "foo"]
2704+
after transform: ["foo"]
26872705
rebuilt : []
26882706
26892707
semantic Error: tasks/coverage/babel/packages/babel-parser/test/fixtures/typescript/types/indexed/input.ts

tasks/coverage/snapshots/semantic_typescript.snap

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47344,6 +47344,9 @@ semantic Error: tasks/coverage/typescript/tests/cases/conformance/moduleResoluti
4734447344
Bindings mismatch:
4734547345
after transform: ScopeId(0): ["User", "getUser", "user"]
4734647346
rebuilt : ScopeId(0): ["getUser", "user"]
47347+
Unresolved references mismatch:
47348+
after transform: ["User"]
47349+
rebuilt : []
4734747350

4734847351
semantic Error: tasks/coverage/typescript/tests/cases/conformance/moduleResolution/bundler/bundlerDirectoryModule.ts
4734947352
Bindings mismatch:

0 commit comments

Comments
 (0)