Light Classes: Retain original declarations for nested decompiled classes

This commit is contained in:
Alexey Sedunov
2015-06-06 02:10:19 +03:00
parent ca8e2d4956
commit 81440815e1
2 changed files with 10 additions and 3 deletions
@@ -29,11 +29,13 @@ class KotlinLightClassForDecompiledDeclaration(
override fun copy() = this
override fun getOwnInnerClasses(): List<PsiClass> {
//TODO (light classes for decompiled files): correct origin
return clsClass.getOwnInnerClasses().map { KotlinLightClassForDecompiledDeclaration(it as ClsClassImpl, null) }
val nestedClasses = origin?.getDeclarations()?.filterIsInstance<JetClassOrObject>() ?: emptyList()
return clsClass.getOwnInnerClasses().map { innerClsClass ->
KotlinLightClassForDecompiledDeclaration(innerClsClass as ClsClassImpl,
nestedClasses.firstOrNull { innerClsClass.getName() == it.getName() })
}
}
//TODO (light classes for decompiled files): correct navigation element
override fun getNavigationElement() = origin?.getNavigationElement() ?: super.getNavigationElement()
override fun getDelegate() = clsClass
@@ -3,6 +3,11 @@
[LibraryNestedClassUsages.0.kt] New instance creation (17: 16) val aa = A.T(1)
[LibraryNestedClassUsages.0.kt] Supertype (13: 14) class Y(): A.T(1)
[LibraryNestedClassUsages.0.kt] Supertype (9: 12) class X: A.T {
[LibraryNestedClassUsages.1.java] Local variable declaration (11: 11) A.T t = new A.T();
[LibraryNestedClassUsages.1.java] Local variable declaration (12: 11) A.T tt = new A.T(1);
[LibraryNestedClassUsages.1.java] New instance creation (11: 23) A.T t = new A.T();
[LibraryNestedClassUsages.1.java] New instance creation (12: 24) A.T tt = new A.T(1);
[LibraryNestedClassUsages.1.java] Usage in extends/implements clause (5: 19) class J extends A.T {
[library.kt] New instance creation (59: 15) val t = A.T(1)
[library.kt] New instance creation (60: 16) val tt = A.T()
[library.kt] Supertype (18: 16) class U: A.T {