@@ -2328,7 +2328,15 @@ func (p *Printer) emitBindingElement(node *ast.BindingElement) {
2328
2328
// Old parser used `OmittedExpression` as a substitute for `Elision`. New parser uses a `BindingElement` with nil members
2329
2329
if name := node .Name (); name != nil {
2330
2330
p .emitBindingName (name )
2331
- p .emitInitializer (node .Initializer , node .Name ().End (), node .AsNode ())
2331
+ // Check if name is from the current source file to avoid cross-file position issues
2332
+ var equalTokenPos int
2333
+ if p .currentSourceFile != nil && ast .GetSourceFileOfNode (name ) == p .currentSourceFile {
2334
+ equalTokenPos = name .End ()
2335
+ } else {
2336
+ // Use contextNode's end position as fallback when name is from a different source file
2337
+ equalTokenPos = node .AsNode ().End ()
2338
+ }
2339
+ p .emitInitializer (node .Initializer , equalTokenPos , node .AsNode ())
2332
2340
}
2333
2341
p .exitNode (node .AsNode (), state )
2334
2342
}
@@ -3757,7 +3765,15 @@ func (p *Printer) emitCommonJSExport(node *ast.CommonJSExport) {
3757
3765
} else {
3758
3766
p .emitBindingName (node .Name ())
3759
3767
}
3760
- p .emitInitializer (node .Initializer , node .Name ().End (), node .AsNode ())
3768
+ // Check if name is from the current source file to avoid cross-file position issues
3769
+ var equalTokenPos int
3770
+ if p .currentSourceFile != nil && ast .GetSourceFileOfNode (node .Name ()) == p .currentSourceFile {
3771
+ equalTokenPos = node .Name ().End ()
3772
+ } else {
3773
+ // Use contextNode's end position as fallback when name is from a different source file
3774
+ equalTokenPos = node .AsNode ().End ()
3775
+ }
3776
+ p .emitInitializer (node .Initializer , equalTokenPos , node .AsNode ())
3761
3777
p .writeTrailingSemicolon ()
3762
3778
p .exitNode (node .AsNode (), state )
3763
3779
}
@@ -4308,7 +4324,15 @@ func (p *Printer) emitSpreadAssignment(node *ast.SpreadAssignment) {
4308
4324
func (p * Printer ) emitEnumMember (node * ast.EnumMember ) {
4309
4325
state := p .enterNode (node .AsNode ())
4310
4326
p .emitPropertyName (node .Name ())
4311
- p .emitInitializer (node .Initializer , node .Name ().End (), node .AsNode ())
4327
+ // Check if name is from the current source file to avoid cross-file position issues
4328
+ var equalTokenPos int
4329
+ if p .currentSourceFile != nil && ast .GetSourceFileOfNode (node .Name ()) == p .currentSourceFile {
4330
+ equalTokenPos = node .Name ().End ()
4331
+ } else {
4332
+ // Use contextNode's end position as fallback when name is from a different source file
4333
+ equalTokenPos = node .AsNode ().End ()
4334
+ }
4335
+ p .emitInitializer (node .Initializer , equalTokenPos , node .AsNode ())
4312
4336
p .exitNode (node .AsNode (), state )
4313
4337
}
4314
4338
0 commit comments