diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/IdeRenderers.java b/idea/src/org/jetbrains/jet/plugin/highlighter/IdeRenderers.java
index 9f5f2239227..164b03111b5 100644
--- a/idea/src/org/jetbrains/jet/plugin/highlighter/IdeRenderers.java
+++ b/idea/src/org/jetbrains/jet/plugin/highlighter/IdeRenderers.java
@@ -17,13 +17,9 @@
package org.jetbrains.jet.plugin.highlighter;
import org.jetbrains.annotations.NotNull;
-import org.jetbrains.jet.lang.descriptors.*;
-import org.jetbrains.jet.lang.psi.ValueArgument;
-import org.jetbrains.jet.lang.resolve.DescriptorUtils;
+import org.jetbrains.jet.lang.descriptors.CallableMemberDescriptor;
import org.jetbrains.jet.lang.resolve.calls.inference.InferenceErrorData;
-import org.jetbrains.jet.lang.resolve.calls.model.*;
-import org.jetbrains.jet.lang.resolve.name.FqName;
-import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe;
+import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall;
import org.jetbrains.jet.lang.types.JetType;
import org.jetbrains.jet.renderer.DescriptorRenderer;
import org.jetbrains.jet.renderer.Renderer;
@@ -31,21 +27,23 @@ import org.jetbrains.jet.renderer.Renderer;
import java.util.Collection;
import static org.jetbrains.jet.lang.diagnostics.rendering.Renderers.*;
-import static org.jetbrains.jet.lang.resolve.calls.util.UtilPackage.hasErrorOnParameter;
-import static org.jetbrains.jet.lang.resolve.calls.util.UtilPackage.hasUnmappedArguments;
+import static org.jetbrains.jet.plugin.highlighter.renderersUtil.RenderersUtilPackage.renderResolvedCall;
public class IdeRenderers {
private static final String RED_TEMPLATE = "%s";
private static final String STRONG_TEMPLATE = "%s";
+ @NotNull
public static String strong(Object o) {
return String.format(STRONG_TEMPLATE, o);
}
+ @NotNull
public static String error(Object o) {
return String.format(RED_TEMPLATE, o);
}
+ @NotNull
public static String strong(Object o, boolean error) {
return String.format(error ? RED_TEMPLATE : STRONG_TEMPLATE, o);
}
@@ -82,40 +80,7 @@ public class IdeRenderers {
StringBuilder stringBuilder = new StringBuilder("");
for (ResolvedCall> resolvedCall : calls) {
stringBuilder.append("
");
- CallableDescriptor funDescriptor = resolvedCall.getResultingDescriptor();
-
- 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 (hasErrorOnParameter(resolvedCall, parameter)) {
- paramString = String.format(RED_TEMPLATE, paramString);
- }
- stringBuilder.append(paramString);
-
- first = false;
- }
- stringBuilder.append(hasUnmappedArguments(resolvedCall) ? String.format(RED_TEMPLATE, ")") : ")");
- stringBuilder.append(" defined in ");
- DeclarationDescriptor containingDeclaration = funDescriptor.getContainingDeclaration();
- FqNameUnsafe fqName = DescriptorUtils.getFqName(containingDeclaration);
- stringBuilder.append(FqName.ROOT.equalsTo(fqName) ? "root package" : fqName.asString());
+ stringBuilder.append(renderResolvedCall(resolvedCall));
stringBuilder.append("");
}
return stringBuilder.toString();
diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/renderersUtil.kt b/idea/src/org/jetbrains/jet/plugin/highlighter/renderersUtil.kt
new file mode 100644
index 00000000000..dcc41b5a073
--- /dev/null
+++ b/idea/src/org/jetbrains/jet/plugin/highlighter/renderersUtil.kt
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2010-2014 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.jetbrains.jet.plugin.highlighter.renderersUtil
+
+import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall
+import org.jetbrains.jet.lang.descriptors.CallableDescriptor
+import org.jetbrains.jet.renderer.DescriptorRenderer
+import org.jetbrains.jet.lang.descriptors.ReceiverParameterDescriptor
+import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor
+import org.jetbrains.jet.lang.types.JetType
+import org.jetbrains.jet.lang.resolve.calls.util.*
+import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor
+import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe
+import org.jetbrains.jet.lang.resolve.DescriptorUtils
+import org.jetbrains.jet.lang.resolve.name.FqName
+import org.jetbrains.jet.plugin.highlighter.IdeRenderers
+
+fun renderResolvedCall(resolvedCall: ResolvedCall): String {
+ val stringBuilder = StringBuilder("")
+ val funDescriptor = resolvedCall.getResultingDescriptor()
+
+ val htmlRenderer = DescriptorRenderer.HTML
+ val receiverParameter = funDescriptor.getReceiverParameter()
+ if (receiverParameter != null) {
+ stringBuilder.append(htmlRenderer.renderType(receiverParameter.getType())).append(".")
+ }
+ stringBuilder.append(funDescriptor.getName()).append("(")
+ var first = true
+ for (parameter in funDescriptor.getValueParameters()) {
+ if (!first) {
+ stringBuilder.append(", ")
+ }
+ var parameterType = parameter.getType()
+ val varargElementType = parameter.getVarargElementType()
+ if (varargElementType != null) {
+ parameterType = varargElementType
+ }
+ var paramString: String = (if (varargElementType != null) "vararg " else "") + htmlRenderer.renderType(parameterType)
+ if (parameter.hasDefaultValue()) {
+ paramString += " = ..."
+ }
+ if (resolvedCall.hasErrorOnParameter(parameter)) {
+ paramString = IdeRenderers.error(paramString)
+ }
+ stringBuilder.append(paramString)
+
+ first = false
+ }
+ stringBuilder.append(if (resolvedCall.hasUnmappedArguments()) IdeRenderers.error(")") else ")")
+ stringBuilder.append(" defined in ")
+ val containingDeclaration = funDescriptor.getContainingDeclaration()
+ val fqName = DescriptorUtils.getFqName(containingDeclaration)
+ stringBuilder.append(if (FqName.ROOT.equalsTo(fqName)) "root package" else fqName.asString())
+ return stringBuilder.toString()
+}
\ No newline at end of file