@@ -20884,7 +20884,31 @@ namespace ts {
20884
20884
}
20885
20885
20886
20886
function reportOperatorError() {
20887
- error(errorNode || operatorToken, Diagnostics.Operator_0_cannot_be_applied_to_types_1_and_2, tokenToString(operatorToken.kind), typeToString(leftType), typeToString(rightType));
20887
+ let err = chainDiagnosticMessages(
20888
+ /*elaboration*/ undefined,
20889
+ Diagnostics.Operator_0_cannot_be_applied_to_types_1_and_2,
20890
+ tokenToString(operatorToken.kind),
20891
+ typeToString(leftType),
20892
+ typeToString(rightType)
20893
+ );
20894
+ err = giveBetterPrimaryError(err);
20895
+
20896
+ diagnostics.add(createDiagnosticForNodeFromMessageChain(
20897
+ errorNode || operatorToken,
20898
+ err
20899
+ ));
20900
+ }
20901
+
20902
+ function giveBetterPrimaryError(elaboration: DiagnosticMessageChain) {
20903
+ switch (operatorToken.kind) {
20904
+ case SyntaxKind.EqualsEqualsEqualsToken:
20905
+ case SyntaxKind.EqualsEqualsToken:
20906
+ return chainDiagnosticMessages(elaboration, Diagnostics.The_types_of_these_values_indicates_that_this_condition_will_always_be_0, "false");
20907
+ case SyntaxKind.ExclamationEqualsEqualsToken:
20908
+ case SyntaxKind.ExclamationEqualsToken:
20909
+ return chainDiagnosticMessages(elaboration, Diagnostics.The_types_of_these_values_indicates_that_this_condition_will_always_be_0, "true");
20910
+ }
20911
+ return elaboration;
20888
20912
}
20889
20913
}
20890
20914
0 commit comments