77)
88
99type NodeBuilder struct {
10- ctxStack []* NodeBuilderContext
11- host Host
12- impl * nodeBuilderImpl
10+ ctxStack []* NodeBuilderContext
11+ basicHost Host
12+ impl * nodeBuilderImpl
1313}
1414
1515// EmitContext implements NodeBuilderInterface.
@@ -32,10 +32,15 @@ func (b *NodeBuilder) enterContext(enclosingDeclaration *ast.Node, flags nodebui
3232 enclosingSymbolTypes : make (map [ast.SymbolId ]* Type ),
3333 remappedSymbolReferences : make (map [ast.SymbolId ]* ast.Symbol ),
3434 }
35- if tracker == nil {
36- tracker = NewSymbolTrackerImpl (b .impl .ctx , nil , b .host )
37- b .impl .ctx .tracker = tracker
35+ // TODO: always provide this; see https://github.com/microsoft/typescript-go/pull/1588#pullrequestreview-3125218673
36+ var moduleResolverHost Host
37+ if tracker != nil {
38+ moduleResolverHost = tracker .GetModuleSpecifierGenerationHost ()
39+ } else if internalFlags & nodebuilder .InternalFlagsDoNotIncludeSymbolChain != 0 {
40+ moduleResolverHost = b .basicHost
3841 }
42+ tracker = NewSymbolTrackerImpl (b .impl .ctx , tracker , moduleResolverHost )
43+ b .impl .ctx .tracker = tracker
3944}
4045
4146func (b * NodeBuilder ) popContext () {
@@ -173,7 +178,7 @@ func (b *NodeBuilder) TypeToTypeNode(typ *Type, enclosingDeclaration *ast.Node,
173178
174179func NewNodeBuilder (ch * Checker , e * printer.EmitContext ) * NodeBuilder {
175180 impl := newNodeBuilderImpl (ch , e )
176- return & NodeBuilder {impl : impl , ctxStack : make ([]* NodeBuilderContext , 0 , 1 ), host : ch .program }
181+ return & NodeBuilder {impl : impl , ctxStack : make ([]* NodeBuilderContext , 0 , 1 ), basicHost : ch .program }
177182}
178183
179184func (c * Checker ) getNodeBuilder () * NodeBuilder {
0 commit comments