Skip to content

Commit 8f7a582

Browse files
committed
Merge branch 'master' into inferFromRelatedTypesOnly
2 parents 0d7f0e0 + 86d0fa2 commit 8f7a582

9 files changed

+58
-32
lines changed

src/compiler/checker.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16987,8 +16987,13 @@ namespace ts {
1698716987
if (operandType === silentNeverType) {
1698816988
return silentNeverType;
1698916989
}
16990-
if (node.operator === SyntaxKind.MinusToken && node.operand.kind === SyntaxKind.NumericLiteral) {
16991-
return getFreshTypeOfLiteralType(getLiteralType(-(<LiteralExpression>node.operand).text));
16990+
if (node.operand.kind === SyntaxKind.NumericLiteral) {
16991+
if (node.operator === SyntaxKind.MinusToken) {
16992+
return getFreshTypeOfLiteralType(getLiteralType(-(<LiteralExpression>node.operand).text));
16993+
}
16994+
else if (node.operator === SyntaxKind.PlusToken) {
16995+
return getFreshTypeOfLiteralType(getLiteralType(+(<LiteralExpression>node.operand).text));
16996+
}
1699216997
}
1699316998
switch (node.operator) {
1699416999
case SyntaxKind.PlusToken:

src/compiler/utilities.ts

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -922,21 +922,11 @@ namespace ts {
922922
}
923923

924924
export function getContainingFunction(node: Node): FunctionLike {
925-
while (true) {
926-
node = node.parent;
927-
if (!node || isFunctionLike(node)) {
928-
return <FunctionLike>node;
929-
}
930-
}
925+
return findAncestor(node.parent, isFunctionLike);
931926
}
932927

933928
export function getContainingClass(node: Node): ClassLikeDeclaration {
934-
while (true) {
935-
node = node.parent;
936-
if (!node || isClassLike(node)) {
937-
return <ClassLikeDeclaration>node;
938-
}
939-
}
929+
return findAncestor(node.parent, isClassLike);
940930
}
941931

942932
export function getThisContainer(node: Node, includeArrowFunctions: boolean): Node {

tests/baselines/reference/emitExponentiationOperator3.types

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -113,32 +113,32 @@ var temp = 10;
113113

114114
(+3) ** temp++;
115115
>(+3) ** temp++ : number
116-
>(+3) : number
117-
>+3 : number
116+
>(+3) : 3
117+
>+3 : 3
118118
>3 : 3
119119
>temp++ : number
120120
>temp : number
121121

122122
(+3) ** temp--;
123123
>(+3) ** temp-- : number
124-
>(+3) : number
125-
>+3 : number
124+
>(+3) : 3
125+
>+3 : 3
126126
>3 : 3
127127
>temp-- : number
128128
>temp : number
129129

130130
(+3) ** ++temp;
131131
>(+3) ** ++temp : number
132-
>(+3) : number
133-
>+3 : number
132+
>(+3) : 3
133+
>+3 : 3
134134
>3 : 3
135135
>++temp : number
136136
>temp : number
137137

138138
(+3) ** --temp;
139139
>(+3) ** --temp : number
140-
>(+3) : number
141-
>+3 : number
140+
>(+3) : 3
141+
>+3 : 3
142142
>3 : 3
143143
>--temp : number
144144
>temp : number
@@ -185,8 +185,8 @@ var temp = 10;
185185

186186
(+3) ** temp++ ** 2;
187187
>(+3) ** temp++ ** 2 : number
188-
>(+3) : number
189-
>+3 : number
188+
>(+3) : 3
189+
>+3 : 3
190190
>3 : 3
191191
>temp++ ** 2 : number
192192
>temp++ : number
@@ -195,8 +195,8 @@ var temp = 10;
195195

196196
(+3) ** temp-- ** 2;
197197
>(+3) ** temp-- ** 2 : number
198-
>(+3) : number
199-
>+3 : number
198+
>(+3) : 3
199+
>+3 : 3
200200
>3 : 3
201201
>temp-- ** 2 : number
202202
>temp-- : number
@@ -205,8 +205,8 @@ var temp = 10;
205205

206206
(+3) ** ++temp ** 2;
207207
>(+3) ** ++temp ** 2 : number
208-
>(+3) : number
209-
>+3 : number
208+
>(+3) : 3
209+
>+3 : 3
210210
>3 : 3
211211
>++temp ** 2 : number
212212
>++temp : number
@@ -215,8 +215,8 @@ var temp = 10;
215215

216216
(+3) ** --temp ** 2;
217217
>(+3) ** --temp ** 2 : number
218-
>(+3) : number
219-
>+3 : number
218+
>(+3) : 3
219+
>+3 : 3
220220
>3 : 3
221221
>--temp ** 2 : number
222222
>--temp : number

tests/baselines/reference/enumClassification.types

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ enum E11 {
131131

132132
A = +0,
133133
>A : E11
134-
>+0 : number
134+
>+0 : 0
135135
>0 : 0
136136

137137
B,
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
//// [prefixedNumberLiteralAssignToNumberLiteralType.ts]
2+
let x: 1 = +1;
3+
4+
let y: -1 = -1;
5+
6+
//// [prefixedNumberLiteralAssignToNumberLiteralType.js]
7+
var x = +1;
8+
var y = -1;
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
=== tests/cases/compiler/prefixedNumberLiteralAssignToNumberLiteralType.ts ===
2+
let x: 1 = +1;
3+
>x : Symbol(x, Decl(prefixedNumberLiteralAssignToNumberLiteralType.ts, 0, 3))
4+
5+
let y: -1 = -1;
6+
>y : Symbol(y, Decl(prefixedNumberLiteralAssignToNumberLiteralType.ts, 2, 3))
7+
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
=== tests/cases/compiler/prefixedNumberLiteralAssignToNumberLiteralType.ts ===
2+
let x: 1 = +1;
3+
>x : 1
4+
>+1 : 1
5+
>1 : 1
6+
7+
let y: -1 = -1;
8+
>y : -1
9+
>-1 : -1
10+
>1 : 1
11+
>-1 : -1
12+
>1 : 1
13+

tests/baselines/reference/unaryPlus.types

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// allowed per spec
33
var a = +1;
44
>a : number
5-
>+1 : number
5+
>+1 : 1
66
>1 : 1
77

88
var b = +(<any>"");
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
let x: 1 = +1;
2+
3+
let y: -1 = -1;

0 commit comments

Comments
 (0)