Skip to content

Commit b303aa1

Browse files
Fix Self-check
1 parent 47a33be commit b303aa1

File tree

1 file changed

+28
-10
lines changed

1 file changed

+28
-10
lines changed

src/compiler/checker.ts

+28-10
Original file line numberDiff line numberDiff line change
@@ -2049,6 +2049,24 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
20492049
const emptyStringType = getStringLiteralType("");
20502050
const zeroType = getNumberLiteralType(0);
20512051
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;
20522070

20532071
const resolutionTargets: TypeSystemEntity[] = [];
20542072
const resolutionResults: boolean[] = [];
@@ -34843,33 +34861,33 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
3484334861
case SyntaxKind.InfinityKeyword:
3484434862
switch (node.operator) {
3484534863
case SyntaxKind.MinusToken:
34846-
return getFreshTypeOfLiteralType(getNumberLiteralType(-Infinity));
34864+
return negativeInfinityType;
3484734865
case SyntaxKind.PlusToken:
34848-
return getFreshTypeOfLiteralType(getNumberLiteralType(Infinity));
34866+
return InfinityType;
3484934867
}
3485034868
break;
3485134869
case SyntaxKind.NaNKeyword:
3485234870
switch (node.operator) {
3485334871
case SyntaxKind.MinusToken:
3485434872
case SyntaxKind.PlusToken:
34855-
return getFreshTypeOfLiteralType(getNumberLiteralType(NaN));
34873+
return NaNType;
3485634874
}
3485734875
break;
3485834876
case SyntaxKind.Identifier:
3485934877
switch (getResolvedSymbol(node.operand as Identifier)) {
3486034878
case InfinitySymbol:
3486134879
switch (node.operator) {
3486234880
case SyntaxKind.MinusToken:
34863-
return getFreshTypeOfLiteralType(getNumberLiteralType(-Infinity));
34881+
return negativeInfinityType;
3486434882
case SyntaxKind.PlusToken:
34865-
return getFreshTypeOfLiteralType(getNumberLiteralType(Infinity));
34883+
return InfinityType;
3486634884
}
3486734885
break;
3486834886
case NaNSymbol:
3486934887
switch (node.operator) {
3487034888
case SyntaxKind.MinusToken:
3487134889
case SyntaxKind.PlusToken:
34872-
return getFreshTypeOfLiteralType(getNumberLiteralType(NaN));
34890+
return NaNType;
3487334891
}
3487434892
break;
3487534893
}
@@ -36493,9 +36511,9 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
3649336511
base10Value: parsePseudoBigInt((node as BigIntLiteral).text)
3649436512
}));
3649536513
case SyntaxKind.InfinityKeyword:
36496-
return getFreshTypeOfLiteralType(getNumberLiteralType(Infinity));
36514+
return InfinityType;
3649736515
case SyntaxKind.NaNKeyword:
36498-
return getFreshTypeOfLiteralType(getNumberLiteralType(NaN));
36516+
return NaNType;
3649936517
case SyntaxKind.TrueKeyword:
3650036518
return trueType;
3650136519
case SyntaxKind.FalseKeyword:
@@ -45257,8 +45275,8 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
4525745275
getSymbolLinks(argumentsSymbol).type = getGlobalType("IArguments" as __String, /*arity*/ 0, /*reportErrors*/ true);
4525845276
getSymbolLinks(unknownSymbol).type = errorType;
4525945277
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;
4526245280

4526345281
// Initialize special types
4526445282
globalArrayType = getGlobalType("Array" as __String, /*arity*/ 1, /*reportErrors*/ true);

0 commit comments

Comments
 (0)