Showing receiver types in the IDE errors for NONE_APPLICABLE/AMBIGUITY

#KT-1997 fixed
This commit is contained in:
Evgeny Gerashchenko
2012-05-16 13:24:21 +04:00
parent 82426e605d
commit 58a3ec1e73
@@ -36,6 +36,7 @@ import org.jetbrains.jet.lang.resolve.FqNameUnsafe;
import org.jetbrains.jet.lang.resolve.calls.ResolvedCall; import org.jetbrains.jet.lang.resolve.calls.ResolvedCall;
import org.jetbrains.jet.lang.resolve.calls.ResolvedCallImpl; import org.jetbrains.jet.lang.resolve.calls.ResolvedCallImpl;
import org.jetbrains.jet.lang.resolve.calls.ResolvedValueArgument; import org.jetbrains.jet.lang.resolve.calls.ResolvedValueArgument;
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverDescriptor;
import org.jetbrains.jet.lang.types.JetType; import org.jetbrains.jet.lang.types.JetType;
import org.jetbrains.jet.resolve.DescriptorRenderer; import org.jetbrains.jet.resolve.DescriptorRenderer;
@@ -190,9 +191,12 @@ public class IdeErrorMessages {
CallableDescriptor funDescriptor = call.getResultingDescriptor(); CallableDescriptor funDescriptor = call.getResultingDescriptor();
Set<ValueParameterDescriptor> parametersToHighlight = getParametersToHighlight(call); Set<ValueParameterDescriptor> parametersToHighlight = getParametersToHighlight(call);
DescriptorRenderer htmlRenderer = DescriptorRenderer.HTML;
if (funDescriptor.getReceiverParameter() != ReceiverDescriptor.NO_RECEIVER) {
stringBuilder.append(htmlRenderer.renderType(funDescriptor.getReceiverParameter().getType())).append(".");
}
stringBuilder.append(funDescriptor.getName()).append("("); stringBuilder.append(funDescriptor.getName()).append("(");
boolean first = true; boolean first = true;
DescriptorRenderer htmlRend = DescriptorRenderer.HTML;
for (ValueParameterDescriptor parameter : funDescriptor.getValueParameters()) { for (ValueParameterDescriptor parameter : funDescriptor.getValueParameters()) {
if (!first) { if (!first) {
stringBuilder.append(", "); stringBuilder.append(", ");
@@ -202,7 +206,7 @@ public class IdeErrorMessages {
if (varargElementType != null) { if (varargElementType != null) {
type = varargElementType; type = varargElementType;
} }
String paramString = (varargElementType != null ? "<b>vararg</b> " : "") + htmlRend.renderType(type); String paramString = (varargElementType != null ? "<b>vararg</b> " : "") + htmlRenderer.renderType(type);
if (parameter.hasDefaultValue()) { if (parameter.hasDefaultValue()) {
paramString += " = ..."; paramString += " = ...";
} }
@@ -214,7 +218,7 @@ public class IdeErrorMessages {
first = false; first = false;
} }
stringBuilder.append(parametersToHighlight.contains(null) ? String.format(RED_TEMPLATE, ")") : ")"); stringBuilder.append(parametersToHighlight.contains(null) ? String.format(RED_TEMPLATE, ")") : ")");
stringBuilder.append(" ").append(htmlRend.renderMessage("defined in")).append(" "); stringBuilder.append(" ").append(htmlRenderer.renderMessage("defined in")).append(" ");
DeclarationDescriptor containingDeclaration = funDescriptor.getContainingDeclaration(); DeclarationDescriptor containingDeclaration = funDescriptor.getContainingDeclaration();
if (containingDeclaration != null) { if (containingDeclaration != null) {
FqNameUnsafe fqName = DescriptorUtils.getFQName(containingDeclaration); FqNameUnsafe fqName = DescriptorUtils.getFQName(containingDeclaration);