Skip to content

Commit 6072f10

Browse files
authored
Save off another closure in emitResolver (#1311)
1 parent 89593d5 commit 6072f10

File tree

2 files changed

+11
-6
lines changed

2 files changed

+11
-6
lines changed

internal/checker/checker.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30574,7 +30574,7 @@ func (c *Checker) GetTypeAtLocation(node *ast.Node) *Type {
3057430574

3057530575
func (c *Checker) GetEmitResolver(file *ast.SourceFile) *emitResolver {
3057630576
c.emitResolverOnce.Do(func() {
30577-
c.emitResolver = &emitResolver{checker: c}
30577+
c.emitResolver = newEmitResolver(c)
3057830578
})
3057930579

3058030580
return c.emitResolver

internal/checker/emitresolver.go

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import (
1414
"github.com/microsoft/typescript-go/internal/printer"
1515
)
1616

17-
var _ printer.EmitResolver = &emitResolver{}
17+
var _ printer.EmitResolver = (*emitResolver)(nil)
1818

1919
// Links for jsx
2020
type JSXLinks struct {
@@ -35,12 +35,20 @@ type emitResolver struct {
3535
checker *Checker
3636
checkerMu sync.Mutex
3737
isValueAliasDeclaration func(node *ast.Node) bool
38+
aliasMarkingVisitor func(node *ast.Node) bool
3839
referenceResolver binder.ReferenceResolver
3940
jsxLinks core.LinkStore[*ast.Node, JSXLinks]
4041
declarationLinks core.LinkStore[*ast.Node, DeclarationLinks]
4142
declarationFileLinks core.LinkStore[*ast.Node, DeclarationFileLinks]
4243
}
4344

45+
func newEmitResolver(checker *Checker) *emitResolver {
46+
e := &emitResolver{checker: checker}
47+
e.isValueAliasDeclaration = e.isValueAliasDeclarationWorker
48+
e.aliasMarkingVisitor = e.aliasMarkingVisitorWorker
49+
return e
50+
}
51+
4452
func (r *emitResolver) GetJsxFactoryEntity(location *ast.Node) *ast.Node {
4553
r.checkerMu.Lock()
4654
defer r.checkerMu.Unlock()
@@ -227,7 +235,7 @@ func (r *emitResolver) PrecalculateDeclarationEmitVisibility(file *ast.SourceFil
227235
file.AsNode().ForEachChild(r.aliasMarkingVisitor)
228236
}
229237

230-
func (r *emitResolver) aliasMarkingVisitor(node *ast.Node) bool {
238+
func (r *emitResolver) aliasMarkingVisitorWorker(node *ast.Node) bool {
231239
switch node.Kind {
232240
case ast.KindExportAssignment, ast.KindJSExportAssignment:
233241
if node.AsExportAssignment().Expression.Kind == ast.KindIdentifier {
@@ -670,9 +678,6 @@ func (r *emitResolver) isValueAliasDeclarationWorker(node *ast.Node) bool {
670678
return symbol != nil && r.isAliasResolvedToValue(symbol, true /*excludeTypeOnlyValues*/)
671679
case ast.KindExportDeclaration:
672680
exportClause := node.AsExportDeclaration().ExportClause
673-
if r.isValueAliasDeclaration == nil {
674-
r.isValueAliasDeclaration = r.isValueAliasDeclarationWorker
675-
}
676681
return exportClause != nil && (ast.IsNamespaceExport(exportClause) ||
677682
core.Some(exportClause.AsNamedExports().Elements.Nodes, r.isValueAliasDeclaration))
678683
case ast.KindExportAssignment, ast.KindJSExportAssignment:

0 commit comments

Comments
 (0)