diff --git a/compiler/visualizer/render-psi/src/org/jetbrains/kotlin/compiler/visualizer/PsiVisualizer.kt b/compiler/visualizer/render-psi/src/org/jetbrains/kotlin/compiler/visualizer/PsiVisualizer.kt index e79cd29c719..769eed5d2a3 100644 --- a/compiler/visualizer/render-psi/src/org/jetbrains/kotlin/compiler/visualizer/PsiVisualizer.kt +++ b/compiler/visualizer/render-psi/src/org/jetbrains/kotlin/compiler/visualizer/PsiVisualizer.kt @@ -107,26 +107,29 @@ class PsiVisualizer(private val file: KtFile, analysisResult: AnalysisResult) : } override fun visitTypeReference(typeReference: KtTypeReference) { - if (typeReference.text.isNotEmpty()) { - val hasResolvedCall = with(object : KtVisitorVoid() { - var hasCall: Boolean = false - override fun visitKtElement(element: KtElement) { - if (!hasCall) { - hasCall = element.getResolvedCall(bindingContext) != null - element.acceptChildren(this) - } - } - }) { - typeReference.accept(this) - this.hasCall - } - - if (!hasResolvedCall) { - val type = typeReference.getAbbreviatedTypeOrType(bindingContext) - addAnnotation(renderType(type), typeReference) - } + if (typeReference.text.isEmpty()) { + return super.visitTypeReference(typeReference) + } + + val hasResolvedCall = with(object : KtVisitorVoid() { + var hasCall: Boolean = false + override fun visitKtElement(element: KtElement) { + if (!hasCall) { + element.getResolvedCall(bindingContext)?.let { + hasCall = true + element.accept(this@Renderer) + } ?: element.acceptChildren(this) + } + } + }) { + typeReference.accept(this) + this.hasCall + } + + if (!hasResolvedCall) { + val type = typeReference.getAbbreviatedTypeOrType(bindingContext) + addAnnotation(renderType(type), typeReference) } - super.visitTypeReference(typeReference) } override fun visitConstantExpression(expression: KtConstantExpression) { diff --git a/compiler/visualizer/testData/rawBuilder/declarations/complexTypes.kt b/compiler/visualizer/testData/rawBuilder/declarations/complexTypes.kt index 17b17a2fdac..c5fc2fe6a69 100644 --- a/compiler/visualizer/testData/rawBuilder/declarations/complexTypes.kt +++ b/compiler/visualizer/testData/rawBuilder/declarations/complexTypes.kt @@ -9,7 +9,7 @@ class C { interface Test { // C.D, *> -// │ class C collections/List<*> -// │ │ │ +// │ C.D, *> +// │ │ val x: a.b.C.D, *> } diff --git a/compiler/visualizer/testData/rawBuilder/declarations/constructorOfAnonymousObject.kt b/compiler/visualizer/testData/rawBuilder/declarations/constructorOfAnonymousObject.kt index d05ca5fdd8d..e892121f09c 100644 --- a/compiler/visualizer/testData/rawBuilder/declarations/constructorOfAnonymousObject.kt +++ b/compiler/visualizer/testData/rawBuilder/declarations/constructorOfAnonymousObject.kt @@ -7,12 +7,10 @@ private fun resolveAccessorCall( // │ context: TranslationContext // [ERROR : ResolvedCall]<[ERROR : PropertyDescriptor]> -// │ [ERROR : PropertyDescriptor] -// │ │ +// │ ): ResolvedCall { // [ERROR : ResolvedCall]<[ERROR : PropertyDescriptor]> -// │ [ERROR : PropertyDescriptor] -// │ │ +// │ return object : ResolvedCall { // [ERROR : ] // │ [ERROR: not resolved] diff --git a/compiler/visualizer/testData/rawBuilder/declarations/typeParameterVsNested.kt b/compiler/visualizer/testData/rawBuilder/declarations/typeParameterVsNested.kt index eead669754d..3cc0b285c05 100644 --- a/compiler/visualizer/testData/rawBuilder/declarations/typeParameterVsNested.kt +++ b/compiler/visualizer/testData/rawBuilder/declarations/typeParameterVsNested.kt @@ -13,13 +13,13 @@ abstract class My { abstract fun foo(arg: T) // [ERROR : T] -// │ class My +// │ [ERROR : T] // │ │ abstract val y: My.T // [ERROR : T] -// │ class My -// │ │ +// │ [ERROR : T] +// │ │ abstract val z: test.My.T // [ERROR : T] diff --git a/compiler/visualizer/testData/uncommonCases/resultFiles/lists.kt b/compiler/visualizer/testData/uncommonCases/resultFiles/lists.kt index 57287829d71..f9486587787 100644 --- a/compiler/visualizer/testData/uncommonCases/resultFiles/lists.kt +++ b/compiler/visualizer/testData/uncommonCases/resultFiles/lists.kt @@ -13,6 +13,8 @@ val listOfInt = listOf(1, 2, 3) // │ │ val javaList = java.util.ArrayList() +// java/util/ArrayList +// │ fun move(): java.util.ArrayList { // Int val listOfInt: collections/List // │ │