Fix exception: for inline functions in stdlib we calculate classname by declaration

This commit is contained in:
Natalia Ukhorskaya
2015-05-22 16:14:30 +03:00
parent 5d9daf3890
commit 403ca00a63
@@ -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(