diff --git a/analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/javaInnerClassFromAnotherModule.standalone.fir.txt b/analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/javaInnerClassFromAnotherModule.standalone.fir.txt deleted file mode 100644 index 9f370a89565..00000000000 --- a/analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/javaInnerClassFromAnotherModule.standalone.fir.txt +++ /dev/null @@ -1 +0,0 @@ -Diagnostics from elements: diff --git a/analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/javaInnerClassFromAnotherModule.txt b/analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/javaInnerClassFromAnotherModule.txt index 79f0e696298..9f370a89565 100644 --- a/analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/javaInnerClassFromAnotherModule.txt +++ b/analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/javaInnerClassFromAnotherModule.txt @@ -1,4 +1 @@ Diagnostics from elements: - for PSI element of type KtDotQualifiedExpression at (17,25-54) - ARGUMENT_TYPE_MISMATCH text ranges: [(169,198)] - PSI: KtDotQualifiedExpression at (17,25-54) diff --git a/analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/javaInnerClassFromLibrary.standalone.fir.txt b/analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/javaInnerClassFromLibrary.standalone.fir.txt deleted file mode 100644 index 9f370a89565..00000000000 --- a/analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/javaInnerClassFromLibrary.standalone.fir.txt +++ /dev/null @@ -1 +0,0 @@ -Diagnostics from elements: diff --git a/analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/javaInnerClassFromLibrary.txt b/analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/javaInnerClassFromLibrary.txt index e4e1783d635..9f370a89565 100644 --- a/analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/javaInnerClassFromLibrary.txt +++ b/analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/javaInnerClassFromLibrary.txt @@ -1,4 +1 @@ Diagnostics from elements: - for PSI element of type KtDotQualifiedExpression at (19,25-54) - ARGUMENT_TYPE_MISMATCH text ranges: [(171,200)] - PSI: KtDotQualifiedExpression at (19,25-54) diff --git a/analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/javaNestedClassFromAnotherModule.standalone.fir.txt b/analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/javaNestedClassFromAnotherModule.standalone.fir.txt deleted file mode 100644 index 9f370a89565..00000000000 --- a/analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/javaNestedClassFromAnotherModule.standalone.fir.txt +++ /dev/null @@ -1 +0,0 @@ -Diagnostics from elements: diff --git a/analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/javaNestedClassFromAnotherModule.txt b/analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/javaNestedClassFromAnotherModule.txt index f3d9899c7c6..9f370a89565 100644 --- a/analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/javaNestedClassFromAnotherModule.txt +++ b/analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/javaNestedClassFromAnotherModule.txt @@ -1,4 +1 @@ Diagnostics from elements: - for PSI element of type KtDotQualifiedExpression at (17,25-52) - ARGUMENT_TYPE_MISMATCH text ranges: [(169,196)] - PSI: KtDotQualifiedExpression at (17,25-52) diff --git a/analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/javaNestedClassFromLibrary.standalone.fir.txt b/analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/javaNestedClassFromLibrary.standalone.fir.txt deleted file mode 100644 index 9f370a89565..00000000000 --- a/analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/javaNestedClassFromLibrary.standalone.fir.txt +++ /dev/null @@ -1 +0,0 @@ -Diagnostics from elements: diff --git a/analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/javaNestedClassFromLibrary.txt b/analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/javaNestedClassFromLibrary.txt index 39b202b85ad..9f370a89565 100644 --- a/analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/javaNestedClassFromLibrary.txt +++ b/analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/javaNestedClassFromLibrary.txt @@ -1,4 +1 @@ Diagnostics from elements: - for PSI element of type KtDotQualifiedExpression at (19,25-52) - ARGUMENT_TYPE_MISMATCH text ranges: [(171,198)] - PSI: KtDotQualifiedExpression at (19,25-52) diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/providers/LLFirCombinedJavaSymbolProvider.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/providers/LLFirCombinedJavaSymbolProvider.kt index d38b5ea7469..185c34cbd0e 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/providers/LLFirCombinedJavaSymbolProvider.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/providers/LLFirCombinedJavaSymbolProvider.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -8,18 +8,17 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.providers import com.intellij.openapi.project.Project import com.intellij.psi.search.GlobalSearchScope import org.jetbrains.kotlin.analysis.low.level.api.fir.caches.NullableCaffeineCache -import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.llFirModuleData -import org.jetbrains.kotlin.analysis.project.structure.KtModule import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.java.JavaSymbolProvider +import org.jetbrains.kotlin.fir.java.hasMetadataAnnotation import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolNamesProvider import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolNamesProviderWithoutCallables import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProviderInternals import org.jetbrains.kotlin.fir.symbols.impl.* import org.jetbrains.kotlin.load.java.JavaClassFinder -import org.jetbrains.kotlin.load.java.JvmAnnotationNames import org.jetbrains.kotlin.load.java.createJavaClassFinder +import org.jetbrains.kotlin.load.java.structure.classId import org.jetbrains.kotlin.load.java.structure.impl.JavaClassImpl import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName @@ -61,8 +60,10 @@ internal class LLFirCombinedJavaSymbolProvider private constructor( classCache.get(classId) { computeClassLikeSymbolByClassId(it) } private fun computeClassLikeSymbolByClassId(classId: ClassId): FirRegularClassSymbol? { - val javaClasses = javaClassFinder.findClasses(classId) - .filterNot { javaClass -> javaClass.annotations.any { it.isResolvedTo(JvmAnnotationNames.METADATA_FQ_NAME) } } + val javaClasses = javaClassFinder.findClasses(classId).filterNot { javaClass -> + javaClass.classId != classId || javaClass.hasMetadataAnnotation() + } + if (javaClasses.isEmpty()) return null val (javaClass, provider) = selectFirstElementInClasspathOrder(javaClasses) { javaClass -> diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/types/nestedClassFromJava.txt b/analysis/low-level-api-fir/testData/getOrBuildFir/types/nestedClassFromJava.txt index 40faead0404..453095f6693 100644 --- a/analysis/low-level-api-fir/testData/getOrBuildFir/types/nestedClassFromJava.txt +++ b/analysis/low-level-api-fir/testData/getOrBuildFir/types/nestedClassFromJava.txt @@ -3,11 +3,11 @@ FIR element: FirResolvedTypeRefImpl FIR source kind: KtRealSourceElementKind FIR element rendered: -R|issue/pack/RowIcon/RClass| +R|issue/pack/RowIcon.RClass| FIR FILE: FILE: [ResolvedTo(IMPORTS)] usage.kt package usage - public final [ResolvedTo(ANNOTATION_ARGUMENTS)] fun testJavaNestedClass([ResolvedTo(ANNOTATION_ARGUMENTS)] alignment: R|issue/pack/RowIcon/RClass|): R|kotlin/Unit| { - } + public final [ResolvedTo(ANNOTATION_ARGUMENTS)] fun testJavaNestedClass([ResolvedTo(ANNOTATION_ARGUMENTS)] alignment: R|issue/pack/RowIcon.RClass|): R|kotlin/Unit| { + } \ No newline at end of file