diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinLightClassForDecompiledDeclaration.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinLightClassForDecompiledDeclaration.kt index 9935f725678..1010d58c7be 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinLightClassForDecompiledDeclaration.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinLightClassForDecompiledDeclaration.kt @@ -29,11 +29,13 @@ class KotlinLightClassForDecompiledDeclaration( override fun copy() = this override fun getOwnInnerClasses(): List { - //TODO (light classes for decompiled files): correct origin - return clsClass.getOwnInnerClasses().map { KotlinLightClassForDecompiledDeclaration(it as ClsClassImpl, null) } + val nestedClasses = origin?.getDeclarations()?.filterIsInstance() ?: 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 diff --git a/idea/testData/findUsages/librarySources/kotlinLibrary/LibraryNestedClassUsages.results.txt b/idea/testData/findUsages/librarySources/kotlinLibrary/LibraryNestedClassUsages.results.txt index e983e5c1f10..fa32c850f13 100644 --- a/idea/testData/findUsages/librarySources/kotlinLibrary/LibraryNestedClassUsages.results.txt +++ b/idea/testData/findUsages/librarySources/kotlinLibrary/LibraryNestedClassUsages.results.txt @@ -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 {