@@ -2049,6 +2049,24 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
2049
2049
const emptyStringType = getStringLiteralType("");
2050
2050
const zeroType = getNumberLiteralType(0);
2051
2051
const zeroBigIntType = getBigIntLiteralType({ negative: false, base10Value: "0" });
2052
+ const InfinityType = getNumberLiteralType(Infinity);
2053
+ const regularInfinityType = createLiteralType(TypeFlags.NumberLiteral, Infinity);
2054
+ const negativeInfinityType = getNumberLiteralType(-Infinity);
2055
+ const regularNegativeInfinityType = createLiteralType(TypeFlags.NumberLiteral, -Infinity);
2056
+ const NaNType = getNumberLiteralType(NaN);
2057
+ const regularNaNType = createLiteralType(TypeFlags.NumberLiteral, NaN);
2058
+ InfinityType.regularType = regularInfinityType;
2059
+ InfinityType.freshType = InfinityType;
2060
+ regularInfinityType.regularType = regularInfinityType;
2061
+ regularInfinityType.freshType = InfinityType;
2062
+ negativeInfinityType.freshType = negativeInfinityType;
2063
+ negativeInfinityType.regularType = regularNegativeInfinityType;
2064
+ regularNegativeInfinityType.freshType = negativeInfinityType;
2065
+ regularNegativeInfinityType.regularType = regularNegativeInfinityType;
2066
+ NaNType.freshType = NaNType;
2067
+ NaNType.regularType = regularNaNType;
2068
+ regularNaNType.freshType = NaNType;
2069
+ regularNaNType.regularType = regularNaNType;
2052
2070
2053
2071
const resolutionTargets: TypeSystemEntity[] = [];
2054
2072
const resolutionResults: boolean[] = [];
@@ -34843,33 +34861,33 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
34843
34861
case SyntaxKind.InfinityKeyword:
34844
34862
switch (node.operator) {
34845
34863
case SyntaxKind.MinusToken:
34846
- return getFreshTypeOfLiteralType(getNumberLiteralType(-Infinity)) ;
34864
+ return negativeInfinityType ;
34847
34865
case SyntaxKind.PlusToken:
34848
- return getFreshTypeOfLiteralType(getNumberLiteralType(Infinity)) ;
34866
+ return InfinityType ;
34849
34867
}
34850
34868
break;
34851
34869
case SyntaxKind.NaNKeyword:
34852
34870
switch (node.operator) {
34853
34871
case SyntaxKind.MinusToken:
34854
34872
case SyntaxKind.PlusToken:
34855
- return getFreshTypeOfLiteralType(getNumberLiteralType(NaN)) ;
34873
+ return NaNType ;
34856
34874
}
34857
34875
break;
34858
34876
case SyntaxKind.Identifier:
34859
34877
switch (getResolvedSymbol(node.operand as Identifier)) {
34860
34878
case InfinitySymbol:
34861
34879
switch (node.operator) {
34862
34880
case SyntaxKind.MinusToken:
34863
- return getFreshTypeOfLiteralType(getNumberLiteralType(-Infinity)) ;
34881
+ return negativeInfinityType ;
34864
34882
case SyntaxKind.PlusToken:
34865
- return getFreshTypeOfLiteralType(getNumberLiteralType(Infinity)) ;
34883
+ return InfinityType ;
34866
34884
}
34867
34885
break;
34868
34886
case NaNSymbol:
34869
34887
switch (node.operator) {
34870
34888
case SyntaxKind.MinusToken:
34871
34889
case SyntaxKind.PlusToken:
34872
- return getFreshTypeOfLiteralType(getNumberLiteralType(NaN)) ;
34890
+ return NaNType ;
34873
34891
}
34874
34892
break;
34875
34893
}
@@ -36493,9 +36511,9 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
36493
36511
base10Value: parsePseudoBigInt((node as BigIntLiteral).text)
36494
36512
}));
36495
36513
case SyntaxKind.InfinityKeyword:
36496
- return getFreshTypeOfLiteralType(getNumberLiteralType(Infinity)) ;
36514
+ return InfinityType ;
36497
36515
case SyntaxKind.NaNKeyword:
36498
- return getFreshTypeOfLiteralType(getNumberLiteralType(NaN)) ;
36516
+ return NaNType ;
36499
36517
case SyntaxKind.TrueKeyword:
36500
36518
return trueType;
36501
36519
case SyntaxKind.FalseKeyword:
@@ -45257,8 +45275,8 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
45257
45275
getSymbolLinks(argumentsSymbol).type = getGlobalType("IArguments" as __String, /*arity*/ 0, /*reportErrors*/ true);
45258
45276
getSymbolLinks(unknownSymbol).type = errorType;
45259
45277
getSymbolLinks(globalThisSymbol).type = createObjectType(ObjectFlags.Anonymous, globalThisSymbol);
45260
- getSymbolLinks(InfinitySymbol).type = getFreshTypeOfLiteralType(getNumberLiteralType(Infinity)) ;
45261
- getSymbolLinks(NaNSymbol).type = getFreshTypeOfLiteralType(getNumberLiteralType(NaN)) ;
45278
+ getSymbolLinks(InfinitySymbol).type = InfinityType ;
45279
+ getSymbolLinks(NaNSymbol).type = NaNType ;
45262
45280
45263
45281
// Initialize special types
45264
45282
globalArrayType = getGlobalType("Array" as __String, /*arity*/ 1, /*reportErrors*/ true);
0 commit comments