mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-08 08:14:51 -06:00
Retain literal type for prefix plus on number literal
This commit is contained in:
parent
f667357aad
commit
eee6851911
@ -16952,9 +16952,13 @@ namespace ts {
|
||||
if (operandType === silentNeverType) {
|
||||
return silentNeverType;
|
||||
}
|
||||
if (node.operator === SyntaxKind.MinusToken && node.operand.kind === SyntaxKind.NumericLiteral) {
|
||||
const isOperandNumericLiteral = node.operand.kind === SyntaxKind.NumericLiteral;
|
||||
if (isOperandNumericLiteral && node.operator === SyntaxKind.MinusToken) {
|
||||
return getFreshTypeOfLiteralType(getLiteralType(-(<LiteralExpression>node.operand).text));
|
||||
}
|
||||
if (isOperandNumericLiteral && 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…
x
Reference in New Issue
Block a user