Skip to content

Commit 2707555

Browse files
KingwlRyanCavanaugh
authored andcommitted
fix generate typenode from negative numerical literal (microsoft#30610)
1 parent bb1ac81 commit 2707555

File tree

3 files changed

+21
-2
lines changed

3 files changed

+21
-2
lines changed

src/compiler/checker.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3484,8 +3484,9 @@ namespace ts {
34843484
return createLiteralTypeNode(setEmitFlags(createLiteral((<StringLiteralType>type).value), EmitFlags.NoAsciiEscaping));
34853485
}
34863486
if (type.flags & TypeFlags.NumberLiteral) {
3487-
context.approximateLength += (("" + (<NumberLiteralType>type).value).length);
3488-
return createLiteralTypeNode((createLiteral((<NumberLiteralType>type).value)));
3487+
const value = (<NumberLiteralType>type).value;
3488+
context.approximateLength += ("" + value).length;
3489+
return createLiteralTypeNode(value < 0 ? createPrefix(SyntaxKind.MinusToken, createLiteral(-value)) : createLiteral(value));
34893490
}
34903491
if (type.flags & TypeFlags.BigIntLiteral) {
34913492
context.approximateLength += (pseudoBigIntToString((<BigIntLiteralType>type).value).length) + 1;
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
2+
3+
/// <reference path='fourslash.ts' />
4+
5+
//// interface X { value: -1 | 0 | 1; }
6+
//// class Y implements X { }
7+
8+
// https://github.com/Microsoft/TypeScript/issues/30431
9+
verify.codeFixAvailable([{ description: "Implement interface 'X'" }]);
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
/// <reference path='fourslash.ts' />
2+
3+
// @noImplicitAny: true
4+
////function wrap( [| arr |] ) {
5+
//// arr.sort(function (a: number, b: number) { return a < b ? -1 : 1 })
6+
//// }
7+
8+
// https://github.com/Microsoft/TypeScript/issues/29330
9+
verify.rangeAfterCodeFix("arr: { sort: (arg0: (a: number, b: number) => 1 | -1) => void; }");

0 commit comments

Comments
 (0)