Fix exception: for inline functions in stdlib we calculate classname by declaration
This commit is contained in:
@@ -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<JetClassOrObject>(),
|
||||
javaClass<JetFunctionLiteral>(),
|
||||
javaClass<JetNamedFunction>(),
|
||||
javaClass<JetProperty>(),
|
||||
javaClass<JetClassInitializer>())
|
||||
private val TYPES_TO_CALCULATE_CLASSNAME: Array<Class<out JetElement>> =
|
||||
arrayOf(javaClass<JetClassOrObject>(),
|
||||
javaClass<JetFunctionLiteral>(),
|
||||
javaClass<JetNamedFunction>(),
|
||||
javaClass<JetProperty>(),
|
||||
javaClass<JetClassInitializer>())
|
||||
|
||||
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(
|
||||
|
||||
Reference in New Issue
Block a user