diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/IdeRenderers.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/IdeRenderers.kt
index 902aad800f0..6ecd5dde134 100644
--- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/IdeRenderers.kt
+++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/IdeRenderers.kt
@@ -26,7 +26,7 @@ import org.jetbrains.kotlin.resolve.calls.inference.InferenceErrorData
import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall
import org.jetbrains.kotlin.resolve.jvm.diagnostics.ConflictingJvmDeclarationsData
import org.jetbrains.kotlin.types.KotlinType
-import kotlin.comparisons.*
+import kotlin.comparisons.compareBy
object IdeRenderers {
@@ -35,7 +35,7 @@ object IdeRenderers {
calls
.map { it.resultingDescriptor }
.sortedWith(MemberComparator.INSTANCE)
- .joinToString("") { "
" + DescriptorRenderer.HTML.render(it) + "" }
+ .joinToString("") { "${DescriptorRenderer.HTML.render(it)}" }
}
@JvmField val HTML_RENDER_TYPE: Renderer = Renderer {
@@ -47,7 +47,7 @@ object IdeRenderers {
val comparator = compareBy(MemberComparator.INSTANCE) { c: ResolvedCall<*> -> c.resultingDescriptor }
calls
.sortedWith(comparator)
- .joinToString("") { "" + renderResolvedCall(it) + "" }
+ .joinToString("") { "${renderResolvedCall(it)}" }
}
@JvmField val HTML_TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS_RENDERER: Renderer = Renderer {
diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/renderersUtil.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/renderersUtil.kt
index 9cf29694453..6649cb0c939 100644
--- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/renderersUtil.kt
+++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/renderersUtil.kt
@@ -16,6 +16,7 @@
package org.jetbrains.kotlin.idea.highlighter.renderersUtil
+import com.google.common.html.HtmlEscapers
import org.jetbrains.kotlin.descriptors.CallableDescriptor
import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor
import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor
@@ -98,7 +99,7 @@ fun renderResolvedCall(resolvedCall: ResolvedCall):
if (receiverParameter != null) {
append(htmlRenderer.renderType(receiverParameter.type)).append(".")
}
- append(resultingDescriptor.name).append("(")
+ append(HtmlEscapers.htmlEscaper().escape(resultingDescriptor.name.asString())).append("(")
append(resultingDescriptor.valueParameters.map { parameter -> renderParameter(parameter) }.joinToString())
append(if (resolvedCall.hasUnmappedArguments()) renderError(")") else ")")
diff --git a/idea/testData/diagnosticMessage/noneApplicableConstructor.kt b/idea/testData/diagnosticMessage/noneApplicableConstructor.kt
new file mode 100644
index 00000000000..f1ae2ce8ad2
--- /dev/null
+++ b/idea/testData/diagnosticMessage/noneApplicableConstructor.kt
@@ -0,0 +1,12 @@
+// !DIAGNOSTICS_NUMBER: 1
+// !DIAGNOSTICS: NONE_APPLICABLE
+// !MESSAGE_TYPE: HTML
+
+class A(a: Int) {
+}
+
+fun A(a: String) {}
+
+fun main(args: Array) {
+ A()
+}
\ No newline at end of file
diff --git a/idea/testData/diagnosticMessage/noneApplicableConstructor1.html b/idea/testData/diagnosticMessage/noneApplicableConstructor1.html
new file mode 100644
index 00000000000..1557a88f4b8
--- /dev/null
+++ b/idea/testData/diagnosticMessage/noneApplicableConstructor1.html
@@ -0,0 +1,8 @@
+
+
+None of the following functions can be called with the arguments supplied.
+
+ - <`init>(Int) defined in A
+ - A(String) defined in root package
+
+
\ No newline at end of file
diff --git a/idea/tests/org/jetbrains/kotlin/idea/highlighter/DiagnosticMessageTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/highlighter/DiagnosticMessageTestGenerated.java
index 5cb1447ba2e..2d646cb701f 100644
--- a/idea/tests/org/jetbrains/kotlin/idea/highlighter/DiagnosticMessageTestGenerated.java
+++ b/idea/tests/org/jetbrains/kotlin/idea/highlighter/DiagnosticMessageTestGenerated.java
@@ -155,6 +155,12 @@ public class DiagnosticMessageTestGenerated extends AbstractDiagnosticMessageTes
doTest(fileName);
}
+ @TestMetadata("noneApplicableConstructor.kt")
+ public void testNoneApplicableConstructor() throws Exception {
+ String fileName = KotlinTestUtils.navigationMetadata("idea/testData/diagnosticMessage/noneApplicableConstructor.kt");
+ doTest(fileName);
+ }
+
@TestMetadata("noneApplicableGeneric.kt")
public void testNoneApplicableGeneric() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/diagnosticMessage/noneApplicableGeneric.kt");