mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-06-15 22:15:05 -05:00
Report primitive type in literal-to-primitive relation complaints
This commit is contained in:
@@ -4070,12 +4070,19 @@ namespace ts {
|
||||
let leftStr = symbolValueDeclarationIsContextSensitive(left.symbol) ? typeToString(left, left.symbol.valueDeclaration) : typeToString(left);
|
||||
let rightStr = symbolValueDeclarationIsContextSensitive(right.symbol) ? typeToString(right, right.symbol.valueDeclaration) : typeToString(right);
|
||||
if (leftStr === rightStr) {
|
||||
leftStr = typeToString(left, /*enclosingDeclaration*/ undefined, TypeFormatFlags.UseFullyQualifiedType);
|
||||
rightStr = typeToString(right, /*enclosingDeclaration*/ undefined, TypeFormatFlags.UseFullyQualifiedType);
|
||||
leftStr = getTypeNameForErrorDisplay(left);
|
||||
rightStr = getTypeNameForErrorDisplay(right);
|
||||
}
|
||||
else if (isLiteralType(left) && !isLiteralType(right)) {
|
||||
leftStr = getTypeNameForErrorDisplay(getBaseTypeOfLiteralType(left))
|
||||
}
|
||||
return [leftStr, rightStr];
|
||||
}
|
||||
|
||||
function getTypeNameForErrorDisplay(type: Type) {
|
||||
return typeToString(type, /*enclosingDeclaration*/ undefined, TypeFormatFlags.UseFullyQualifiedType);
|
||||
}
|
||||
|
||||
function symbolValueDeclarationIsContextSensitive(symbol: Symbol): boolean {
|
||||
return symbol && symbol.valueDeclaration && isExpression(symbol.valueDeclaration) && !isContextSensitive(symbol.valueDeclaration);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user