Skip to content

Commit 7f63767

Browse files
authored
Reuse operandType in checkPrefixUnaryExpression (#53682)
1 parent 287ee41 commit 7f63767

6 files changed

+58
-1
lines changed

src/compiler/checker.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36120,7 +36120,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker {
3612036120
}
3612136121
return getUnaryResultType(operandType);
3612236122
case SyntaxKind.ExclamationToken:
36123-
checkTruthinessExpression(node.operand);
36123+
checkTruthinessOfType(operandType, node.operand);
3612436124
const facts = getTypeFacts(operandType) & (TypeFacts.Truthy | TypeFacts.Falsy);
3612536125
return facts === TypeFacts.Truthy ? falseType :
3612636126
facts === TypeFacts.Falsy ? trueType :
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
tests/cases/compiler/nestedUnaryExpressionHang.ts(1,6): error TS2363: The right-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type.
2+
tests/cases/compiler/nestedUnaryExpressionHang.ts(1,34): error TS1109: Expression expected.
3+
4+
5+
==== tests/cases/compiler/nestedUnaryExpressionHang.ts (2 errors) ====
6+
3333%!!!!!!!!!!!!!!!!!!!!!!!!!!!!
7+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8+
!!! error TS2363: The right-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type.
9+
10+
!!! error TS1109: Expression expected.
11+
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
//// [nestedUnaryExpressionHang.ts]
2+
3333%!!!!!!!!!!!!!!!!!!!!!!!!!!!!
3+
4+
5+
//// [nestedUnaryExpressionHang.js]
6+
3333 % !!!!!!!!!!!!!!!!!!!!!!!!!!!!;
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
=== tests/cases/compiler/nestedUnaryExpressionHang.ts ===
2+
3+
3333%!!!!!!!!!!!!!!!!!!!!!!!!!!!!
4+
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
=== tests/cases/compiler/nestedUnaryExpressionHang.ts ===
2+
3333%!!!!!!!!!!!!!!!!!!!!!!!!!!!!
3+
>3333%!!!!!!!!!!!!!!!!!!!!!!!!!!!! : number
4+
>3333 : 3333
5+
>!!!!!!!!!!!!!!!!!!!!!!!!!!!! : boolean
6+
>!!!!!!!!!!!!!!!!!!!!!!!!!!! : boolean
7+
>!!!!!!!!!!!!!!!!!!!!!!!!!! : boolean
8+
>!!!!!!!!!!!!!!!!!!!!!!!!! : boolean
9+
>!!!!!!!!!!!!!!!!!!!!!!!! : boolean
10+
>!!!!!!!!!!!!!!!!!!!!!!! : boolean
11+
>!!!!!!!!!!!!!!!!!!!!!! : boolean
12+
>!!!!!!!!!!!!!!!!!!!!! : boolean
13+
>!!!!!!!!!!!!!!!!!!!! : boolean
14+
>!!!!!!!!!!!!!!!!!!! : boolean
15+
>!!!!!!!!!!!!!!!!!! : boolean
16+
>!!!!!!!!!!!!!!!!! : boolean
17+
>!!!!!!!!!!!!!!!! : boolean
18+
>!!!!!!!!!!!!!!! : boolean
19+
>!!!!!!!!!!!!!! : boolean
20+
>!!!!!!!!!!!!! : boolean
21+
>!!!!!!!!!!!! : boolean
22+
>!!!!!!!!!!! : boolean
23+
>!!!!!!!!!! : boolean
24+
>!!!!!!!!! : boolean
25+
>!!!!!!!! : boolean
26+
>!!!!!!! : boolean
27+
>!!!!!! : boolean
28+
>!!!!! : boolean
29+
>!!!! : boolean
30+
>!!! : boolean
31+
>!! : boolean
32+
>! : boolean
33+
34+
> : any
35+
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
3333%!!!!!!!!!!!!!!!!!!!!!!!!!!!!

0 commit comments

Comments
 (0)