7
7
)
8
8
9
9
type NodeBuilder struct {
10
- ctxStack []* NodeBuilderContext
11
- host Host
12
- impl * nodeBuilderImpl
10
+ ctxStack []* NodeBuilderContext
11
+ basicHost Host
12
+ impl * nodeBuilderImpl
13
13
}
14
14
15
15
// EmitContext implements NodeBuilderInterface.
@@ -32,10 +32,15 @@ func (b *NodeBuilder) enterContext(enclosingDeclaration *ast.Node, flags nodebui
32
32
enclosingSymbolTypes : make (map [ast.SymbolId ]* Type ),
33
33
remappedSymbolReferences : make (map [ast.SymbolId ]* ast.Symbol ),
34
34
}
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
38
41
}
42
+ tracker = NewSymbolTrackerImpl (b .impl .ctx , tracker , moduleResolverHost )
43
+ b .impl .ctx .tracker = tracker
39
44
}
40
45
41
46
func (b * NodeBuilder ) popContext () {
@@ -173,7 +178,7 @@ func (b *NodeBuilder) TypeToTypeNode(typ *Type, enclosingDeclaration *ast.Node,
173
178
174
179
func NewNodeBuilder (ch * Checker , e * printer.EmitContext ) * NodeBuilder {
175
180
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 }
177
182
}
178
183
179
184
func (c * Checker ) getNodeBuilder () * NodeBuilder {
0 commit comments