Support friend internal visibility in K2Metadata compiler (KT-37264)
Add and handle the friend paths and refines paths compiler arguments; Reuse klib dependency module descriptors in the resolver for project; Issue #KT-37264
This commit is contained in:
@@ -19,12 +19,12 @@ abstract class AbstractResolverForProject<M : ModuleInfo>(
|
||||
private val debugName: String,
|
||||
protected val projectContext: ProjectContext,
|
||||
modules: Collection<M>,
|
||||
private val fallbackModificationTracker: ModificationTracker? = null,
|
||||
protected val fallbackModificationTracker: ModificationTracker? = null,
|
||||
private val delegateResolver: ResolverForProject<M> = EmptyResolverForProject(),
|
||||
private val packageOracleFactory: PackageOracleFactory = PackageOracleFactory.OptimisticFactory
|
||||
) : ResolverForProject<M>() {
|
||||
|
||||
private class ModuleData(
|
||||
protected class ModuleData(
|
||||
val moduleDescriptor: ModuleDescriptorImpl,
|
||||
val modificationTracker: ModificationTracker?
|
||||
) {
|
||||
@@ -37,7 +37,7 @@ abstract class AbstractResolverForProject<M : ModuleInfo>(
|
||||
}
|
||||
|
||||
// Protected by ("projectContext.storageManager.lock")
|
||||
private val descriptorByModule = mutableMapOf<M, ModuleData>()
|
||||
protected val descriptorByModule = mutableMapOf<M, ModuleData>()
|
||||
|
||||
// Protected by ("projectContext.storageManager.lock")
|
||||
private val moduleInfoByDescriptor = mutableMapOf<ModuleDescriptorImpl, M>()
|
||||
|
||||
+11
-2
@@ -26,17 +26,26 @@ class ResolverForSingleModuleProject<M : ModuleInfo>(
|
||||
private val languageVersionSettings: LanguageVersionSettings = LanguageVersionSettingsImpl.DEFAULT,
|
||||
private val syntheticFiles: Collection<KtFile> = emptyList(),
|
||||
private val sdkDependency: M? = null,
|
||||
dependencyModules: Iterable<M> = emptyList()
|
||||
knownDependencyModuleDescriptors: Map<M, ModuleDescriptor> = emptyMap()
|
||||
) : AbstractResolverForProject<M>(
|
||||
debugName,
|
||||
projectContext,
|
||||
listOf(module) + dependencyModules,
|
||||
listOf(module) + knownDependencyModuleDescriptors.keys,
|
||||
null,
|
||||
EmptyResolverForProject(),
|
||||
PackageOracleFactory.OptimisticFactory
|
||||
) {
|
||||
override fun sdkDependency(module: M): M? = sdkDependency
|
||||
|
||||
init {
|
||||
knownDependencyModuleDescriptors.forEach { (module, descriptor) ->
|
||||
descriptorByModule[module] = ModuleData(
|
||||
descriptor as ModuleDescriptorImpl,
|
||||
(module as? TrackableModuleInfo)?.createModificationTracker() ?: fallbackModificationTracker
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
override fun modulesContent(module: M): ModuleContent<M> = when (module) {
|
||||
this.module -> ModuleContent(module, syntheticFiles, searchScope)
|
||||
else -> ModuleContent(module, emptyList(), searchScope)
|
||||
|
||||
Reference in New Issue
Block a user