diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/FirJavaModuleBasedSession.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/FirJavaModuleBasedSession.kt index f0a783d8179..14a11229e1f 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/FirJavaModuleBasedSession.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/FirJavaModuleBasedSession.kt @@ -9,9 +9,7 @@ import com.intellij.openapi.project.Project import com.intellij.psi.search.GlobalSearchScope import org.jetbrains.kotlin.analyzer.ModuleInfo import org.jetbrains.kotlin.fir.* -import org.jetbrains.kotlin.fir.java.scopes.JavaFirScopeProvider import org.jetbrains.kotlin.fir.resolve.FirProvider -import org.jetbrains.kotlin.fir.resolve.FirScopeProvider import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider import org.jetbrains.kotlin.fir.resolve.impl.* @@ -34,15 +32,6 @@ class FirJavaModuleBasedSession( ) ) ) - registerComponent( - FirScopeProvider::class, - FirCompositeScopeProvider( - listOf( - JavaFirScopeProvider(), - FirRegularScopeProvider() - ) - ) - ) } } @@ -63,15 +52,6 @@ class FirLibrarySession( ) ) ) - registerComponent( - FirScopeProvider::class, - FirCompositeScopeProvider( - listOf( - JavaFirScopeProvider(), - FirRegularScopeProvider() - ) - ) - ) } } diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaClass.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaClass.kt index ccc33309647..7b7471bd13f 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaClass.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaClass.kt @@ -17,6 +17,7 @@ import org.jetbrains.kotlin.fir.java.scopes.JavaClassEnhancementScope import org.jetbrains.kotlin.fir.java.scopes.JavaClassUseSiteScope import org.jetbrains.kotlin.fir.resolve.lookupSuperTypes import org.jetbrains.kotlin.fir.resolve.toSymbol +import org.jetbrains.kotlin.fir.scopes.FirScope import org.jetbrains.kotlin.fir.scopes.impl.FirClassDeclaredMemberScope import org.jetbrains.kotlin.fir.scopes.impl.FirCompositeScope import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol @@ -48,24 +49,27 @@ class FirJavaClass( override val superTypeRefs = mutableListOf() - val useSiteScope: JavaClassUseSiteScope by lazy { buildUseSiteScope() } + override fun buildClassSpecificUseSiteScope(useSiteSession: FirSession): FirScope? { + return JavaClassEnhancementScope(useSiteSession, buildJavaUseSiteScope(this, useSiteSession)) + } override val declarations = mutableListOf() - private fun FirRegularClass.buildUseSiteScope(useSiteSession: FirSession = session): JavaClassUseSiteScope { + private fun buildJavaUseSiteScope(regularClass: FirRegularClass, useSiteSession: FirSession): JavaClassUseSiteScope { val superTypeEnhancementScope = FirCompositeScope(mutableListOf()) - val declaredScope = FirClassDeclaredMemberScope(this, useSiteSession) - lookupSuperTypes(this, lookupInterfaces = true, deep = false, useSiteSession = useSiteSession) + val declaredScope = FirClassDeclaredMemberScope(regularClass, useSiteSession) + lookupSuperTypes(regularClass, lookupInterfaces = true, deep = false, useSiteSession = useSiteSession) .mapNotNullTo(superTypeEnhancementScope.scopes) { useSiteSuperType -> if (useSiteSuperType is ConeClassErrorType) return@mapNotNullTo null val symbol = useSiteSuperType.lookupTag.toSymbol(useSiteSession) if (symbol is FirClassSymbol) { - JavaClassEnhancementScope(useSiteSession, symbol.fir.buildUseSiteScope(useSiteSession)) + // We need JavaClassEnhancementScope here to have already enhanced signatures from supertypes + JavaClassEnhancementScope(useSiteSession, buildJavaUseSiteScope(symbol.fir, useSiteSession)) } else { null } } - return JavaClassUseSiteScope(this, useSiteSession, superTypeEnhancementScope, declaredScope) + return JavaClassUseSiteScope(regularClass, useSiteSession, superTypeEnhancementScope, declaredScope) } override fun replaceSupertypes(newSupertypes: List): FirRegularClass { diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaFirScopeProvider.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaFirScopeProvider.kt deleted file mode 100644 index 7876108cc3e..00000000000 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaFirScopeProvider.kt +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license - * that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.fir.java.scopes - -import org.jetbrains.kotlin.fir.FirSession -import org.jetbrains.kotlin.fir.declarations.FirRegularClass -import org.jetbrains.kotlin.fir.java.declarations.FirJavaClass -import org.jetbrains.kotlin.fir.resolve.FirScopeProvider -import org.jetbrains.kotlin.fir.scopes.FirScope - -class JavaFirScopeProvider : FirScopeProvider { - override fun getDeclaredMemberScope(klass: FirRegularClass, session: FirSession): FirScope { - if (klass !is FirJavaClass) return FirScopeProvider.emptyScope - - return JavaClassEnhancementScope(session, klass.useSiteScope) - } -} \ No newline at end of file diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/FirScopeProvider.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/FirScopeProvider.kt deleted file mode 100644 index 51329feb984..00000000000 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/FirScopeProvider.kt +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license - * that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.fir.resolve - -import org.jetbrains.kotlin.fir.FirSession -import org.jetbrains.kotlin.fir.declarations.FirRegularClass -import org.jetbrains.kotlin.fir.scopes.FirScope - -interface FirScopeProvider { - fun getDeclaredMemberScope(klass: FirRegularClass, session: FirSession): FirScope - - companion object { - val emptyScope = object : FirScope {} - } -} \ No newline at end of file diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/SupertypeUtils.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/SupertypeUtils.kt index bd62950f087..da3f6107d17 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/SupertypeUtils.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/SupertypeUtils.kt @@ -10,12 +10,16 @@ import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.FirRegularClass import org.jetbrains.kotlin.fir.declarations.expandedConeType import org.jetbrains.kotlin.fir.declarations.superConeTypes +import org.jetbrains.kotlin.fir.scopes.FirScope +import org.jetbrains.kotlin.fir.scopes.impl.FirClassDeclaredMemberScope +import org.jetbrains.kotlin.fir.scopes.impl.FirClassSubstitutionScope +import org.jetbrains.kotlin.fir.scopes.impl.FirClassUseSiteScope +import org.jetbrains.kotlin.fir.scopes.impl.FirCompositeScope import org.jetbrains.kotlin.fir.symbols.ConeClassifierSymbol +import org.jetbrains.kotlin.fir.symbols.ConeTypeParameterSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirTypeAliasSymbol -import org.jetbrains.kotlin.fir.types.ConeAbbreviatedType -import org.jetbrains.kotlin.fir.types.ConeClassErrorType -import org.jetbrains.kotlin.fir.types.ConeClassLikeType +import org.jetbrains.kotlin.fir.types.* fun lookupSuperTypes( klass: FirRegularClass, @@ -29,6 +33,41 @@ fun lookupSuperTypes( } } +fun FirRegularClass.buildUseSiteScope(useSiteSession: FirSession): FirScope { + return buildClassSpecificUseSiteScope(useSiteSession) ?: buildDefaultUseSiteScope(useSiteSession) +} + +private fun FirRegularClass.buildDefaultUseSiteScope(useSiteSession: FirSession): FirScope { + val superTypeScope = FirCompositeScope(mutableListOf()) + val declaredScope = FirClassDeclaredMemberScope(this, useSiteSession) + lookupSuperTypes(this, lookupInterfaces = true, deep = false, useSiteSession = useSiteSession) + .mapNotNullTo(superTypeScope.scopes) { useSiteSuperType -> + if (useSiteSuperType is ConeClassErrorType) return@mapNotNullTo null + val symbol = useSiteSuperType.lookupTag.toSymbol(useSiteSession) + if (symbol is FirClassSymbol) { + val useSiteScope = symbol.fir.buildUseSiteScope(useSiteSession) + useSiteSuperType.buildSubstitutionScope(useSiteScope, symbol.fir) ?: useSiteScope + } else { + null + } + } + return FirClassUseSiteScope(useSiteSession, superTypeScope, declaredScope) +} + +private fun ConeClassLikeType.buildSubstitutionScope( + useSiteScope: FirScope, + regularClass: FirRegularClass +): FirClassSubstitutionScope? { + if (this.typeArguments.isEmpty()) return null + + @Suppress("UNCHECKED_CAST") + val substitution = regularClass.typeParameters.zip(this.typeArguments) { typeParameter, typeArgument -> + typeParameter.symbol to (typeArgument as? ConeTypedProjection)?.type + }.filter { (_, type) -> type != null }.toMap() as Map + + return FirClassSubstitutionScope(useSiteScope, substitution) +} + private tailrec fun ConeClassLikeType.computePartialExpansion(useSiteSession: FirSession): ConeClassLikeType? { return when (this) { is ConeAbbreviatedType -> directExpansionType(useSiteSession)?.computePartialExpansion(useSiteSession) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/impl/FirCompositeScopeProvider.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/impl/FirCompositeScopeProvider.kt deleted file mode 100644 index 944ca4167df..00000000000 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/impl/FirCompositeScopeProvider.kt +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license - * that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.fir.resolve.impl - -import org.jetbrains.kotlin.fir.FirSession -import org.jetbrains.kotlin.fir.declarations.FirRegularClass -import org.jetbrains.kotlin.fir.resolve.FirScopeProvider -import org.jetbrains.kotlin.fir.scopes.FirScope -import org.jetbrains.kotlin.fir.scopes.impl.FirCompositeScope - -class FirCompositeScopeProvider(private val providers: List) : FirScopeProvider { - override fun getDeclaredMemberScope(klass: FirRegularClass, session: FirSession): FirScope { - return FirCompositeScope(providers.mapTo(mutableListOf()) { it.getDeclaredMemberScope(klass, session) }) - } -} \ No newline at end of file diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/impl/FirRegularScopeProvider.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/impl/FirRegularScopeProvider.kt deleted file mode 100644 index 83dcc95e84c..00000000000 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/impl/FirRegularScopeProvider.kt +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license - * that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.fir.resolve.impl - -import org.jetbrains.kotlin.fir.FirSession -import org.jetbrains.kotlin.fir.declarations.FirRegularClass -import org.jetbrains.kotlin.fir.declarations.impl.FirClassImpl -import org.jetbrains.kotlin.fir.resolve.FirScopeProvider -import org.jetbrains.kotlin.fir.scopes.FirScope -import org.jetbrains.kotlin.fir.scopes.impl.FirClassDeclaredMemberScope - -class FirRegularScopeProvider : FirScopeProvider { - override fun getDeclaredMemberScope(klass: FirRegularClass, session: FirSession): FirScope { - if (klass !is FirClassImpl) return FirScopeProvider.emptyScope - - return FirClassDeclaredMemberScope(klass, session) - } - -} \ No newline at end of file diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirAccessResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirAccessResolveTransformer.kt index 5f2fa89ad02..51ee70048ff 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirAccessResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirAccessResolveTransformer.kt @@ -7,27 +7,17 @@ package org.jetbrains.kotlin.fir.resolve.transformers import org.jetbrains.kotlin.fir.FirNamedReference import org.jetbrains.kotlin.fir.FirResolvedCallableReference -import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.declarations.FirFile import org.jetbrains.kotlin.fir.declarations.FirRegularClass import org.jetbrains.kotlin.fir.expressions.* import org.jetbrains.kotlin.fir.references.FirErrorNamedReference import org.jetbrains.kotlin.fir.references.FirResolvedCallableReferenceImpl -import org.jetbrains.kotlin.fir.resolve.FirScopeProvider -import org.jetbrains.kotlin.fir.resolve.lookupSuperTypes -import org.jetbrains.kotlin.fir.resolve.toSymbol +import org.jetbrains.kotlin.fir.resolve.buildUseSiteScope import org.jetbrains.kotlin.fir.scopes.ProcessorAction import org.jetbrains.kotlin.fir.scopes.ProcessorAction.NEXT -import org.jetbrains.kotlin.fir.scopes.impl.* -import org.jetbrains.kotlin.fir.service +import org.jetbrains.kotlin.fir.scopes.impl.FirTopLevelDeclaredMemberScope import org.jetbrains.kotlin.fir.symbols.ConeCallableSymbol -import org.jetbrains.kotlin.fir.symbols.ConeTypeParameterSymbol -import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol -import org.jetbrains.kotlin.fir.types.ConeClassErrorType -import org.jetbrains.kotlin.fir.types.ConeClassLikeType -import org.jetbrains.kotlin.fir.types.ConeKotlinType -import org.jetbrains.kotlin.fir.types.ConeTypedProjection import org.jetbrains.kotlin.fir.visitors.CompositeTransformResult import org.jetbrains.kotlin.fir.visitors.compose @@ -40,40 +30,9 @@ class FirAccessResolveTransformer : FirAbstractTreeTransformerWithSuperTypes(rev } } - private fun ConeClassLikeType.buildSubstitutionScope( - useSiteScope: FirClassUseSiteScope, - regularClass: FirRegularClass - ): FirClassSubstitutionScope? { - if (this.typeArguments.isEmpty()) return null - - @Suppress("UNCHECKED_CAST") - val substitution = regularClass.typeParameters.zip(this.typeArguments) { typeParameter, typeArgument -> - typeParameter.symbol to (typeArgument as? ConeTypedProjection)?.type - }.filter { (_, type) -> type != null }.toMap() as Map - - return FirClassSubstitutionScope(useSiteScope, substitution) - } - - private fun FirRegularClass.buildUseSiteScope(useSiteSession: FirSession = session): FirClassUseSiteScope { - val superTypeScope = FirCompositeScope(mutableListOf()) - val declaredScope = useSiteSession.service().getDeclaredMemberScope(this, useSiteSession) - lookupSuperTypes(this, lookupInterfaces = true, deep = false, useSiteSession = useSiteSession) - .mapNotNullTo(superTypeScope.scopes) { useSiteSuperType -> - if (useSiteSuperType is ConeClassErrorType) return@mapNotNullTo null - val symbol = useSiteSuperType.lookupTag.toSymbol(useSiteSession) - if (symbol is FirClassSymbol) { - val useSiteScope = symbol.fir.buildUseSiteScope(useSiteSession) - useSiteSuperType.buildSubstitutionScope(useSiteScope, symbol.fir) ?: useSiteScope - } else { - null - } - } - return FirClassUseSiteScope(useSiteSession, superTypeScope, declaredScope) - } - override fun transformRegularClass(regularClass: FirRegularClass, data: Nothing?): CompositeTransformResult { return withScopeCleanup { - towerScope.scopes += regularClass.buildUseSiteScope() + towerScope.scopes += regularClass.buildUseSiteScope(regularClass.session) super.transformRegularClass(regularClass, data) } } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassSubstitutionScope.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassSubstitutionScope.kt index 790a7a0ba5f..a94c609dadb 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassSubstitutionScope.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassSubstitutionScope.kt @@ -20,7 +20,7 @@ import org.jetbrains.kotlin.fir.types.impl.FirResolvedTypeRefImpl import org.jetbrains.kotlin.name.Name class FirClassSubstitutionScope( - private val useSiteScope: FirClassUseSiteScope, + private val useSiteScope: FirScope, private val substitution: Map ) : FirScope { diff --git a/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/java/AbstractFirTypeEnhancementTest.kt b/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/java/AbstractFirTypeEnhancementTest.kt index 46fdab53960..b48987f4c78 100644 --- a/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/java/AbstractFirTypeEnhancementTest.kt +++ b/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/java/AbstractFirTypeEnhancementTest.kt @@ -27,7 +27,6 @@ import org.jetbrains.kotlin.fir.java.declarations.FirJavaConstructor import org.jetbrains.kotlin.fir.java.declarations.FirJavaField import org.jetbrains.kotlin.fir.java.declarations.FirJavaMethod import org.jetbrains.kotlin.fir.java.scopes.JavaClassEnhancementScope -import org.jetbrains.kotlin.fir.resolve.FirScopeProvider import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider import org.jetbrains.kotlin.fir.resolve.impl.FirCompositeSymbolProvider import org.jetbrains.kotlin.fir.scopes.ProcessorAction @@ -171,7 +170,7 @@ abstract class AbstractFirTypeEnhancementTest : KtUsefulTestCase() { val processedJavaClasses = mutableSetOf() for (javaClass in javaProvider.getJavaTopLevelClasses().sortedBy { it.name }) { if (javaClass !is FirJavaClass || javaClass in processedJavaClasses) continue - val enhancementScope = session.service().getDeclaredMemberScope(javaClass, session).let { + val enhancementScope = javaClass.buildClassSpecificUseSiteScope(session).let { when (it) { is FirCompositeScope -> it.scopes.filterIsInstance().first() is JavaClassEnhancementScope -> it diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirClass.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirClass.kt index d13b3da2529..98b9cca4bea 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirClass.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirClass.kt @@ -6,8 +6,10 @@ package org.jetbrains.kotlin.fir.declarations import org.jetbrains.kotlin.descriptors.ClassKind +import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.expressions.FirAnnotationContainer import org.jetbrains.kotlin.fir.expressions.FirStatement +import org.jetbrains.kotlin.fir.scopes.FirScope import org.jetbrains.kotlin.fir.types.ConeClassLikeType import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.coneTypeSafe @@ -19,6 +21,8 @@ interface FirClass : FirDeclarationContainer, FirStatement, FirAnnotationContain val classKind: ClassKind + fun buildClassSpecificUseSiteScope(useSiteSession: FirSession): FirScope? = null + override fun accept(visitor: FirVisitor, data: D): R = visitor.visitClass(this, data) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/FirScope.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/scopes/FirScope.kt similarity index 95% rename from compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/FirScope.kt rename to compiler/fir/tree/src/org/jetbrains/kotlin/fir/scopes/FirScope.kt index c57c5b073b3..0dabf3ac35b 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/FirScope.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/scopes/FirScope.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license * that can be found in the license/LICENSE.txt file. */ diff --git a/idea/testData/fir/multiModule/basicWithAnnotatedOverriddenJava/jvm/jvm.txt b/idea/testData/fir/multiModule/basicWithAnnotatedOverriddenJava/jvm/jvm.txt index a5f48a80b63..bf2265ae864 100644 --- a/idea/testData/fir/multiModule/basicWithAnnotatedOverriddenJava/jvm/jvm.txt +++ b/idea/testData/fir/multiModule/basicWithAnnotatedOverriddenJava/jvm/jvm.txt @@ -3,8 +3,8 @@ FILE: jvm.kt public constructor(): super() public final function test(): R|kotlin/Unit| { - val x: R|error: Not supported: FirImplicitTypeRefImpl| = #(String(123)) - val y: R|error: Not supported: FirImplicitTypeRefImpl| = #(Null(null)) + val x: R|error: Not supported: FirImplicitTypeRefImpl| = R|/AnnotatedDerived.foo|(String(123)) + val y: R|error: Not supported: FirImplicitTypeRefImpl| = R|/AnnotatedDerived.foo|(Null(null)) } } diff --git a/idea/tests/org/jetbrains/kotlin/idea/fir/AbstractFirMultiModuleResolveTest.kt b/idea/tests/org/jetbrains/kotlin/idea/fir/AbstractFirMultiModuleResolveTest.kt index 11a261852c6..04c64c8347f 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/fir/AbstractFirMultiModuleResolveTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/fir/AbstractFirMultiModuleResolveTest.kt @@ -23,7 +23,6 @@ import org.jetbrains.kotlin.fir.java.declarations.FirJavaClass import org.jetbrains.kotlin.fir.java.declarations.FirJavaMethod import org.jetbrains.kotlin.fir.java.scopes.JavaClassEnhancementScope import org.jetbrains.kotlin.fir.resolve.FirProvider -import org.jetbrains.kotlin.fir.resolve.FirScopeProvider import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider import org.jetbrains.kotlin.fir.resolve.impl.FirCompositeSymbolProvider import org.jetbrains.kotlin.fir.resolve.impl.FirProviderImpl @@ -133,7 +132,7 @@ abstract class AbstractFirMultiModuleResolveTest : AbstractMultiModuleTest() { val javaProvider = symbolProvider.providers.filterIsInstance().first() for (javaClass in javaProvider.getJavaTopLevelClasses().sortedBy { it.name }) { if (javaClass !is FirJavaClass || javaClass in processedJavaClasses) continue - val enhancementScope = session.service().getDeclaredMemberScope(javaClass, session).let { + val enhancementScope = javaClass.buildClassSpecificUseSiteScope(session).let { when (it) { is FirCompositeScope -> it.scopes.filterIsInstance().first() is JavaClassEnhancementScope -> it