diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index be21090d78057..60acefb6045d5 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -15106,7 +15106,7 @@ namespace ts { // In a 'switch' statement, each 'case' expression must be of a type that is comparable // to or from the type of the 'switch' expression. const caseType = checkExpression(caseClause.expression); - if (!isTypeComparableTo(expressionType, caseType)) { + if (!isTypeEqualityComparableTo(expressionType, caseType)) { // expressionType is not comparable to caseType, try the reversed check and report errors if it fails checkTypeComparableTo(caseType, expressionType, caseClause.expression, /*headMessage*/ undefined); } diff --git a/tests/baselines/reference/equalityStrictNulls.errors.txt b/tests/baselines/reference/equalityStrictNulls.errors.txt index 54b581c87e6e9..e0793542b84a9 100644 --- a/tests/baselines/reference/equalityStrictNulls.errors.txt +++ b/tests/baselines/reference/equalityStrictNulls.errors.txt @@ -81,4 +81,14 @@ tests/cases/conformance/types/typeRelationships/comparable/equalityStrictNulls.t !!! error TS2365: Operator '<=' cannot be applied to types 'number' and 'undefined'. } } + function f5(x: string) { + switch(x) { + case null: + break; + case undefined: + break; + default: + return; + } + } \ No newline at end of file diff --git a/tests/baselines/reference/equalityStrictNulls.js b/tests/baselines/reference/equalityStrictNulls.js index 99ff801a52cd1..e34e9fe9989e3 100644 --- a/tests/baselines/reference/equalityStrictNulls.js +++ b/tests/baselines/reference/equalityStrictNulls.js @@ -67,6 +67,16 @@ function f4(x: number) { if (x <= undefined) { } } +function f5(x: string) { + switch(x) { + case null: + break; + case undefined: + break; + default: + return; + } +} //// [equalityStrictNulls.js] @@ -134,3 +144,13 @@ function f4(x) { if (x <= undefined) { } } +function f5(x) { + switch (x) { + case null: + break; + case undefined: + break; + default: + return; + } +} diff --git a/tests/cases/conformance/types/typeRelationships/comparable/equalityStrictNulls.ts b/tests/cases/conformance/types/typeRelationships/comparable/equalityStrictNulls.ts index 6b2744e8849d7..da46ab37a2a50 100644 --- a/tests/cases/conformance/types/typeRelationships/comparable/equalityStrictNulls.ts +++ b/tests/cases/conformance/types/typeRelationships/comparable/equalityStrictNulls.ts @@ -67,3 +67,13 @@ function f4(x: number) { if (x <= undefined) { } } +function f5(x: string) { + switch(x) { + case null: + break; + case undefined: + break; + default: + return; + } +}