Add html escaping for declaration names in calls (KT-10763)
#KT-10763 Fixed
This commit is contained in:
@@ -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("") { "<li>" + DescriptorRenderer.HTML.render(it) + "</li>" }
|
||||
.joinToString("") { "<li>${DescriptorRenderer.HTML.render(it)}</li>" }
|
||||
}
|
||||
|
||||
@JvmField val HTML_RENDER_TYPE: Renderer<KotlinType> = Renderer {
|
||||
@@ -47,7 +47,7 @@ object IdeRenderers {
|
||||
val comparator = compareBy(MemberComparator.INSTANCE) { c: ResolvedCall<*> -> c.resultingDescriptor }
|
||||
calls
|
||||
.sortedWith(comparator)
|
||||
.joinToString("") { "<li>" + renderResolvedCall(it) + "</li>" }
|
||||
.joinToString("") { "<li>${renderResolvedCall(it)}</li>" }
|
||||
}
|
||||
|
||||
@JvmField val HTML_TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS_RENDERER: Renderer<InferenceErrorData> = Renderer {
|
||||
|
||||
@@ -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 <D : CallableDescriptor> renderResolvedCall(resolvedCall: ResolvedCall<D>):
|
||||
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 ")")
|
||||
|
||||
|
||||
@@ -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<String>) {
|
||||
A()
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
<!-- noneApplicableConstructor1 -->
|
||||
<html>
|
||||
None of the following functions can be called with the arguments supplied.
|
||||
<ul>
|
||||
<li><`init>(<font color=red><b>Int</b></font>) <i>defined in</i> A</li>
|
||||
<li>A(<font color=red><b>String</b></font>) <i>defined in</i> root package</li>
|
||||
</ul>
|
||||
</html>
|
||||
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user