Fix rendering of local anonymous object types for quick doc
#KT-8893 fixed
This commit is contained in:
@@ -60,6 +60,25 @@ import org.jetbrains.kotlin.utils.addToStdlib.constant
|
||||
|
||||
class HtmlClassifierNamePolicy(val base: ClassifierNamePolicy) : ClassifierNamePolicy {
|
||||
override fun renderClassifier(classifier: ClassifierDescriptor, renderer: DescriptorRenderer): String {
|
||||
if (DescriptorUtils.isAnonymousObject(classifier)) {
|
||||
|
||||
val supertypes = classifier.typeConstructor.supertypes
|
||||
return buildString {
|
||||
append("<anonymous object")
|
||||
if (supertypes.isNotEmpty()) {
|
||||
append(" : ")
|
||||
supertypes.joinTo(this) {
|
||||
val ref = it.constructor.declarationDescriptor
|
||||
if (ref != null)
|
||||
renderClassifier(ref, renderer)
|
||||
else
|
||||
"<ERROR CLASS>"
|
||||
}
|
||||
}
|
||||
append(">")
|
||||
}
|
||||
}
|
||||
|
||||
val name = base.renderClassifier(classifier, renderer)
|
||||
if (classifier.isBoringBuiltinClass())
|
||||
return name
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
interface OurFace
|
||||
open class OurClass
|
||||
|
||||
fun context() {
|
||||
val v = object : OurClass(), OurFace {}
|
||||
v<caret>
|
||||
}
|
||||
|
||||
//INFO: <pre><b>val</b> v: <anonymous object : <a href="psi_element://OurClass">OurClass</a>, <a href="psi_element://OurFace">OurFace</a>></pre>
|
||||
+6
@@ -36,6 +36,12 @@ public class QuickDocProviderTestGenerated extends AbstractQuickDocProviderTest
|
||||
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/editor/quickDoc"), Pattern.compile("^([^_]+)\\.[^\\.]*$"), TargetBackend.ANY, true);
|
||||
}
|
||||
|
||||
@TestMetadata("AnonymousObjectLocalVariable.kt")
|
||||
public void testAnonymousObjectLocalVariable() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/editor/quickDoc/AnonymousObjectLocalVariable.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("AtConstantWithUnderscore.kt")
|
||||
public void testAtConstantWithUnderscore() throws Exception {
|
||||
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/editor/quickDoc/AtConstantWithUnderscore.kt");
|
||||
|
||||
Reference in New Issue
Block a user