fix generate typenode from negative numerical literal (#30610)

This commit is contained in:
Wenlu Wang 2019-04-23 16:20:53 -05:00 committed by Ryan Cavanaugh
parent bb1ac81bb1
commit 27075555c8
3 changed files with 21 additions and 2 deletions

View File

@ -3484,8 +3484,9 @@ namespace ts {
return createLiteralTypeNode(setEmitFlags(createLiteral((<StringLiteralType>type).value), EmitFlags.NoAsciiEscaping));
}
if (type.flags & TypeFlags.NumberLiteral) {
context.approximateLength += (("" + (<NumberLiteralType>type).value).length);
return createLiteralTypeNode((createLiteral((<NumberLiteralType>type).value)));
const value = (<NumberLiteralType>type).value;
context.approximateLength += ("" + value).length;
return createLiteralTypeNode(value < 0 ? createPrefix(SyntaxKind.MinusToken, createLiteral(-value)) : createLiteral(value));
}
if (type.flags & TypeFlags.BigIntLiteral) {
context.approximateLength += (pseudoBigIntToString((<BigIntLiteralType>type).value).length) + 1;

View File

@ -0,0 +1,9 @@
/// <reference path='fourslash.ts' />
//// interface X { value: -1 | 0 | 1; }
//// class Y implements X { }
// https://github.com/Microsoft/TypeScript/issues/30431
verify.codeFixAvailable([{ description: "Implement interface 'X'" }]);

View File

@ -0,0 +1,9 @@
/// <reference path='fourslash.ts' />
// @noImplicitAny: true
////function wrap( [| arr |] ) {
//// arr.sort(function (a: number, b: number) { return a < b ? -1 : 1 })
//// }
// https://github.com/Microsoft/TypeScript/issues/29330
verify.rangeAfterCodeFix("arr: { sort: (arg0: (a: number, b: number) => 1 | -1) => void; }");