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()) {
|
if (parent is JetObjectDeclaration && parent.isCompanion()) {
|
||||||
return PositionedElement(getInternalClassNameForElement(parent.getParent(), typeMapper, file, isInLibrary).className, parent)
|
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) -> {
|
element is JetProperty && (!element.isTopLevel() || !isInLibrary) -> {
|
||||||
if (isInPropertyAccessor(notPositionedElement)) {
|
if (isInPropertyAccessor(notPositionedElement)) {
|
||||||
@@ -343,7 +343,7 @@ public class JetPositionManager(private val myDebugProcess: DebugProcess) : Mult
|
|||||||
return getInternalClassNameForElement(element.getParent(), typeMapper, file, isInLibrary)
|
return getInternalClassNameForElement(element.getParent(), typeMapper, file, isInLibrary)
|
||||||
}
|
}
|
||||||
|
|
||||||
val parent = getElementToCalculateClassName(element)
|
val parent = getElementToCalculateClassName(element.getParent())
|
||||||
if (parent is JetClassOrObject) {
|
if (parent is JetClassOrObject) {
|
||||||
return PositionedElement(getJvmInternalNameForImpl(typeMapper, parent), element)
|
return PositionedElement(getJvmInternalNameForImpl(typeMapper, parent), element)
|
||||||
}
|
}
|
||||||
@@ -369,13 +369,18 @@ public class JetPositionManager(private val myDebugProcess: DebugProcess) : Mult
|
|||||||
return PositionedElement(PackagePartClassUtils.getPackagePartInternalName(file), element)
|
return PositionedElement(PackagePartClassUtils.getPackagePartInternalName(file), element)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getElementToCalculateClassName(notPositionedElement: PsiElement?): JetElement? =
|
private val TYPES_TO_CALCULATE_CLASSNAME: Array<Class<out JetElement>> =
|
||||||
PsiTreeUtil.getParentOfType(notPositionedElement,
|
arrayOf(javaClass<JetClassOrObject>(),
|
||||||
javaClass<JetClassOrObject>(),
|
javaClass<JetFunctionLiteral>(),
|
||||||
javaClass<JetFunctionLiteral>(),
|
javaClass<JetNamedFunction>(),
|
||||||
javaClass<JetNamedFunction>(),
|
javaClass<JetProperty>(),
|
||||||
javaClass<JetProperty>(),
|
javaClass<JetClassInitializer>())
|
||||||
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 {
|
public fun getJvmInternalNameForPropertyOwner(typeMapper: JetTypeMapper, descriptor: PropertyDescriptor): String {
|
||||||
return typeMapper.mapOwner(
|
return typeMapper.mapOwner(
|
||||||
|
|||||||
Reference in New Issue
Block a user