From b484ce711f28a6deb1bb7654245a3cd10719b438 Mon Sep 17 00:00:00 2001 From: "Natalia.Ukhorskaya" Date: Tue, 16 Apr 2013 16:01:34 +0400 Subject: [PATCH] Refactoring: extract NONE_APPLICABLE renderer --- .../plugin/highlighter/IdeErrorMessages.java | 4 +- .../jet/plugin/highlighter/IdeRenderers.java | 162 +++++++++--------- 2 files changed, 83 insertions(+), 83 deletions(-) diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/IdeErrorMessages.java b/idea/src/org/jetbrains/jet/plugin/highlighter/IdeErrorMessages.java index 48b3c5538f9..9e04c861bd9 100644 --- a/idea/src/org/jetbrains/jet/plugin/highlighter/IdeErrorMessages.java +++ b/idea/src/org/jetbrains/jet/plugin/highlighter/IdeErrorMessages.java @@ -91,12 +91,12 @@ public class IdeErrorMessages { MAP.put(OVERLOAD_RESOLUTION_AMBIGUITY, "Overload resolution ambiguity. All these functions match. ", HTML_AMBIGUOUS_CALLS); MAP.put(NONE_APPLICABLE, "None of the following functions can be called with the arguments supplied. ", - new NoneApplicableCallsRenderer()); + HTML_NONE_APPLICABLE_CALLS); MAP.put(CANNOT_COMPLETE_RESOLVE, "Cannot choose among the following candidates without completing type inference: ", HTML_AMBIGUOUS_CALLS); MAP.put(DELEGATE_SPECIAL_FUNCTION_AMBIGUITY, "Overload resolution ambiguity on method ''{0}''. All these functions match. ", TO_STRING, HTML_AMBIGUOUS_CALLS); MAP.put(DELEGATE_SPECIAL_FUNCTION_NONE_APPLICABLE, "Property delegate must have a ''{0}'' method. None of the following functions is suitable. ", - TO_STRING, new NoneApplicableCallsRenderer()); + TO_STRING, HTML_NONE_APPLICABLE_CALLS); MAP.setImmutable(); } diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/IdeRenderers.java b/idea/src/org/jetbrains/jet/plugin/highlighter/IdeRenderers.java index 385f09f429d..6f45895de6a 100644 --- a/idea/src/org/jetbrains/jet/plugin/highlighter/IdeRenderers.java +++ b/idea/src/org/jetbrains/jet/plugin/highlighter/IdeRenderers.java @@ -84,95 +84,95 @@ public class IdeRenderers { } }; - - public static class NoneApplicableCallsRenderer implements Renderer>> { - @Nullable - private static ValueParameterDescriptor findParameterByArgumentExpression( - ResolvedCall call, - JetValueArgument argument) { - for (Map.Entry entry : call.getValueArguments().entrySet()) { - for (ValueArgument va : entry.getValue().getArguments()) { - if (va == argument) { - return entry.getKey(); - } - } - } - return null; - } - - private static Set getParametersToHighlight(ResolvedCall call) { - Set parameters = new HashSet(); - if (call instanceof ResolvedCallImpl) { - Collection diagnostics = ((ResolvedCallImpl)call).getTrace().getBindingContext().getDiagnostics(); - for (Diagnostic diagnostic : diagnostics) { - if (diagnostic.getFactory() == Errors.TOO_MANY_ARGUMENTS) { - parameters.add(null); - } else if (diagnostic.getFactory() == Errors.NO_VALUE_FOR_PARAMETER) { - ValueParameterDescriptor parameter = - ((DiagnosticWithParameters1)diagnostic).getA(); - parameters.add(parameter); - } else { - JetValueArgument argument = PsiTreeUtil.getParentOfType(diagnostic.getPsiElement(), JetValueArgument.class, false); - if (argument != null) { - ValueParameterDescriptor parameter = findParameterByArgumentExpression(call, argument); - if (parameter != null) { - parameters.add(parameter); + public static final Renderer>> HTML_NONE_APPLICABLE_CALLS = + new Renderer>>() { + @Nullable + private ValueParameterDescriptor findParameterByArgumentExpression( + ResolvedCall call, + JetValueArgument argument) { + for (Map.Entry entry : call.getValueArguments().entrySet()) { + for (ValueArgument va : entry.getValue().getArguments()) { + if (va == argument) { + return entry.getKey(); } } } + return null; } - } - return parameters; - } - @NotNull - @Override - public String render(@NotNull Collection> calls) { - StringBuilder stringBuilder = new StringBuilder(""); - for (ResolvedCall call : calls) { - stringBuilder.append("
  • "); - CallableDescriptor funDescriptor = call.getResultingDescriptor(); - Set parametersToHighlight = getParametersToHighlight(call); + private Set getParametersToHighlight(ResolvedCall call) { + Set parameters = new HashSet(); + if (call instanceof ResolvedCallImpl) { + Collection diagnostics = ((ResolvedCallImpl)call).getTrace().getBindingContext().getDiagnostics(); + for (Diagnostic diagnostic : diagnostics) { + if (diagnostic.getFactory() == Errors.TOO_MANY_ARGUMENTS) { + parameters.add(null); + } else if (diagnostic.getFactory() == Errors.NO_VALUE_FOR_PARAMETER) { + ValueParameterDescriptor parameter = + ((DiagnosticWithParameters1)diagnostic).getA(); + parameters.add(parameter); + } else { + JetValueArgument argument = PsiTreeUtil.getParentOfType(diagnostic.getPsiElement(), JetValueArgument.class, false); + if (argument != null) { + ValueParameterDescriptor parameter = findParameterByArgumentExpression(call, argument); + if (parameter != null) { + parameters.add(parameter); + } + } + } + } + } + return parameters; + } - DescriptorRenderer htmlRenderer = DescriptorRenderer.HTML; - ReceiverParameterDescriptor receiverParameter = funDescriptor.getReceiverParameter(); - if (receiverParameter != null) { - stringBuilder.append(htmlRenderer.renderType(receiverParameter.getType())).append("."); - } - stringBuilder.append(funDescriptor.getName()).append("("); - boolean first = true; - for (ValueParameterDescriptor parameter : funDescriptor.getValueParameters()) { - if (!first) { - stringBuilder.append(", "); - } - JetType type = parameter.getType(); - JetType varargElementType = parameter.getVarargElementType(); - if (varargElementType != null) { - type = varargElementType; - } - String paramString = (varargElementType != null ? "vararg " : "") + htmlRenderer.renderType(type); - if (parameter.hasDefaultValue()) { - paramString += " = ..."; - } - if (parametersToHighlight.contains(parameter)) { - paramString = String.format(RED_TEMPLATE, paramString); - } - stringBuilder.append(paramString); + @NotNull + @Override + public String render(@NotNull Collection> calls) { + StringBuilder stringBuilder = new StringBuilder(""); + for (ResolvedCall call : calls) { + stringBuilder.append("
  • "); + CallableDescriptor funDescriptor = call.getResultingDescriptor(); + Set parametersToHighlight = getParametersToHighlight(call); - first = false; + DescriptorRenderer htmlRenderer = DescriptorRenderer.HTML; + ReceiverParameterDescriptor receiverParameter = funDescriptor.getReceiverParameter(); + if (receiverParameter != null) { + stringBuilder.append(htmlRenderer.renderType(receiverParameter.getType())).append("."); + } + stringBuilder.append(funDescriptor.getName()).append("("); + boolean first = true; + for (ValueParameterDescriptor parameter : funDescriptor.getValueParameters()) { + if (!first) { + stringBuilder.append(", "); + } + JetType type = parameter.getType(); + JetType varargElementType = parameter.getVarargElementType(); + if (varargElementType != null) { + type = varargElementType; + } + String paramString = (varargElementType != null ? "vararg " : "") + htmlRenderer.renderType(type); + if (parameter.hasDefaultValue()) { + paramString += " = ..."; + } + if (parametersToHighlight.contains(parameter)) { + paramString = String.format(RED_TEMPLATE, paramString); + } + stringBuilder.append(paramString); + + first = false; + } + stringBuilder.append(parametersToHighlight.contains(null) ? String.format(RED_TEMPLATE, ")") : ")"); + stringBuilder.append(" defined in "); + DeclarationDescriptor containingDeclaration = funDescriptor.getContainingDeclaration(); + if (containingDeclaration != null) { + FqNameUnsafe fqName = DescriptorUtils.getFQName(containingDeclaration); + stringBuilder.append(FqName.ROOT.equalsTo(fqName) ? "root package" : fqName.getFqName()); + } + stringBuilder.append("
  • "); + } + return stringBuilder.toString(); } - stringBuilder.append(parametersToHighlight.contains(null) ? String.format(RED_TEMPLATE, ")") : ")"); - stringBuilder.append(" defined in "); - DeclarationDescriptor containingDeclaration = funDescriptor.getContainingDeclaration(); - if (containingDeclaration != null) { - FqNameUnsafe fqName = DescriptorUtils.getFQName(containingDeclaration); - stringBuilder.append(FqName.ROOT.equalsTo(fqName) ? "root package" : fqName.getFqName()); - } - stringBuilder.append(""); - } - return stringBuilder.toString(); - } - } + }; public static final Renderer HTML_TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS_RENDERER = new Renderer() {