@@ -18,7 +18,7 @@ and limitations under the License.
1818
1919// src/compiler/corePublic.ts
2020var versionMajorMinor = "5.8";
21- var version = "5.8.2 ";
21+ var version = "5.8.3 ";
2222
2323// src/compiler/core.ts
2424var emptyArray = [];
@@ -50405,10 +50405,11 @@ function createTypeChecker(host) {
5040550405 serializeExistingTypeNode(context, typeNode, addUndefined) {
5040650406 return serializeExistingTypeNode(context, typeNode, !!addUndefined);
5040750407 },
50408- serializeReturnTypeForSignature(syntacticContext, signatureDeclaration) {
50408+ serializeReturnTypeForSignature(syntacticContext, signatureDeclaration, symbol ) {
5040950409 const context = syntacticContext;
5041050410 const signature = getSignatureFromDeclaration(signatureDeclaration);
50411- const returnType = context.enclosingSymbolTypes.get(getSymbolId(getSymbolOfDeclaration(signatureDeclaration))) ?? instantiateType(getReturnTypeOfSignature(signature), context.mapper);
50411+ symbol ?? (symbol = getSymbolOfDeclaration(signatureDeclaration));
50412+ const returnType = context.enclosingSymbolTypes.get(getSymbolId(symbol)) ?? instantiateType(getReturnTypeOfSignature(signature), context.mapper);
5041250413 return serializeInferredReturnTypeForSignature(context, signature, returnType);
5041350414 },
5041450415 serializeTypeOfExpression(syntacticContext, expr) {
@@ -50422,7 +50423,7 @@ function createTypeChecker(host) {
5042250423 symbol ?? (symbol = getSymbolOfDeclaration(declaration));
5042350424 let type = (_a = context.enclosingSymbolTypes) == null ? void 0 : _a.get(getSymbolId(symbol));
5042450425 if (type === void 0) {
50425- type = symbol && !(symbol.flags & (2048 /* TypeLiteral */ | 131072 /* Signature */)) ? instantiateType(getWidenedLiteralType(getTypeOfSymbol(symbol)), context.mapper) : errorType;
50426+ type = symbol.flags & 98304 /* Accessor */ && declaration.kind === 178 /* SetAccessor */ ? instantiateType(getWriteTypeOfSymbol(symbol), context.mapper) : symbol && !(symbol.flags & (2048 /* TypeLiteral */ | 131072 /* Signature */)) ? instantiateType(getWidenedLiteralType(getTypeOfSymbol(symbol)), context.mapper) : errorType;
5042650427 }
5042750428 const addUndefinedForParameter = declaration && (isParameter(declaration) || isJSDocParameterTag(declaration)) && requiresAddingImplicitUndefined(declaration, context.enclosingDeclaration);
5042850429 if (addUndefinedForParameter) {
@@ -50482,6 +50483,7 @@ function createTypeChecker(host) {
5048250483 const context = syntacticContext;
5048350484 if (context.bundled || context.enclosingFile !== getSourceFileOfNode(lit)) {
5048450485 let name = lit.text;
50486+ const originalName = name;
5048550487 const nodeSymbol = getNodeLinks(parent).resolvedSymbol;
5048650488 const meaning = parent.isTypeOf ? 111551 /* Value */ : 788968 /* Type */;
5048750489 const parentSymbol = nodeSymbol && isSymbolAccessible(
@@ -50511,7 +50513,9 @@ function createTypeChecker(host) {
5051150513 context.tracker.reportLikelyUnsafeImportRequiredError(name);
5051250514 }
5051350515 }
50514- return name;
50516+ if (name !== originalName) {
50517+ return name;
50518+ }
5051550519 }
5051650520 },
5051750521 canReuseTypeNode(context, typeNode) {
@@ -51568,12 +51572,13 @@ function createTypeChecker(host) {
5156851572 if (propertySymbol.flags & 98304 /* Accessor */) {
5156951573 const writeType = getWriteTypeOfSymbol(propertySymbol);
5157051574 if (propertyType !== writeType && !isErrorType(propertyType) && !isErrorType(writeType)) {
51575+ const symbolMapper = getSymbolLinks(propertySymbol).mapper;
5157151576 const getterDeclaration = getDeclarationOfKind(propertySymbol, 177 /* GetAccessor */);
5157251577 const getterSignature = getSignatureFromDeclaration(getterDeclaration);
5157351578 typeElements.push(
5157451579 setCommentRange2(
5157551580 context,
51576- signatureToSignatureDeclarationHelper(getterSignature, 177 /* GetAccessor */, context, { name: propertyName }),
51581+ signatureToSignatureDeclarationHelper(symbolMapper ? instantiateSignature(getterSignature, symbolMapper) : getterSignature, 177 /* GetAccessor */, context, { name: propertyName }),
5157751582 getterDeclaration
5157851583 )
5157951584 );
@@ -51582,7 +51587,7 @@ function createTypeChecker(host) {
5158251587 typeElements.push(
5158351588 setCommentRange2(
5158451589 context,
51585- signatureToSignatureDeclarationHelper(setterSignature, 178 /* SetAccessor */, context, { name: propertyName }),
51590+ signatureToSignatureDeclarationHelper(symbolMapper ? instantiateSignature(setterSignature, symbolMapper) : setterSignature, 178 /* SetAccessor */, context, { name: propertyName }),
5158651591 setterDeclaration
5158751592 )
5158851593 );
@@ -52725,13 +52730,13 @@ function createTypeChecker(host) {
5272552730 const addUndefinedForParameter = declaration && (isParameter(declaration) || isJSDocParameterTag(declaration)) && requiresAddingImplicitUndefined(declaration, context.enclosingDeclaration);
5272652731 const decl = declaration ?? symbol.valueDeclaration ?? getDeclarationWithTypeAnnotation(symbol) ?? ((_a = symbol.declarations) == null ? void 0 : _a[0]);
5272752732 if (decl) {
52733+ const restore = addSymbolTypeToContext(context, symbol, type);
5272852734 if (isAccessor(decl)) {
5272952735 result = syntacticNodeBuilder.serializeTypeOfAccessor(decl, symbol, context);
5273052736 } else if (hasInferredType(decl) && !nodeIsSynthesized(decl) && !(getObjectFlags(type) & 196608 /* RequiresWidening */)) {
52731- const restore = addSymbolTypeToContext(context, symbol, type);
5273252737 result = syntacticNodeBuilder.serializeTypeOfDeclaration(decl, symbol, context);
52733- restore();
5273452738 }
52739+ restore();
5273552740 }
5273652741 if (!result) {
5273752742 if (addUndefinedForParameter) {
@@ -52885,10 +52890,7 @@ function createTypeChecker(host) {
5288552890 /*context*/
5288652891 void 0
5288752892 );
52888- if (updated !== node2) {
52889- setTextRange2(context, updated, node2);
52890- }
52891- return updated;
52893+ return setTextRange2(context, updated, node2);
5289252894 }
5289352895 }
5289452896 function serializeTypeName(context, node, isTypeOf, typeArguments) {
@@ -76781,6 +76783,11 @@ function createTypeChecker(host) {
7678176783 if (file && fileExtensionIsOneOf(file.fileName, [".cts" /* Cts */, ".mts" /* Mts */])) {
7678276784 grammarErrorOnNode(node, Diagnostics.This_syntax_is_reserved_in_files_with_the_mts_or_cts_extension_Use_an_as_expression_instead);
7678376785 }
76786+ if (compilerOptions.erasableSyntaxOnly) {
76787+ const start = skipTrivia(file.text, node.pos);
76788+ const end = node.expression.pos;
76789+ diagnostics.add(createFileDiagnostic(file, start, end - start, Diagnostics.This_syntax_is_not_allowed_when_erasableSyntaxOnly_is_enabled));
76790+ }
7678476791 }
7678576792 return checkAssertionWorker(node, checkMode);
7678676793 }
@@ -131862,9 +131869,11 @@ function createSyntacticTypeNodeBuilder(options, resolver) {
131862131869 if (!resolver.canReuseTypeNode(context, node)) {
131863131870 return resolver.serializeExistingTypeNode(context, node);
131864131871 }
131872+ const specifier = rewriteModuleSpecifier2(node, node.argument.literal);
131873+ const literal = specifier === node.argument.literal ? reuseNode(context, node.argument.literal) : specifier;
131865131874 return factory.updateImportTypeNode(
131866131875 node,
131867- factory.updateLiteralTypeNode( node.argument, rewriteModuleSpecifier2(node , node.argument. literal) ),
131876+ literal === node.argument.literal ? reuseNode(context , node.argument) : factory.createLiteralTypeNode( literal),
131868131877 visitNode(node.attributes, visitExistingNodeTreeSymbols, isImportAttributes),
131869131878 visitNode(node.qualifier, visitExistingNodeTreeSymbols, isEntityName),
131870131879 visitNodes2(node.typeArguments, visitExistingNodeTreeSymbols, isTypeNode),
@@ -132019,10 +132028,7 @@ function createSyntacticTypeNodeBuilder(options, resolver) {
132019132028 }
132020132029 function rewriteModuleSpecifier2(parent, lit) {
132021132030 const newName = resolver.getModuleSpecifierOverride(context, parent, lit);
132022- if (newName) {
132023- return setOriginalNode(factory.createStringLiteral(newName), lit);
132024- }
132025- return visitNode(lit, visitExistingNodeTreeSymbols, isStringLiteral);
132031+ return newName ? setOriginalNode(factory.createStringLiteral(newName), lit) : lit;
132026132032 }
132027132033 }
132028132034 }
@@ -132189,12 +132195,7 @@ function createSyntacticTypeNodeBuilder(options, resolver) {
132189132195 return withNewScope(context, node, () => serializeTypeAnnotationOfDeclaration(accessorType, context, node, symbol) ?? inferTypeOfDeclaration(node, symbol, context));
132190132196 }
132191132197 if (accessorDeclarations.getAccessor) {
132192- return withNewScope(context, accessorDeclarations.getAccessor, () => createReturnFromSignature(
132193- accessorDeclarations.getAccessor,
132194- /*symbol*/
132195- void 0,
132196- context
132197- ));
132198+ return withNewScope(context, accessorDeclarations.getAccessor, () => createReturnFromSignature(accessorDeclarations.getAccessor, symbol, context));
132198132199 }
132199132200 return void 0;
132200132201 }
@@ -132304,14 +132305,14 @@ function createSyntacticTypeNodeBuilder(options, resolver) {
132304132305 }
132305132306 return resolver.serializeTypeOfExpression(context, node) ?? factory.createKeywordTypeNode(133 /* AnyKeyword */);
132306132307 }
132307- function inferReturnTypeOfSignatureSignature(node, context, reportFallback) {
132308+ function inferReturnTypeOfSignatureSignature(node, context, symbol, reportFallback) {
132308132309 if (reportFallback) {
132309132310 context.tracker.reportInferenceFallback(node);
132310132311 }
132311132312 if (context.noInferenceFallback === true) {
132312132313 return factory.createKeywordTypeNode(133 /* AnyKeyword */);
132313132314 }
132314- return resolver.serializeReturnTypeForSignature(context, node) ?? factory.createKeywordTypeNode(133 /* AnyKeyword */);
132315+ return resolver.serializeReturnTypeForSignature(context, node, symbol ) ?? factory.createKeywordTypeNode(133 /* AnyKeyword */);
132315132316 }
132316132317 function inferAccessorType(node, allAccessors, context, symbol, reportFallback = true) {
132317132318 if (node.kind === 177 /* GetAccessor */) {
@@ -132601,18 +132602,17 @@ function createSyntacticTypeNodeBuilder(options, resolver) {
132601132602 );
132602132603 }
132603132604 function reuseTypeParameters(typeParameters, context) {
132604- return typeParameters == null ? void 0 : typeParameters.map(
132605- (tp) => {
132606- var _a;
132607- return factory.updateTypeParameterDeclaration(
132608- tp,
132609- (_a = tp.modifiers) == null ? void 0 : _a.map((m) => reuseNode(context, m)),
132610- reuseNode(context, tp.name),
132611- serializeExistingTypeNodeWithFallback(tp.constraint, context),
132612- serializeExistingTypeNodeWithFallback(tp.default, context)
132613- );
132614- }
132615- );
132605+ return typeParameters == null ? void 0 : typeParameters.map((tp) => {
132606+ var _a;
132607+ const { node: tpName } = resolver.trackExistingEntityName(context, tp.name);
132608+ return factory.updateTypeParameterDeclaration(
132609+ tp,
132610+ (_a = tp.modifiers) == null ? void 0 : _a.map((m) => reuseNode(context, m)),
132611+ tpName,
132612+ serializeExistingTypeNodeWithFallback(tp.constraint, context),
132613+ serializeExistingTypeNodeWithFallback(tp.default, context)
132614+ );
132615+ });
132616132616 }
132617132617 function typeFromObjectLiteralMethod(method, name, context, isConstContext) {
132618132618 const returnType = createReturnFromSignature(
@@ -132747,7 +132747,7 @@ function createSyntacticTypeNodeBuilder(options, resolver) {
132747132747 } else if (isValueSignatureDeclaration(fn)) {
132748132748 returnType = typeFromSingleReturnExpression(fn, context);
132749132749 }
132750- return returnType.type !== void 0 ? returnType.type : inferReturnTypeOfSignatureSignature(fn, context, reportFallback && returnType.reportFallback && !returnTypeNode);
132750+ return returnType.type !== void 0 ? returnType.type : inferReturnTypeOfSignatureSignature(fn, context, symbol, reportFallback && returnType.reportFallback && !returnTypeNode);
132751132751 }
132752132752 function typeFromSingleReturnExpression(declaration, context) {
132753132753 let candidateExpr;
0 commit comments