diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 75be36474222f..d9efc284f1b88 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -40789,6 +40789,9 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { if (checkForDisallowedESSymbolOperand(operator)) { leftType = getBaseTypeOfLiteralTypeForComparison(checkNonNullType(leftType, left)); rightType = getBaseTypeOfLiteralTypeForComparison(checkNonNullType(rightType, right)); + if (leftType.flags === TypeFlags.String && rightType.flags === TypeFlags.String) { + error(errorNode, Diagnostics.Cannot_compare_strings); + } reportOperatorErrorUnless((left, right) => { if (isTypeAny(left) || isTypeAny(right)) { return true; diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 0e60926c93d50..4e2ef2c651fd9 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -8519,5 +8519,9 @@ "'{0}' is not a valid meta-property for keyword 'import'. Did you mean 'meta' or 'defer'?": { "category": "Error", "code": 18061 + }, + "Cannot compare strings": { + "category": "Error", + "code": 18062 } } diff --git a/tests/baselines/reference/stringComp.js b/tests/baselines/reference/stringComp.js new file mode 100644 index 0000000000000..f636152889758 --- /dev/null +++ b/tests/baselines/reference/stringComp.js @@ -0,0 +1,6 @@ +//// [tests/cases/compiler/stringComp.ts] //// + +//// [stringComp.ts] + + +//// [stringComp.js] diff --git a/tests/baselines/reference/stringComp.symbols b/tests/baselines/reference/stringComp.symbols new file mode 100644 index 0000000000000..5b2186d07237d --- /dev/null +++ b/tests/baselines/reference/stringComp.symbols @@ -0,0 +1,4 @@ +//// [tests/cases/compiler/stringComp.ts] //// + +=== stringComp.ts === + diff --git a/tests/baselines/reference/stringComp.types b/tests/baselines/reference/stringComp.types new file mode 100644 index 0000000000000..5b2186d07237d --- /dev/null +++ b/tests/baselines/reference/stringComp.types @@ -0,0 +1,4 @@ +//// [tests/cases/compiler/stringComp.ts] //// + +=== stringComp.ts === + diff --git a/tests/cases/compiler/stringComp.ts b/tests/cases/compiler/stringComp.ts new file mode 100644 index 0000000000000..b0de87196ff6a --- /dev/null +++ b/tests/cases/compiler/stringComp.ts @@ -0,0 +1,3 @@ +if ("bar" <= "foo") { + console.log("Really?") +} \ No newline at end of file