Fixed accidentally reused comments between files in the emitter (#61261)

Co-authored-by: michaelm <michael.mitchell@airtable.com>
This commit is contained in:
Mateusz Burzyński
2025-02-26 21:48:59 +01:00
committed by GitHub
parent afc463980f
commit b97eafbf3b
14 changed files with 374 additions and 10 deletions

View File

@@ -6207,6 +6207,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
const context = syntacticContext as NodeBuilderContext;
if (context.bundled || context.enclosingFile !== getSourceFileOfNode(lit)) {
let name = lit.text;
const originalName = name;
const nodeSymbol = getNodeLinks(parent).resolvedSymbol;
const meaning = parent.isTypeOf ? SymbolFlags.Value : SymbolFlags.Type;
const parentSymbol = nodeSymbol
@@ -6227,7 +6228,9 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
context.tracker.reportLikelyUnsafeImportRequiredError(name);
}
}
return name;
if (name !== originalName) {
return name;
}
}
},
canReuseTypeNode(context, typeNode) {
@@ -8831,10 +8834,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
return setTextRange(context, setEmitFlags(name, EmitFlags.NoAsciiEscaping), node);
}
const updated = visitEachChildWorker(node, c => attachSymbolToLeftmostIdentifier(c), /*context*/ undefined);
if (updated !== node) {
setTextRange(context, updated, node);
}
return updated;
return setTextRange(context, updated, node);
}
}

View File

@@ -435,9 +435,11 @@ export function createSyntacticTypeNodeBuilder(
if (!resolver.canReuseTypeNode(context, node)) {
return resolver.serializeExistingTypeNode(context, node);
}
const specifier = rewriteModuleSpecifier(node, node.argument.literal);
const literal = specifier === node.argument.literal ? reuseNode(context, node.argument.literal) : specifier;
return factory.updateImportTypeNode(
node,
factory.updateLiteralTypeNode(node.argument, rewriteModuleSpecifier(node, node.argument.literal)),
literal === node.argument.literal ? reuseNode(context, node.argument) : factory.createLiteralTypeNode(literal),
visitNode(node.attributes, visitExistingNodeTreeSymbols, isImportAttributes),
visitNode(node.qualifier, visitExistingNodeTreeSymbols, isEntityName),
visitNodes(node.typeArguments, visitExistingNodeTreeSymbols, isTypeNode),
@@ -612,10 +614,7 @@ export function createSyntacticTypeNodeBuilder(
function rewriteModuleSpecifier(parent: ImportTypeNode, lit: StringLiteral) {
const newName = resolver.getModuleSpecifierOverride(context, parent, lit);
if (newName) {
return setOriginalNode(factory.createStringLiteral(newName), lit);
}
return visitNode(lit, visitExistingNodeTreeSymbols, isStringLiteral)!;
return newName ? setOriginalNode(factory.createStringLiteral(newName), lit) : lit;
}
}
}