From cf8cf37d69c5b560e82f06fc70500918c5e80a93 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Fri, 27 May 2016 20:51:32 +0300 Subject: [PATCH] Light Classes: Drop obsolete constraint which prevents generation of light methods for local class members #KT-8892 Fixed --- ChangeLog.md | 1 + .../kotlin/asJava/KtLightClassForExplicitDeclaration.kt | 1 + .../src/org/jetbrains/kotlin/asJava/LightClassUtil.kt | 6 ------ .../kotlin/idea/javaFacade/KotlinJavaFacadeTest.java | 6 +++--- 4 files changed, 5 insertions(+), 9 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index f27f451a56e..a6a66a94c49 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -177,6 +177,7 @@ ###### Issues fixed - [`KT-8860`](https://youtrack.jetbrains.com/issue/KT-8860) Allow renaming class by constructor delegation call referencing primary constructor +- [`KT-8892`](https://youtrack.jetbrains.com/issue/KT-8892) Suggest renaming base declarations on overriding members in object literals - [`KT-9156`](https://youtrack.jetbrains.com/issue/KT-9156) Quote non-identifier names in Kotlin references - [`KT-9157`](https://youtrack.jetbrains.com/issue/KT-9157) Fixed in-place rename of Kotlin expression referring Java declaration - [`KT-9241`](https://youtrack.jetbrains.com/issue/KT-9241) Do not replace Java references to synthetic component functions when renaming constructor parameter diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KtLightClassForExplicitDeclaration.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KtLightClassForExplicitDeclaration.kt index a82dd0f9477..50fb992c733 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KtLightClassForExplicitDeclaration.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KtLightClassForExplicitDeclaration.kt @@ -417,6 +417,7 @@ open class KtLightClassForExplicitDeclaration( private fun predictFqName(classOrObject: KtClassOrObject): FqName? { if (classOrObject.isLocal()) { + if (classOrObject.containingFile.virtualFile == null) return null val data = getLightClassDataExactly(classOrObject) return data?.jvmQualifiedName } diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/LightClassUtil.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/LightClassUtil.kt index 63aa54960e0..400f1008010 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/LightClassUtil.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/LightClassUtil.kt @@ -162,12 +162,6 @@ object LightClassUtil { return declaration.getContainingClassOrObject().toLightClass() } - if (!canGenerateLightClass(declaration)) { - // Can't get wrappers for internal declarations. Their classes are not generated during calcStub - // with ClassBuilderMode.LIGHT_CLASSES mode, and this produces "Class not found exception" in getDelegate() - return null - } - val parent = declaration.parent if (parent is KtFile) { diff --git a/idea/tests/org/jetbrains/kotlin/idea/javaFacade/KotlinJavaFacadeTest.java b/idea/tests/org/jetbrains/kotlin/idea/javaFacade/KotlinJavaFacadeTest.java index 0be910b189c..1ff0bb5c67d 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/javaFacade/KotlinJavaFacadeTest.java +++ b/idea/tests/org/jetbrains/kotlin/idea/javaFacade/KotlinJavaFacadeTest.java @@ -45,7 +45,7 @@ public class KotlinJavaFacadeTest extends KotlinLightCodeInsightFixtureTestCase } public void testDoNotWrapFunFromLocalClass() { - doTestWrapMethod(false); + doTestWrapMethod(true); } public void testObjectSubclassing() { @@ -53,7 +53,7 @@ public class KotlinJavaFacadeTest extends KotlinLightCodeInsightFixtureTestCase } public void testDoNotWrapFunInAnonymousObject() { - doTestWrapMethod(false); + doTestWrapMethod(true); } public void testWrapFunInClassWithoutBody() { @@ -145,7 +145,7 @@ public class KotlinJavaFacadeTest extends KotlinLightCodeInsightFixtureTestCase } public void testWrapVarPropertyInLocalClass() { - doTestWrapProperty(false, false); + doTestWrapProperty(true, true); } public void testWrapVarTopLevelAccessor() {