Extracted class NoneApplicableCallsRenderer.
This commit is contained in:
@@ -69,10 +69,67 @@ public class IdeErrorMessages {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
private static final Renderer<Collection<? extends ResolvedCall<? extends CallableDescriptor>>> NONE_APPLICABLE_CALLS =
|
static {
|
||||||
new Renderer<Collection<? extends ResolvedCall<? extends CallableDescriptor>>>() {
|
MAP.put(TYPE_MISMATCH, "<html>Type mismatch.<table><tr><td>Required:</td><td>{0}</td></tr><tr><td>Found:</td><td>{1}</td></tr></table></html>", RENDER_TYPE, RENDER_TYPE);
|
||||||
|
|
||||||
|
MAP.put(ASSIGN_OPERATOR_AMBIGUITY, "<html>Assignment operators ambiguity. All these functions match.<ul>{0}</ul></table></html>",
|
||||||
|
HTML_AMBIGUOUS_CALLS);
|
||||||
|
|
||||||
|
MAP.put(WRONG_SETTER_PARAMETER_TYPE, "<html>Setter parameter type must be equal to the type of the property." +
|
||||||
|
"<table><tr><td>Expected:</td><td>{0}</td></tr>" +
|
||||||
|
"<tr><td>Found:</td><td>{1}</td></tr></table></html>", RENDER_TYPE, RENDER_TYPE);
|
||||||
|
MAP.put(WRONG_GETTER_RETURN_TYPE, "<html>Getter return type must be equal to the type of the property." +
|
||||||
|
"<table><tr><td>Expected:</td><td>{0}</td></tr>" +
|
||||||
|
"<tr><td>Found:</td><td>{1}</td></tr></table></html>", RENDER_TYPE, RENDER_TYPE);
|
||||||
|
|
||||||
|
MAP.put(ITERATOR_AMBIGUITY, "<html>Method ''iterator()'' is ambiguous for this expression.<ul>{0}</ul></html>", HTML_AMBIGUOUS_CALLS);
|
||||||
|
|
||||||
|
MAP.put(UPPER_BOUND_VIOLATED, "<html>Type argument is not within its bounds." +
|
||||||
|
"<table><tr><td>Expected:</td><td>{0}</td></tr>" +
|
||||||
|
"<tr><td>Found:</td><td>{1}</td></tr></table></html>", RENDER_TYPE, RENDER_TYPE);
|
||||||
|
|
||||||
|
MAP.put(TYPE_MISMATCH_IN_FOR_LOOP, "<html>Loop parameter type mismatch." +
|
||||||
|
"<table><tr><td>Iterated values:</td><td>{0}</td></tr>" +
|
||||||
|
"<tr><td>Parameter:</td><td>{1}</td></tr></table></html>", RENDER_TYPE, RENDER_TYPE);
|
||||||
|
|
||||||
|
MAP.put(RETURN_TYPE_MISMATCH_ON_OVERRIDE, "<html>Return type is ''{0}'', which is not a subtype of overridden<br/>" +
|
||||||
|
"{1}</html>",
|
||||||
|
new Renderer<CallableMemberDescriptor>() {
|
||||||
|
@NotNull
|
||||||
|
@Override
|
||||||
|
public String render(@NotNull CallableMemberDescriptor object) {
|
||||||
|
return DescriptorRenderer.TEXT.renderType(object.getReturnType());
|
||||||
|
}
|
||||||
|
}, DescriptorRenderer.HTML);
|
||||||
|
|
||||||
|
MAP.put(VAR_OVERRIDDEN_BY_VAL, "<html>Val-property cannot override var-property<br />" +
|
||||||
|
"{1}</html>", DescriptorRenderer.HTML, DescriptorRenderer.HTML);
|
||||||
|
|
||||||
|
MAP.put(ABSTRACT_MEMBER_NOT_IMPLEMENTED, "<html>{0} must be declared abstract or implement abstract member<br/>" +
|
||||||
|
"{1}</html>", RENDER_CLASS_OR_OBJECT,
|
||||||
|
DescriptorRenderer.HTML);
|
||||||
|
|
||||||
|
MAP.put(MANY_IMPL_MEMBER_NOT_IMPLEMENTED, "<html>{0} must override {1}<br />because it inherits many implementations of it</html>",
|
||||||
|
RENDER_CLASS_OR_OBJECT, DescriptorRenderer.HTML);
|
||||||
|
MAP.put(CONFLICTING_OVERLOADS, "<html>{1}<br />is already defined in ''{0}''</html>", DescriptorRenderer.HTML, TO_STRING);
|
||||||
|
|
||||||
|
MAP.put(RESULT_TYPE_MISMATCH, "<html>Function return type mismatch." +
|
||||||
|
"<table><tr><td>Expected:</td><td>{1}</td></tr>" +
|
||||||
|
"<tr><td>Found:</td><td>{2}</td></tr></table></html>", TO_STRING, RENDER_TYPE, RENDER_TYPE);
|
||||||
|
|
||||||
|
MAP.put(OVERLOAD_RESOLUTION_AMBIGUITY, "<html>Overload resolution ambiguity. All these functions match. <ul>{0}</ul></html>", HTML_AMBIGUOUS_CALLS);
|
||||||
|
MAP.put(NONE_APPLICABLE, "<html>None of the following functions can be called with the arguments supplied. <ul>{0}</ul></html>",
|
||||||
|
new NoneApplicableCallsRenderer());
|
||||||
|
|
||||||
|
MAP.setImmutable();
|
||||||
|
}
|
||||||
|
|
||||||
|
private IdeErrorMessages() {
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class NoneApplicableCallsRenderer implements Renderer<Collection<? extends ResolvedCall<? extends CallableDescriptor>>> {
|
||||||
@Nullable
|
@Nullable
|
||||||
private ValueParameterDescriptor findParameterByArgumentExpression(
|
private static ValueParameterDescriptor findParameterByArgumentExpression(
|
||||||
ResolvedCall<? extends CallableDescriptor> call,
|
ResolvedCall<? extends CallableDescriptor> call,
|
||||||
JetValueArgument argument) {
|
JetValueArgument argument) {
|
||||||
for (Map.Entry<ValueParameterDescriptor, ResolvedValueArgument> entry : call.getValueArguments()
|
for (Map.Entry<ValueParameterDescriptor, ResolvedValueArgument> entry : call.getValueArguments()
|
||||||
@@ -86,7 +143,7 @@ public class IdeErrorMessages {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Set<ValueParameterDescriptor> getParametersToHighlight(ResolvedCall<? extends CallableDescriptor> call) {
|
private static Set<ValueParameterDescriptor> getParametersToHighlight(ResolvedCall<? extends CallableDescriptor> call) {
|
||||||
Set<ValueParameterDescriptor> parameters = new HashSet<ValueParameterDescriptor>();
|
Set<ValueParameterDescriptor> parameters = new HashSet<ValueParameterDescriptor>();
|
||||||
if (call instanceof ResolvedCallImpl) {
|
if (call instanceof ResolvedCallImpl) {
|
||||||
Collection<Diagnostic> diagnostics = ((ResolvedCallImpl)call).getTrace().getBindingContext().getDiagnostics();
|
Collection<Diagnostic> diagnostics = ((ResolvedCallImpl)call).getTrace().getBindingContext().getDiagnostics();
|
||||||
@@ -153,63 +210,5 @@ public class IdeErrorMessages {
|
|||||||
}
|
}
|
||||||
return stringBuilder.toString();
|
return stringBuilder.toString();
|
||||||
}
|
}
|
||||||
};
|
|
||||||
|
|
||||||
static {
|
|
||||||
MAP.put(TYPE_MISMATCH, "<html>Type mismatch.<table><tr><td>Required:</td><td>{0}</td></tr><tr><td>Found:</td><td>{1}</td></tr></table></html>", RENDER_TYPE, RENDER_TYPE);
|
|
||||||
|
|
||||||
MAP.put(ASSIGN_OPERATOR_AMBIGUITY, "<html>Assignment operators ambiguity. All these functions match.<ul>{0}</ul></table></html>",
|
|
||||||
HTML_AMBIGUOUS_CALLS);
|
|
||||||
|
|
||||||
MAP.put(WRONG_SETTER_PARAMETER_TYPE, "<html>Setter parameter type must be equal to the type of the property." +
|
|
||||||
"<table><tr><td>Expected:</td><td>{0}</td></tr>" +
|
|
||||||
"<tr><td>Found:</td><td>{1}</td></tr></table></html>", RENDER_TYPE, RENDER_TYPE);
|
|
||||||
MAP.put(WRONG_GETTER_RETURN_TYPE, "<html>Getter return type must be equal to the type of the property." +
|
|
||||||
"<table><tr><td>Expected:</td><td>{0}</td></tr>" +
|
|
||||||
"<tr><td>Found:</td><td>{1}</td></tr></table></html>", RENDER_TYPE, RENDER_TYPE);
|
|
||||||
|
|
||||||
MAP.put(ITERATOR_AMBIGUITY, "<html>Method ''iterator()'' is ambiguous for this expression.<ul>{0}</ul></html>", HTML_AMBIGUOUS_CALLS);
|
|
||||||
|
|
||||||
MAP.put(UPPER_BOUND_VIOLATED, "<html>Type argument is not within its bounds." +
|
|
||||||
"<table><tr><td>Expected:</td><td>{0}</td></tr>" +
|
|
||||||
"<tr><td>Found:</td><td>{1}</td></tr></table></html>", RENDER_TYPE, RENDER_TYPE);
|
|
||||||
|
|
||||||
MAP.put(TYPE_MISMATCH_IN_FOR_LOOP, "<html>Loop parameter type mismatch." +
|
|
||||||
"<table><tr><td>Iterated values:</td><td>{0}</td></tr>" +
|
|
||||||
"<tr><td>Parameter:</td><td>{1}</td></tr></table></html>", RENDER_TYPE, RENDER_TYPE);
|
|
||||||
|
|
||||||
MAP.put(RETURN_TYPE_MISMATCH_ON_OVERRIDE, "<html>Return type is ''{0}'', which is not a subtype of overridden<br/>" +
|
|
||||||
"{1}</html>",
|
|
||||||
new Renderer<CallableMemberDescriptor>() {
|
|
||||||
@NotNull
|
|
||||||
@Override
|
|
||||||
public String render(@NotNull CallableMemberDescriptor object) {
|
|
||||||
return DescriptorRenderer.TEXT.renderType(object.getReturnType());
|
|
||||||
}
|
|
||||||
}, DescriptorRenderer.HTML);
|
|
||||||
|
|
||||||
MAP.put(VAR_OVERRIDDEN_BY_VAL, "<html>Val-property cannot override var-property<br />" +
|
|
||||||
"{1}</html>", DescriptorRenderer.HTML, DescriptorRenderer.HTML);
|
|
||||||
|
|
||||||
MAP.put(ABSTRACT_MEMBER_NOT_IMPLEMENTED, "<html>{0} must be declared abstract or implement abstract member<br/>" +
|
|
||||||
"{1}</html>", RENDER_CLASS_OR_OBJECT,
|
|
||||||
DescriptorRenderer.HTML);
|
|
||||||
|
|
||||||
MAP.put(MANY_IMPL_MEMBER_NOT_IMPLEMENTED, "<html>{0} must override {1}<br />because it inherits many implementations of it</html>",
|
|
||||||
RENDER_CLASS_OR_OBJECT, DescriptorRenderer.HTML);
|
|
||||||
MAP.put(CONFLICTING_OVERLOADS, "<html>{1}<br />is already defined in ''{0}''</html>", DescriptorRenderer.HTML, TO_STRING);
|
|
||||||
|
|
||||||
MAP.put(RESULT_TYPE_MISMATCH, "<html>Function return type mismatch." +
|
|
||||||
"<table><tr><td>Expected:</td><td>{1}</td></tr>" +
|
|
||||||
"<tr><td>Found:</td><td>{2}</td></tr></table></html>", TO_STRING, RENDER_TYPE, RENDER_TYPE);
|
|
||||||
|
|
||||||
MAP.put(OVERLOAD_RESOLUTION_AMBIGUITY, "<html>Overload resolution ambiguity. All these functions match. <ul>{0}</ul></html>", HTML_AMBIGUOUS_CALLS);
|
|
||||||
MAP.put(NONE_APPLICABLE, "<html>None of the following functions can be called with the arguments supplied. <ul>{0}</ul></html>",
|
|
||||||
NONE_APPLICABLE_CALLS);
|
|
||||||
|
|
||||||
MAP.setImmutable();
|
|
||||||
}
|
|
||||||
|
|
||||||
private IdeErrorMessages() {
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user