diff --git a/idea/src/org/jetbrains/kotlin/idea/debugger/JetPositionManager.kt b/idea/src/org/jetbrains/kotlin/idea/debugger/JetPositionManager.kt index 073b0073c55..09d056f084a 100644 --- a/idea/src/org/jetbrains/kotlin/idea/debugger/JetPositionManager.kt +++ b/idea/src/org/jetbrains/kotlin/idea/debugger/JetPositionManager.kt @@ -321,7 +321,7 @@ public class JetPositionManager(private val myDebugProcess: DebugProcess) : Mult if (parent is JetObjectDeclaration && parent.isCompanion()) { return PositionedElement(getInternalClassNameForElement(parent.getParent(), typeMapper, file, isInLibrary).className, parent) } - return getInternalClassNameForElement(element, typeMapper, file, isInLibrary) + return getInternalClassNameForElement(element.getParent(), typeMapper, file, isInLibrary) } element is JetProperty && (!element.isTopLevel() || !isInLibrary) -> { if (isInPropertyAccessor(notPositionedElement)) { @@ -343,7 +343,7 @@ public class JetPositionManager(private val myDebugProcess: DebugProcess) : Mult return getInternalClassNameForElement(element.getParent(), typeMapper, file, isInLibrary) } - val parent = getElementToCalculateClassName(element) + val parent = getElementToCalculateClassName(element.getParent()) if (parent is JetClassOrObject) { return PositionedElement(getJvmInternalNameForImpl(typeMapper, parent), element) } @@ -369,13 +369,18 @@ public class JetPositionManager(private val myDebugProcess: DebugProcess) : Mult return PositionedElement(PackagePartClassUtils.getPackagePartInternalName(file), element) } - private fun getElementToCalculateClassName(notPositionedElement: PsiElement?): JetElement? = - PsiTreeUtil.getParentOfType(notPositionedElement, - javaClass(), - javaClass(), - javaClass(), - javaClass(), - javaClass()) + private val TYPES_TO_CALCULATE_CLASSNAME: Array> = + arrayOf(javaClass(), + javaClass(), + javaClass(), + javaClass(), + javaClass()) + + private fun getElementToCalculateClassName(notPositionedElement: PsiElement?): JetElement? { + if (notPositionedElement?.javaClass in TYPES_TO_CALCULATE_CLASSNAME ) return notPositionedElement as JetElement + + return PsiTreeUtil.getParentOfType(notPositionedElement, *TYPES_TO_CALCULATE_CLASSNAME) + } public fun getJvmInternalNameForPropertyOwner(typeMapper: JetTypeMapper, descriptor: PropertyDescriptor): String { return typeMapper.mapOwner(