diff --git a/compiler/testData/asJava/lightClasses/NonDataClassWithComponentFunctions.java b/compiler/testData/asJava/lightClasses/NonDataClassWithComponentFunctions.java new file mode 100644 index 00000000000..1e8812cc038 --- /dev/null +++ b/compiler/testData/asJava/lightClasses/NonDataClassWithComponentFunctions.java @@ -0,0 +1,16 @@ +public final class A { + private final int y; + + public boolean equals(@org.jetbrains.annotations.Nullable java.lang.Object other) { /* compiled code */ } + + public int hashCode() { /* compiled code */ } + + @org.jetbrains.annotations.NotNull + public java.lang.String toString() { /* compiled code */ } + + public final int component1() { /* compiled code */ } + + public final int getY() { /* compiled code */ } + + public A(int y) { /* compiled code */ } +} diff --git a/compiler/testData/asJava/lightClasses/NonDataClassWithComponentFunctions.kt b/compiler/testData/asJava/lightClasses/NonDataClassWithComponentFunctions.kt new file mode 100644 index 00000000000..b7118c477f0 --- /dev/null +++ b/compiler/testData/asJava/lightClasses/NonDataClassWithComponentFunctions.kt @@ -0,0 +1,18 @@ +// p.A +package p + +class A(val y: Int) { + override fun equals(other: Any?): Boolean { + return super.equals(other) + } + + override fun hashCode(): Int { + return super.hashCode() + } + + override fun toString(): String { + return super.toString() + } + + fun component1() = y +} \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/kotlin/asJava/CompilerLightClassTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/asJava/CompilerLightClassTestGenerated.java index 6b3d1037a2a..29850f69560 100644 --- a/compiler/tests/org/jetbrains/kotlin/asJava/CompilerLightClassTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/asJava/CompilerLightClassTestGenerated.java @@ -114,6 +114,12 @@ public class CompilerLightClassTestGenerated extends AbstractCompilerLightClassT doTest(fileName); } + @TestMetadata("NonDataClassWithComponentFunctions.kt") + public void testNonDataClassWithComponentFunctions() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/asJava/lightClasses/NonDataClassWithComponentFunctions.kt"); + doTest(fileName); + } + @TestMetadata("PublishedApi.kt") public void testPublishedApi() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/asJava/lightClasses/PublishedApi.kt"); diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/lightClasses/IDELightClassContexts.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/lightClasses/IDELightClassContexts.kt index 49626c6fd89..1261df7f797 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/lightClasses/IDELightClassContexts.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/lightClasses/IDELightClassContexts.kt @@ -43,6 +43,7 @@ import org.jetbrains.kotlin.idea.project.IdeaEnvironment import org.jetbrains.kotlin.idea.project.ResolveElementCache import org.jetbrains.kotlin.incremental.components.LookupTracker import org.jetbrains.kotlin.incremental.components.NoLookupLocation +import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.psi.* @@ -137,9 +138,11 @@ object IDELightClassContexts { private fun isDummyResolveApplicable(classOrObject: KtClassOrObject): Boolean { val hasDelegatedMembers = classOrObject.superTypeListEntries.any { it is KtDelegatedSuperTypeEntry } - val dataClassWithGeneratedMembersOverridden = classOrObject.declarations.filterIsInstance().any { - isGeneratedForDataClass(it.nameAsSafeName) - } + val dataClassWithGeneratedMembersOverridden = + classOrObject.hasModifier(KtTokens.DATA_KEYWORD) && + classOrObject.declarations.filterIsInstance().any { + isGeneratedForDataClass(it.nameAsSafeName) + } return !hasDelegatedMembers && !dataClassWithGeneratedMembersOverridden && classOrObject.declarations.filterIsInstance().all { isDummyResolveApplicable(it) } } @@ -291,7 +294,7 @@ object IDELightClassContexts { moduleDescriptor.getPackage(annotationFqName.parent()).memberScope .getContributedClassifier(annotationFqName.shortName(), NoLookupLocation.FROM_IDE)?.let { return it as? ClassDescriptor } - } + } } return null } diff --git a/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/IdeCompiledLightClassTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/IdeCompiledLightClassTestGenerated.java index bf6b5af616e..07b0213824c 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/IdeCompiledLightClassTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/IdeCompiledLightClassTestGenerated.java @@ -114,6 +114,12 @@ public class IdeCompiledLightClassTestGenerated extends AbstractIdeCompiledLight doTest(fileName); } + @TestMetadata("NonDataClassWithComponentFunctions.kt") + public void testNonDataClassWithComponentFunctions() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/asJava/lightClasses/NonDataClassWithComponentFunctions.kt"); + doTest(fileName); + } + @TestMetadata("PublishedApi.kt") public void testPublishedApi() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/asJava/lightClasses/PublishedApi.kt"); diff --git a/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/IdeLightClassTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/IdeLightClassTestGenerated.java index 534cdfabc5e..f91e6fe38c2 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/IdeLightClassTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/IdeLightClassTestGenerated.java @@ -114,6 +114,12 @@ public class IdeLightClassTestGenerated extends AbstractIdeLightClassTest { doTest(fileName); } + @TestMetadata("NonDataClassWithComponentFunctions.kt") + public void testNonDataClassWithComponentFunctions() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/asJava/lightClasses/NonDataClassWithComponentFunctions.kt"); + doTest(fileName); + } + @TestMetadata("PublishedApi.kt") public void testPublishedApi() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/asJava/lightClasses/PublishedApi.kt");