Refactor AnalyzerFacade: move module.initialize() outside of createResolverForModule()
This commit is contained in:
@@ -21,6 +21,7 @@ import com.intellij.psi.search.GlobalSearchScope
|
|||||||
import org.jetbrains.kotlin.analyzer.*
|
import org.jetbrains.kotlin.analyzer.*
|
||||||
import org.jetbrains.kotlin.context.ModuleContext
|
import org.jetbrains.kotlin.context.ModuleContext
|
||||||
import org.jetbrains.kotlin.descriptors.ModuleParameters
|
import org.jetbrains.kotlin.descriptors.ModuleParameters
|
||||||
|
import org.jetbrains.kotlin.descriptors.PackageFragmentProvider
|
||||||
import org.jetbrains.kotlin.descriptors.impl.CompositePackageFragmentProvider
|
import org.jetbrains.kotlin.descriptors.impl.CompositePackageFragmentProvider
|
||||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
||||||
import org.jetbrains.kotlin.di.InjectorForLazyResolveWithJava
|
import org.jetbrains.kotlin.di.InjectorForLazyResolveWithJava
|
||||||
@@ -36,6 +37,7 @@ import kotlin.platform.platformStatic
|
|||||||
|
|
||||||
public class JvmResolverForModule(
|
public class JvmResolverForModule(
|
||||||
override val lazyResolveSession: ResolveSession,
|
override val lazyResolveSession: ResolveSession,
|
||||||
|
override val packageFragmentProvider: PackageFragmentProvider,
|
||||||
public val javaDescriptorResolver: JavaDescriptorResolver
|
public val javaDescriptorResolver: JavaDescriptorResolver
|
||||||
) : ResolverForModule
|
) : ResolverForModule
|
||||||
|
|
||||||
@@ -75,8 +77,7 @@ public object JvmAnalyzerFacade : AnalyzerFacade<JvmResolverForModule, JvmPlatfo
|
|||||||
val resolveSession = injector.getResolveSession()!!
|
val resolveSession = injector.getResolveSession()!!
|
||||||
val javaDescriptorResolver = injector.getJavaDescriptorResolver()!!
|
val javaDescriptorResolver = injector.getJavaDescriptorResolver()!!
|
||||||
val providersForModule = listOf(resolveSession.getPackageFragmentProvider(), javaDescriptorResolver.packageFragmentProvider)
|
val providersForModule = listOf(resolveSession.getPackageFragmentProvider(), javaDescriptorResolver.packageFragmentProvider)
|
||||||
moduleDescriptor.initialize(CompositePackageFragmentProvider(providersForModule))
|
return JvmResolverForModule(resolveSession, CompositePackageFragmentProvider(providersForModule), javaDescriptorResolver)
|
||||||
return JvmResolverForModule(resolveSession, javaDescriptorResolver)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override val moduleParameters: ModuleParameters
|
override val moduleParameters: ModuleParameters
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import org.jetbrains.kotlin.context.ProjectContext
|
|||||||
import org.jetbrains.kotlin.context.withModule
|
import org.jetbrains.kotlin.context.withModule
|
||||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.ModuleParameters
|
import org.jetbrains.kotlin.descriptors.ModuleParameters
|
||||||
|
import org.jetbrains.kotlin.descriptors.PackageFragmentProvider
|
||||||
import org.jetbrains.kotlin.descriptors.impl.LazyModuleDependencies
|
import org.jetbrains.kotlin.descriptors.impl.LazyModuleDependencies
|
||||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
@@ -34,6 +35,7 @@ import kotlin.properties.Delegates
|
|||||||
|
|
||||||
public trait ResolverForModule {
|
public trait ResolverForModule {
|
||||||
public val lazyResolveSession: ResolveSession
|
public val lazyResolveSession: ResolveSession
|
||||||
|
public val packageFragmentProvider: PackageFragmentProvider
|
||||||
}
|
}
|
||||||
|
|
||||||
public trait ResolverForProject<M : ModuleInfo,out R : ResolverForModule> {
|
public trait ResolverForProject<M : ModuleInfo,out R : ResolverForModule> {
|
||||||
@@ -178,7 +180,7 @@ public trait AnalyzerFacade<A : ResolverForModule, in P : PlatformAnalysisParame
|
|||||||
module, descriptor, projectContext.withModule(descriptor),
|
module, descriptor, projectContext.withModule(descriptor),
|
||||||
modulesContent(module), platformParameters, resolverForProject
|
modulesContent(module), platformParameters, resolverForProject
|
||||||
)
|
)
|
||||||
assert(descriptor.isInitialized, "ModuleDescriptorImpl#initialize() should be called in createResolverForModule")
|
descriptor.initialize(resolverForModule.packageFragmentProvider)
|
||||||
resolverForProject.resolverByModuleDescriptor[descriptor] = resolverForModule
|
resolverForProject.resolverByModuleDescriptor[descriptor] = resolverForModule
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ public class ModuleDescriptorImpl(
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
public val isInitialized: Boolean
|
private val isInitialized: Boolean
|
||||||
get() = packageFragmentProviderForModuleContent != null
|
get() = packageFragmentProviderForModuleContent != null
|
||||||
|
|
||||||
public fun setDependencies(dependencies: ModuleDependencies) {
|
public fun setDependencies(dependencies: ModuleDependencies) {
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import com.intellij.util.PathUtil
|
|||||||
import org.jetbrains.kotlin.analyzer.*
|
import org.jetbrains.kotlin.analyzer.*
|
||||||
import org.jetbrains.kotlin.context.ModuleContext
|
import org.jetbrains.kotlin.context.ModuleContext
|
||||||
import org.jetbrains.kotlin.descriptors.ModuleParameters
|
import org.jetbrains.kotlin.descriptors.ModuleParameters
|
||||||
|
import org.jetbrains.kotlin.descriptors.PackageFragmentProvider
|
||||||
import org.jetbrains.kotlin.descriptors.impl.CompositePackageFragmentProvider
|
import org.jetbrains.kotlin.descriptors.impl.CompositePackageFragmentProvider
|
||||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
||||||
import org.jetbrains.kotlin.di.InjectorForLazyResolve
|
import org.jetbrains.kotlin.di.InjectorForLazyResolve
|
||||||
@@ -36,10 +37,10 @@ import org.jetbrains.kotlin.types.DynamicTypesAllowed
|
|||||||
import org.jetbrains.kotlin.utils.KotlinJavascriptMetadataUtils
|
import org.jetbrains.kotlin.utils.KotlinJavascriptMetadataUtils
|
||||||
|
|
||||||
public class JsResolverForModule(
|
public class JsResolverForModule(
|
||||||
override val lazyResolveSession: ResolveSession
|
override val lazyResolveSession: ResolveSession,
|
||||||
|
override val packageFragmentProvider: PackageFragmentProvider
|
||||||
) : ResolverForModule
|
) : ResolverForModule
|
||||||
|
|
||||||
|
|
||||||
public object JsAnalyzerFacade : AnalyzerFacade<JsResolverForModule, PlatformAnalysisParameters> {
|
public object JsAnalyzerFacade : AnalyzerFacade<JsResolverForModule, PlatformAnalysisParameters> {
|
||||||
|
|
||||||
override fun <M : ModuleInfo> createResolverForModule(
|
override fun <M : ModuleInfo> createResolverForModule(
|
||||||
@@ -72,8 +73,7 @@ public object JsAnalyzerFacade : AnalyzerFacade<JsResolverForModule, PlatformAna
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
moduleDescriptor.initialize(packageFragmentProvider)
|
return JsResolverForModule(resolveSession, packageFragmentProvider)
|
||||||
return JsResolverForModule(resolveSession)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override val moduleParameters: ModuleParameters
|
override val moduleParameters: ModuleParameters
|
||||||
|
|||||||
Reference in New Issue
Block a user