Refactor: Pass TargetPlatform instead of configurator, hide DynamicTypesSettings inside configurator

This commit is contained in:
Pavel V. Talanov
2015-07-23 15:38:22 +03:00
parent 84b8ed00c5
commit 8cc9739f72
18 changed files with 54 additions and 67 deletions
@@ -33,7 +33,7 @@ import org.jetbrains.kotlin.types.DynamicTypesSettings
import org.jetbrains.kotlin.types.expressions.*
public fun StorageComponentContainer.configureModule(
moduleContext: ModuleContext, platformConfigurator: PlatformConfigurator
moduleContext: ModuleContext, platform: TargetPlatform
) {
useInstance(moduleContext)
useInstance(moduleContext.module)
@@ -42,42 +42,38 @@ public fun StorageComponentContainer.configureModule(
useInstance(moduleContext.builtIns)
useInstance(moduleContext.platformToKotlinClassMap)
useInstance(platformConfigurator)
useInstance(platform)
platformConfigurator.configure(this)
platform.platformConfigurator.configure(this)
}
public fun StorageComponentContainer.configureModule(
moduleContext: ModuleContext, platformConfigurator: PlatformConfigurator, trace: BindingTrace
moduleContext: ModuleContext, platform: TargetPlatform, trace: BindingTrace
) {
configureModule(moduleContext, platformConfigurator)
configureModule(moduleContext, platform)
useInstance(trace)
}
public fun createContainerForBodyResolve(
moduleContext: ModuleContext, bindingTrace: BindingTrace,
platformConfigurator: PlatformConfigurator, statementFilter: StatementFilter,
dynamicTypesSettings: DynamicTypesSettings
platform: TargetPlatform, statementFilter: StatementFilter
): StorageComponentContainer = createContainer("BodyResolve") {
configureModule(moduleContext, platformConfigurator, bindingTrace)
configureModule(moduleContext, platform, bindingTrace)
useInstance(statementFilter)
useInstance(dynamicTypesSettings)
useInstance(BodyResolveCache.ThrowException)
useImpl<BodyResolver>()
}
public fun createContainerForLazyBodyResolve(
moduleContext: ModuleContext, kotlinCodeAnalyzer: KotlinCodeAnalyzer,
bindingTrace: BindingTrace, platformConfigurator: PlatformConfigurator,
dynamicTypesSettings: DynamicTypesSettings,
bindingTrace: BindingTrace, platform: TargetPlatform,
bodyResolveCache: BodyResolveCache
): StorageComponentContainer = createContainer("LazyBodyResolve") {
configureModule(moduleContext, platformConfigurator, bindingTrace)
configureModule(moduleContext, platform, bindingTrace)
useInstance(kotlinCodeAnalyzer)
useInstance(kotlinCodeAnalyzer.getFileScopeProvider())
useInstance(dynamicTypesSettings)
useInstance(bodyResolveCache)
useImpl<LazyTopDownAnalyzerForTopLevel>()
}
@@ -85,13 +81,11 @@ public fun createContainerForLazyBodyResolve(
public fun createContainerForLazyLocalClassifierAnalyzer(
moduleContext: ModuleContext,
bindingTrace: BindingTrace,
platformConfigurator: PlatformConfigurator,
dynamicTypesSettings: DynamicTypesSettings,
platform: TargetPlatform,
localClassDescriptorHolder: LocalClassDescriptorHolder
): StorageComponentContainer = createContainer("LocalClassifierAnalyzer") {
configureModule(moduleContext, platformConfigurator, bindingTrace)
configureModule(moduleContext, platform, bindingTrace)
useInstance(dynamicTypesSettings)
useInstance(localClassDescriptorHolder)
useImpl<LazyTopDownAnalyzer>()
@@ -105,12 +99,13 @@ public fun createContainerForLazyLocalClassifierAnalyzer(
}
private fun createContainerForLazyResolve(
moduleContext: ModuleContext, declarationProviderFactory: DeclarationProviderFactory, bindingTrace: BindingTrace,
platformConfigurator: PlatformConfigurator, dynamicTypesSettings: DynamicTypesSettings
moduleContext: ModuleContext,
declarationProviderFactory: DeclarationProviderFactory,
bindingTrace: BindingTrace,
platform: TargetPlatform
): StorageComponentContainer = createContainer("LazyResolve") {
configureModule(moduleContext, platformConfigurator, bindingTrace)
configureModule(moduleContext, platform, bindingTrace)
useInstance(dynamicTypesSettings)
useInstance(declarationProviderFactory)
useInstance(UsageCollector.DO_NOTHING)
@@ -120,14 +115,12 @@ private fun createContainerForLazyResolve(
public fun createLazyResolveSession(
moduleContext: ModuleContext, declarationProviderFactory: DeclarationProviderFactory, bindingTrace: BindingTrace,
platformConfigurator: PlatformConfigurator, dynamicTypesSettings: DynamicTypesSettings
): ResolveSession = createContainerForLazyResolve(
moduleContext, declarationProviderFactory, bindingTrace, platformConfigurator, dynamicTypesSettings
).get<ResolveSession>()
platform: TargetPlatform
): ResolveSession = createContainerForLazyResolve(moduleContext, declarationProviderFactory, bindingTrace, platform).get<ResolveSession>()
public fun createContainerForMacros(project: Project, module: ModuleDescriptor): ContainerForMacros {
val componentContainer = createContainer("Macros") {
configureModule(ModuleContext(module, project), TargetPlatform.Default.platformConfigurator)
configureModule(ModuleContext(module, project), TargetPlatform.Default)
useImpl<ExpressionTypingServices>()
}
return ContainerForMacros(componentContainer)
@@ -24,8 +24,7 @@ import org.jetbrains.kotlin.resolve.validation.SymbolUsageValidator
import org.jetbrains.kotlin.types.DynamicTypesSettings
public abstract class TargetPlatform(
public val platformName: String,
public val dynamicTypesSettings: DynamicTypesSettings
public val platformName: String
) {
override fun toString(): String {
return platformName
@@ -33,8 +32,8 @@ public abstract class TargetPlatform(
public abstract val platformConfigurator: PlatformConfigurator
public object Default : TargetPlatform("Default", DynamicTypesSettings()) {
override val platformConfigurator = PlatformConfigurator(listOf(), listOf(), listOf(), listOf())
public object Default : TargetPlatform("Default") {
override val platformConfigurator = PlatformConfigurator(DynamicTypesSettings(), listOf(), listOf(), listOf(), listOf())
}
}
@@ -45,6 +44,7 @@ private val DEFAULT_VALIDATORS = listOf(DeprecatedSymbolValidator())
public open class PlatformConfigurator(
private val dynamicTypesSettings: DynamicTypesSettings,
additionalDeclarationCheckers: List<DeclarationChecker>,
additionalCallCheckers: List<CallChecker>,
additionalTypeCheckers: List<AdditionalTypeChecker>,
@@ -58,6 +58,7 @@ public open class PlatformConfigurator(
public open fun configure(container: StorageComponentContainer) {
with (container) {
useInstance(dynamicTypesSettings)
declarationCheckers.forEach { useInstance(it) }
callCheckers.forEach { useInstance(it) }
typeCheckers.forEach { useInstance(it) }
@@ -52,7 +52,7 @@ public class LocalClassifierAnalyzer(
private val funcionDescriptorResolver: FunctionDescriptorResolver,
private val typeResolver: TypeResolver,
private val annotationResolver: AnnotationResolver,
private val platformConfigurator: PlatformConfigurator,
private val platform: TargetPlatform,
private val dynamicTypesSettings: DynamicTypesSettings
) {
fun processClassOrObject(
@@ -66,8 +66,7 @@ public class LocalClassifierAnalyzer(
val container = createContainerForLazyLocalClassifierAnalyzer(
moduleContext,
context.trace,
platformConfigurator,
dynamicTypesSettings,
platform,
LocalClassDescriptorHolder(
scope,
classOrObject,