diff --git a/compiler/fir/analysis-tests/testData/resolve/diagnostics/testIllegalAnnotationClass.fir.txt b/compiler/fir/analysis-tests/testData/resolve/diagnostics/testIllegalAnnotationClass.fir.txt index 7b7af18f200..2308301aeae 100644 --- a/compiler/fir/analysis-tests/testData/resolve/diagnostics/testIllegalAnnotationClass.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolve/diagnostics/testIllegalAnnotationClass.fir.txt @@ -1,5 +1,5 @@ FILE: KotlinImporterComponent.kt - @R|State|(name = String(AutoImportedSourceRoots)) public final class KotlinImporterComponent : R|kotlin/Any| { + @R|simulation/State|(name = String(AutoImportedSourceRoots)) public final class KotlinImporterComponent : R|kotlin/Any| { public constructor(): R|simulation/KotlinImporterComponent| { super() } diff --git a/compiler/fir/analysis-tests/testData/resolve/diagnostics/testIllegalAnnotationClass.kt b/compiler/fir/analysis-tests/testData/resolve/diagnostics/testIllegalAnnotationClass.kt index 2c91b6ebf20..e97a57bd160 100644 --- a/compiler/fir/analysis-tests/testData/resolve/diagnostics/testIllegalAnnotationClass.kt +++ b/compiler/fir/analysis-tests/testData/resolve/diagnostics/testIllegalAnnotationClass.kt @@ -1,6 +1,6 @@ -// FILE: State.java +// FILE: simulation/State.java -package simulation +package simulation; @Retention(RetentionPolicy.RUNTIME) public @interface State { diff --git a/compiler/fir/analysis-tests/testData/resolve/problems/multipleJavaClassesInOneFile.fir.txt b/compiler/fir/analysis-tests/testData/resolve/problems/multipleJavaClassesInOneFile.fir.txt index 0ce35a2e3ce..fccf24ca5b8 100644 --- a/compiler/fir/analysis-tests/testData/resolve/problems/multipleJavaClassesInOneFile.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolve/problems/multipleJavaClassesInOneFile.fir.txt @@ -1,5 +1,5 @@ FILE: main.kt public final fun test(): R|kotlin/Unit| { - lval some: R|Some| = R|/Some.Some|() + lval some: R|foo/Some| = R|foo/Some.Some|() lval another: R|ERROR CLASS: Unresolved name: Another| = #() } diff --git a/compiler/fir/analysis-tests/testData/resolve/problems/multipleJavaClassesInOneFile.kt b/compiler/fir/analysis-tests/testData/resolve/problems/multipleJavaClassesInOneFile.kt index 1ba85216a6c..cf7361f6633 100644 --- a/compiler/fir/analysis-tests/testData/resolve/problems/multipleJavaClassesInOneFile.kt +++ b/compiler/fir/analysis-tests/testData/resolve/problems/multipleJavaClassesInOneFile.kt @@ -1,4 +1,4 @@ -// FILE: Some.java +// FILE: foo/Some.java package foo; @@ -7,6 +7,7 @@ class Some {} class Another {} // FILE: main.kt +package foo fun test() { val some = Some() diff --git a/compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/IntersectionTypesProblem.fir.txt b/compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/IntersectionTypesProblem.fir.txt index 3dabd7ee17c..dd0d35c3280 100644 --- a/compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/IntersectionTypesProblem.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/IntersectionTypesProblem.fir.txt @@ -2,6 +2,6 @@ FILE: test.kt public final fun select(x: R|K|, y: R|K|): R|K| { ^select R|/x| } - public final fun test(d1: R|DiagnosticWithParameters1<*, *>|, d2: R|DiagnosticWithParameters2<*, *, *>|): R|kotlin/Unit| { - lval res: R|ft| = R|jvm/select||>(R|/d1|.R|/DiagnosticWithParameters1.a|, R|/d2|.R|/DiagnosticWithParameters2.b|) + public final fun test(d1: R|jvm/DiagnosticWithParameters1<*, *>|, d2: R|jvm/DiagnosticWithParameters2<*, *, *>|): R|kotlin/Unit| { + lval res: R|ft| = R|jvm/select||>(R|/d1|.R|jvm/DiagnosticWithParameters1.a|, R|/d2|.R|jvm/DiagnosticWithParameters2.b|) } diff --git a/compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/IntersectionTypesProblem.kt b/compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/IntersectionTypesProblem.kt index c8c9797f869..b16c925f5e4 100644 --- a/compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/IntersectionTypesProblem.kt +++ b/compiler/fir/analysis-tests/testData/resolveWithStdlib/j+k/IntersectionTypesProblem.kt @@ -1,10 +1,10 @@ -// FILE: Diagnostic.java +// FILE: jvm/Diagnostic.java package jvm; public interface Diagnostic {} -// FILE: DiagnosticWithParameters1.java +// FILE: jvm/DiagnosticWithParameters1.java package jvm; @@ -12,7 +12,7 @@ public interface DiagnosticWithParameters1 extends Diagnostic { A getA(); } -// FILE: DiagnosticWithParameters2.java +// FILE: jvm/DiagnosticWithParameters2.java package jvm; diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt index 217d746e28d..5caf08692e8 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt @@ -156,7 +156,7 @@ class JavaSymbolProvider( ): Pair { val foundClass = findClass(classId, content) return if (foundClass == null || - foundClass.hasDifferentRelativeClassName(classId) || + foundClass.hasDifferentClassId(classId) || foundClass.hasMetadataAnnotation() ) { null to null @@ -166,13 +166,8 @@ class JavaSymbolProvider( } } - - /** - * We do not check the package because we can look for the class in the same package by class name without package specified. - * In this case, found [JavaClass] may have different `packageFqName`, but not `relativeClassName`. - */ - private fun JavaClass.hasDifferentRelativeClassName(lookupClassId: ClassId): Boolean = - classId?.relativeClassName != lookupClassId.relativeClassName + private fun JavaClass.hasDifferentClassId(lookupClassId: ClassId): Boolean = + classId != lookupClassId private fun JavaClass.hasMetadataAnnotation(): Boolean = annotations.any { it.classId?.asSingleFqName() == JvmAnnotationNames.METADATA_FQ_NAME }