@@ -1868,7 +1868,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
18681868 const nodeLinks = getNodeLinks(node);
18691869 cachedResolvedSignatures.push([nodeLinks, nodeLinks.resolvedSignature] as const);
18701870 nodeLinks.resolvedSignature = undefined;
1871- if (isFunctionLike (node)) {
1871+ if (isFunctionExpressionOrArrowFunction (node)) {
18721872 const symbolLinks = getSymbolLinks(getSymbolOfDeclaration(node));
18731873 const type = symbolLinks.type;
18741874 cachedTypes.push([symbolLinks, type] as const);
@@ -6949,6 +6949,8 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
69496949 context.symbolDepth!.set(id, depth + 1);
69506950 }
69516951 context.visitedTypes.add(typeId);
6952+ const prevTrackedSymbols = context.trackedSymbols;
6953+ context.trackedSymbols = undefined;
69526954 const startLength = context.approximateLength;
69536955 const result = transform(type);
69546956 const addedLength = context.approximateLength - startLength;
@@ -6964,6 +6966,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
69646966 if (id) {
69656967 context.symbolDepth!.set(id, depth!);
69666968 }
6969+ context.trackedSymbols = prevTrackedSymbols;
69676970 return result;
69686971
69696972 function deepCloneOrReuseNode<T extends Node>(node: T): T {
@@ -7312,7 +7315,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
73127315
73137316 if (propertySymbol.flags & SymbolFlags.Accessor) {
73147317 const writeType = getWriteTypeOfSymbol(propertySymbol);
7315- if (propertyType !== writeType) {
7318+ if (propertyType !== writeType && !isErrorType(propertyType) && !isErrorType(writeType) ) {
73167319 const getterDeclaration = getDeclarationOfKind<GetAccessorDeclaration>(propertySymbol, SyntaxKind.GetAccessor)!;
73177320 const getterSignature = getSignatureFromDeclaration(getterDeclaration);
73187321 typeElements.push(
@@ -8299,7 +8302,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
82998302 return factory.createStringLiteral(name, !!singleQuote);
83008303 }
83018304 if (isNumericLiteralName(name) && startsWith(name, "-")) {
8302- return factory.createComputedPropertyName(factory.createPrefixUnaryExpression(SyntaxKind.MinusToken, factory. createNumericLiteral(Math.abs( +name)) ));
8305+ return factory.createComputedPropertyName(factory.createNumericLiteral(+name));
83038306 }
83048307 return createPropertyNameNodeForIdentifierOrLiteral(name, getEmitScriptTarget(compilerOptions), singleQuote, stringNamed, isMethod);
83058308 }
@@ -38953,14 +38956,9 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
3895338956 return hasSkipDirectInferenceFlag(node) ?
3895438957 blockedStringType :
3895538958 getFreshTypeOfLiteralType(getStringLiteralType((node as StringLiteralLike).text));
38956- case SyntaxKind.NumericLiteral: {
38959+ case SyntaxKind.NumericLiteral:
3895738960 checkGrammarNumericLiteral(node as NumericLiteral);
38958- const value = +(node as NumericLiteral).text;
38959- if (!isFinite(value)) {
38960- return numberType;
38961- }
38962- return getFreshTypeOfLiteralType(getNumberLiteralType(value));
38963- }
38961+ return getFreshTypeOfLiteralType(getNumberLiteralType(+(node as NumericLiteral).text));
3896438962 case SyntaxKind.BigIntLiteral:
3896538963 checkGrammarBigIntLiteral(node as BigIntLiteral);
3896638964 return getFreshTypeOfLiteralType(getBigIntLiteralType({
@@ -47883,9 +47881,8 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
4788347881 if (enumResult) return enumResult;
4788447882 const literalValue = (type as LiteralType).value;
4788547883 return typeof literalValue === "object" ? factory.createBigIntLiteral(literalValue) :
47886- typeof literalValue === "string" ? factory.createStringLiteral(literalValue) :
47887- literalValue < 0 ? factory.createPrefixUnaryExpression(SyntaxKind.MinusToken, factory.createNumericLiteral(Math.abs(literalValue))) :
47888- factory.createNumericLiteral(literalValue);
47884+ typeof literalValue === "number" ? factory.createNumericLiteral(literalValue) :
47885+ factory.createStringLiteral(literalValue);
4788947886 }
4789047887
4789147888 function createLiteralConstValue(node: VariableDeclaration | PropertyDeclaration | PropertySignature | ParameterDeclaration, tracker: SymbolTracker) {
0 commit comments