Merge pull request #17425 from ikatyang/fix-17392

Retain literal type for prefix plus on number literal
This commit is contained in:
Daniel Rosenwasser 2017-08-02 18:41:21 -07:00 committed by GitHub
commit 1552761982
8 changed files with 56 additions and 20 deletions

View file

@ -16970,8 +16970,13 @@ namespace ts {
if (operandType === silentNeverType) {
return silentNeverType;
}
if (node.operator === SyntaxKind.MinusToken && node.operand.kind === SyntaxKind.NumericLiteral) {
return getFreshTypeOfLiteralType(getLiteralType(-(<LiteralExpression>node.operand).text));
if (node.operand.kind === SyntaxKind.NumericLiteral) {
if (node.operator === SyntaxKind.MinusToken) {
return getFreshTypeOfLiteralType(getLiteralType(-(<LiteralExpression>node.operand).text));
}
else if (node.operator === SyntaxKind.PlusToken) {
return getFreshTypeOfLiteralType(getLiteralType(+(<LiteralExpression>node.operand).text));
}
}
switch (node.operator) {
case SyntaxKind.PlusToken:

View file

@ -113,32 +113,32 @@ var temp = 10;
(+3) ** temp++;
>(+3) ** temp++ : number
>(+3) : number
>+3 : number
>(+3) : 3
>+3 : 3
>3 : 3
>temp++ : number
>temp : number
(+3) ** temp--;
>(+3) ** temp-- : number
>(+3) : number
>+3 : number
>(+3) : 3
>+3 : 3
>3 : 3
>temp-- : number
>temp : number
(+3) ** ++temp;
>(+3) ** ++temp : number
>(+3) : number
>+3 : number
>(+3) : 3
>+3 : 3
>3 : 3
>++temp : number
>temp : number
(+3) ** --temp;
>(+3) ** --temp : number
>(+3) : number
>+3 : number
>(+3) : 3
>+3 : 3
>3 : 3
>--temp : number
>temp : number
@ -185,8 +185,8 @@ var temp = 10;
(+3) ** temp++ ** 2;
>(+3) ** temp++ ** 2 : number
>(+3) : number
>+3 : number
>(+3) : 3
>+3 : 3
>3 : 3
>temp++ ** 2 : number
>temp++ : number
@ -195,8 +195,8 @@ var temp = 10;
(+3) ** temp-- ** 2;
>(+3) ** temp-- ** 2 : number
>(+3) : number
>+3 : number
>(+3) : 3
>+3 : 3
>3 : 3
>temp-- ** 2 : number
>temp-- : number
@ -205,8 +205,8 @@ var temp = 10;
(+3) ** ++temp ** 2;
>(+3) ** ++temp ** 2 : number
>(+3) : number
>+3 : number
>(+3) : 3
>+3 : 3
>3 : 3
>++temp ** 2 : number
>++temp : number
@ -215,8 +215,8 @@ var temp = 10;
(+3) ** --temp ** 2;
>(+3) ** --temp ** 2 : number
>(+3) : number
>+3 : number
>(+3) : 3
>+3 : 3
>3 : 3
>--temp ** 2 : number
>--temp : number

View file

@ -131,7 +131,7 @@ enum E11 {
A = +0,
>A : E11
>+0 : number
>+0 : 0
>0 : 0
B,

View file

@ -0,0 +1,8 @@
//// [prefixedNumberLiteralAssignToNumberLiteralType.ts]
let x: 1 = +1;
let y: -1 = -1;
//// [prefixedNumberLiteralAssignToNumberLiteralType.js]
var x = +1;
var y = -1;

View file

@ -0,0 +1,7 @@
=== tests/cases/compiler/prefixedNumberLiteralAssignToNumberLiteralType.ts ===
let x: 1 = +1;
>x : Symbol(x, Decl(prefixedNumberLiteralAssignToNumberLiteralType.ts, 0, 3))
let y: -1 = -1;
>y : Symbol(y, Decl(prefixedNumberLiteralAssignToNumberLiteralType.ts, 2, 3))

View file

@ -0,0 +1,13 @@
=== tests/cases/compiler/prefixedNumberLiteralAssignToNumberLiteralType.ts ===
let x: 1 = +1;
>x : 1
>+1 : 1
>1 : 1
let y: -1 = -1;
>y : -1
>-1 : -1
>1 : 1
>-1 : -1
>1 : 1

View file

@ -2,7 +2,7 @@
// allowed per spec
var a = +1;
>a : number
>+1 : number
>+1 : 1
>1 : 1
var b = +(<any>"");

View file

@ -0,0 +1,3 @@
let x: 1 = +1;
let y: -1 = -1;