Merge pull request #17425 from ikatyang/fix-17392
Retain literal type for prefix plus on number literal
This commit is contained in:
commit
1552761982
|
@ -16970,9 +16970,14 @@ namespace ts {
|
|||
if (operandType === silentNeverType) {
|
||||
return silentNeverType;
|
||||
}
|
||||
if (node.operator === SyntaxKind.MinusToken && node.operand.kind === SyntaxKind.NumericLiteral) {
|
||||
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:
|
||||
case SyntaxKind.MinusToken:
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -131,7 +131,7 @@ enum E11 {
|
|||
|
||||
A = +0,
|
||||
>A : E11
|
||||
>+0 : number
|
||||
>+0 : 0
|
||||
>0 : 0
|
||||
|
||||
B,
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
//// [prefixedNumberLiteralAssignToNumberLiteralType.ts]
|
||||
let x: 1 = +1;
|
||||
|
||||
let y: -1 = -1;
|
||||
|
||||
//// [prefixedNumberLiteralAssignToNumberLiteralType.js]
|
||||
var x = +1;
|
||||
var y = -1;
|
|
@ -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))
|
||||
|
|
@ -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
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
// allowed per spec
|
||||
var a = +1;
|
||||
>a : number
|
||||
>+1 : number
|
||||
>+1 : 1
|
||||
>1 : 1
|
||||
|
||||
var b = +(<any>"");
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
let x: 1 = +1;
|
||||
|
||||
let y: -1 = -1;
|
Loading…
Reference in a new issue