Skip to content

Commit

Permalink
resolve apparent types for equality checks
Browse files Browse the repository at this point in the history
  • Loading branch information
KiaraGrouwstra committed Sep 15, 2017
1 parent bab287d commit 36d39fb
Show file tree
Hide file tree
Showing 5 changed files with 46 additions and 0 deletions.
2 changes: 2 additions & 0 deletions src/compiler/checker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17645,6 +17645,8 @@ namespace ts {
leftType = leftIsLiteral ? getBaseTypeOfLiteralType(leftType) : leftType;
rightType = rightIsLiteral ? getBaseTypeOfLiteralType(rightType) : rightType;
}
leftType = getApparentType(leftType);
rightType = getApparentType(rightType);
if (!isTypeEqualityComparableTo(leftType, rightType) && !isTypeEqualityComparableTo(rightType, leftType)) {
reportOperatorError();
}
Expand Down
10 changes: 10 additions & 0 deletions tests/baselines/reference/test-17428.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
//// [test-17428.ts]
function Generic<T extends string, U extends string>(a: T, b: U) {
a == b;
}


//// [test-17428.js]
function Generic(a, b) {
a == b;
}
15 changes: 15 additions & 0 deletions tests/baselines/reference/test-17428.symbols
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
=== tests/cases/compiler/test-17428.ts ===
function Generic<T extends string, U extends string>(a: T, b: U) {
>Generic : Symbol(Generic, Decl(test-17428.ts, 0, 0))
>T : Symbol(T, Decl(test-17428.ts, 0, 17))
>U : Symbol(U, Decl(test-17428.ts, 0, 34))
>a : Symbol(a, Decl(test-17428.ts, 0, 53))
>T : Symbol(T, Decl(test-17428.ts, 0, 17))
>b : Symbol(b, Decl(test-17428.ts, 0, 58))
>U : Symbol(U, Decl(test-17428.ts, 0, 34))

a == b;
>a : Symbol(a, Decl(test-17428.ts, 0, 53))
>b : Symbol(b, Decl(test-17428.ts, 0, 58))
}

16 changes: 16 additions & 0 deletions tests/baselines/reference/test-17428.types
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
=== tests/cases/compiler/test-17428.ts ===
function Generic<T extends string, U extends string>(a: T, b: U) {
>Generic : <T extends string, U extends string>(a: T, b: U) => void
>T : T
>U : U
>a : T
>T : T
>b : U
>U : U

a == b;
>a == b : boolean
>a : T
>b : U
}

3 changes: 3 additions & 0 deletions tests/cases/compiler/test-17428.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
function Generic<T extends string, U extends string>(a: T, b: U) {
a == b;
}

0 comments on commit 36d39fb

Please sign in to comment.