diff --git a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/FirJvmOverridesBackwardCompatibilityHelper.kt b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/FirJvmOverridesBackwardCompatibilityHelper.kt similarity index 99% rename from compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/FirJvmOverridesBackwardCompatibilityHelper.kt rename to compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/FirJvmOverridesBackwardCompatibilityHelper.kt index cc6254d107c..1a5f4f36591 100644 --- a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/FirJvmOverridesBackwardCompatibilityHelper.kt +++ b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/FirJvmOverridesBackwardCompatibilityHelper.kt @@ -3,7 +3,7 @@ * 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.session +package org.jetbrains.kotlin.fir.analysis.jvm import org.jetbrains.kotlin.builtins.jvm.JavaToKotlinClassMap import org.jetbrains.kotlin.fir.analysis.FirOverridesBackwardCompatibilityHelper diff --git a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/ComponentsContainers.kt b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/ComponentsContainers.kt index 2af7d68b875..18d65f4c4d8 100644 --- a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/ComponentsContainers.kt +++ b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/ComponentsContainers.kt @@ -11,6 +11,7 @@ import org.jetbrains.kotlin.fir.* import org.jetbrains.kotlin.fir.analysis.CheckersComponent import org.jetbrains.kotlin.fir.analysis.FirOverridesBackwardCompatibilityHelper import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirNameConflictsTracker +import org.jetbrains.kotlin.fir.analysis.jvm.FirJvmOverridesBackwardCompatibilityHelper import org.jetbrains.kotlin.fir.caches.FirCachesFactory import org.jetbrains.kotlin.fir.caches.FirThreadUnsafeCachesFactory import org.jetbrains.kotlin.fir.declarations.SealedClassInheritorsProvider @@ -76,6 +77,7 @@ fun FirSession.registerResolveComponents(lookupTracker: LookupTracker? = null) { register(FirTypeResolver::class, FirTypeResolverImpl(this)) register(CheckersComponent::class, CheckersComponent()) register(FirNameConflictsTrackerComponent::class, FirNameConflictsTracker()) + register(FirModuleVisibilityChecker::class, FirModuleVisibilityChecker.Standard(this)) if (lookupTracker != null) { val firFileToPath: (FirSourceElement) -> String = { val psiSource = (it as? FirPsiSourceElement) ?: TODO("Not implemented for non-FirPsiSourceElement") @@ -94,7 +96,6 @@ fun FirSession.registerResolveComponents(lookupTracker: LookupTracker? = null) { @OptIn(SessionConfiguration::class) fun FirSession.registerJavaSpecificResolveComponents() { register(FirVisibilityChecker::class, FirJavaVisibilityChecker) - register(FirModuleVisibilityChecker::class, FirJvmModuleVisibilityChecker(this)) register(ConeCallConflictResolverFactory::class, JvmCallConflictResolverFactory) register(FirPlatformClassMapper::class, FirJavaClassMapper(this)) register(FirSyntheticNamesProvider::class, FirJavaSyntheticNamesProvider) diff --git a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/FirJvmModuleVisibilityChecker.kt b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/FirJvmModuleVisibilityChecker.kt deleted file mode 100644 index 659c5a07746..00000000000 --- a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/FirJvmModuleVisibilityChecker.kt +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright 2010-2021 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. - */ - -package org.jetbrains.kotlin.fir.session - -import org.jetbrains.kotlin.fir.FirModuleVisibilityChecker -import org.jetbrains.kotlin.fir.FirSession -import org.jetbrains.kotlin.fir.declarations.FirDeclaration -import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration -import org.jetbrains.kotlin.fir.moduleData - -class FirJvmModuleVisibilityChecker(private val session: FirSession) : FirModuleVisibilityChecker { - override fun isInFriendModule(declaration: T): Boolean where T : FirMemberDeclaration, T : FirDeclaration { - val useSiteModuleData = session.moduleData - val declarationModuleData = declaration.moduleData - return useSiteModuleData == declarationModuleData || declarationModuleData in useSiteModuleData.friendDependencies - } -} diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirVisibilityChecker.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirVisibilityChecker.kt index 482643e39b0..612c49b9247 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirVisibilityChecker.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirVisibilityChecker.kt @@ -24,8 +24,16 @@ import org.jetbrains.kotlin.fir.types.ConeClassLikeType import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName -interface FirModuleVisibilityChecker : FirSessionComponent { - fun isInFriendModule(declaration: T): Boolean where T : FirMemberDeclaration, T : FirDeclaration +abstract class FirModuleVisibilityChecker : FirSessionComponent { + abstract fun isInFriendModule(declaration: T): Boolean where T : FirMemberDeclaration, T : FirDeclaration + + class Standard(val session: FirSession) : FirModuleVisibilityChecker() { + override fun isInFriendModule(declaration: T): Boolean where T : FirMemberDeclaration, T : FirDeclaration { + val useSiteModuleData = session.moduleData + val declarationModuleData = declaration.moduleData + return useSiteModuleData == declarationModuleData || declarationModuleData in useSiteModuleData.friendDependencies + } + } } abstract class FirVisibilityChecker : FirSessionComponent {