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
@@ -29,7 +29,7 @@ import org.jetbrains.kotlin.resolve.BodyResolveCache
import org.jetbrains.kotlin.resolve.LazyTopDownAnalyzerForTopLevel import org.jetbrains.kotlin.resolve.LazyTopDownAnalyzerForTopLevel
import org.jetbrains.kotlin.resolve.jvm.JavaClassFinderPostConstruct import org.jetbrains.kotlin.resolve.jvm.JavaClassFinderPostConstruct
import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformConfigurator import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
import org.jetbrains.kotlin.resolve.lazy.FileScopeProvider import org.jetbrains.kotlin.resolve.lazy.FileScopeProvider
import org.jetbrains.kotlin.resolve.lazy.FileScopeProviderImpl import org.jetbrains.kotlin.resolve.lazy.FileScopeProviderImpl
import org.jetbrains.kotlin.resolve.lazy.ResolveSession import org.jetbrains.kotlin.resolve.lazy.ResolveSession
@@ -39,7 +39,7 @@ public fun createContainerForReplWithJava(
moduleContext: ModuleContext, bindingTrace: BindingTrace, declarationProviderFactory: DeclarationProviderFactory, moduleContext: ModuleContext, bindingTrace: BindingTrace, declarationProviderFactory: DeclarationProviderFactory,
moduleContentScope: GlobalSearchScope, additionalFileScopeProvider: FileScopeProvider.AdditionalScopes moduleContentScope: GlobalSearchScope, additionalFileScopeProvider: FileScopeProvider.AdditionalScopes
): ContainerForReplWithJava = createContainer("ReplWithJava") { ): ContainerForReplWithJava = createContainer("ReplWithJava") {
configureModule(moduleContext, JvmPlatformConfigurator, bindingTrace) configureModule(moduleContext, JvmPlatform, bindingTrace)
configureJavaTopDownAnalysis(moduleContentScope, moduleContext.project, UsageCollector.DO_NOTHING) configureJavaTopDownAnalysis(moduleContentScope, moduleContext.project, UsageCollector.DO_NOTHING)
useInstance(additionalFileScopeProvider) useInstance(additionalFileScopeProvider)
@@ -39,7 +39,7 @@ import org.jetbrains.kotlin.resolve.LazyTopDownAnalyzerForTopLevel
import org.jetbrains.kotlin.resolve.jvm.JavaClassFinderPostConstruct import org.jetbrains.kotlin.resolve.jvm.JavaClassFinderPostConstruct
import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver
import org.jetbrains.kotlin.resolve.jvm.JavaLazyAnalyzerPostConstruct import org.jetbrains.kotlin.resolve.jvm.JavaLazyAnalyzerPostConstruct
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformConfigurator import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
import org.jetbrains.kotlin.resolve.lazy.FileScopeProviderImpl import org.jetbrains.kotlin.resolve.lazy.FileScopeProviderImpl
import org.jetbrains.kotlin.resolve.lazy.ResolveSession import org.jetbrains.kotlin.resolve.lazy.ResolveSession
import org.jetbrains.kotlin.resolve.lazy.declarations.DeclarationProviderFactory import org.jetbrains.kotlin.resolve.lazy.declarations.DeclarationProviderFactory
@@ -74,7 +74,7 @@ public fun createContainerForLazyResolveWithJava(
moduleContext: ModuleContext, bindingTrace: BindingTrace, declarationProviderFactory: DeclarationProviderFactory, moduleContext: ModuleContext, bindingTrace: BindingTrace, declarationProviderFactory: DeclarationProviderFactory,
moduleContentScope: GlobalSearchScope, moduleClassResolver: ModuleClassResolver moduleContentScope: GlobalSearchScope, moduleClassResolver: ModuleClassResolver
): Pair<ResolveSession, JavaDescriptorResolver> = createContainer("LazyResolveWithJava") { ): Pair<ResolveSession, JavaDescriptorResolver> = createContainer("LazyResolveWithJava") {
configureModule(moduleContext, JvmPlatformConfigurator, bindingTrace) configureModule(moduleContext, JvmPlatform, bindingTrace)
configureJavaTopDownAnalysis(moduleContentScope, moduleContext.project, UsageCollector.DO_NOTHING) configureJavaTopDownAnalysis(moduleContentScope, moduleContext.project, UsageCollector.DO_NOTHING)
useInstance(moduleClassResolver) useInstance(moduleClassResolver)
@@ -97,7 +97,7 @@ public fun createContainerForTopDownAnalyzerForJvm(
moduleContentScope: GlobalSearchScope, moduleContentScope: GlobalSearchScope,
usageCollector: UsageCollector usageCollector: UsageCollector
): ContainerForTopDownAnalyzerForJvm = createContainer("TopDownAnalyzerForJvm") { ): ContainerForTopDownAnalyzerForJvm = createContainer("TopDownAnalyzerForJvm") {
configureModule(moduleContext, JvmPlatformConfigurator, bindingTrace) configureModule(moduleContext, JvmPlatform, bindingTrace)
configureJavaTopDownAnalysis(moduleContentScope, moduleContext.project, usageCollector) configureJavaTopDownAnalysis(moduleContentScope, moduleContext.project, usageCollector)
useInstance(declarationProviderFactory) useInstance(declarationProviderFactory)
@@ -20,6 +20,6 @@ import org.jetbrains.kotlin.resolve.PlatformConfigurator
import org.jetbrains.kotlin.resolve.TargetPlatform import org.jetbrains.kotlin.resolve.TargetPlatform
import org.jetbrains.kotlin.types.DynamicTypesSettings import org.jetbrains.kotlin.types.DynamicTypesSettings
public object JvmPlatform : TargetPlatform("JVM", DynamicTypesSettings()) { public object JvmPlatform : TargetPlatform("JVM") {
override val platformConfigurator: PlatformConfigurator = JvmPlatformConfigurator override val platformConfigurator: PlatformConfigurator = JvmPlatformConfigurator
} }
@@ -50,13 +50,11 @@ import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm
import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm.NullabilityInformationSource import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm.NullabilityInformationSource
import org.jetbrains.kotlin.resolve.scopes.receivers.ExpressionReceiver import org.jetbrains.kotlin.resolve.scopes.receivers.ExpressionReceiver
import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValue import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValue
import org.jetbrains.kotlin.types.JetType import org.jetbrains.kotlin.types.*
import org.jetbrains.kotlin.types.TypeUtils
import org.jetbrains.kotlin.types.expressions.SenselessComparisonChecker import org.jetbrains.kotlin.types.expressions.SenselessComparisonChecker
import org.jetbrains.kotlin.types.flexibility
import org.jetbrains.kotlin.types.isFlexible
public object JvmPlatformConfigurator : PlatformConfigurator( public object JvmPlatformConfigurator : PlatformConfigurator(
DynamicTypesSettings(),
additionalDeclarationCheckers = listOf( additionalDeclarationCheckers = listOf(
PlatformStaticAnnotationChecker(), PlatformStaticAnnotationChecker(),
LocalFunInlineChecker(), LocalFunInlineChecker(),
@@ -33,7 +33,7 @@ import org.jetbrains.kotlin.types.DynamicTypesSettings
import org.jetbrains.kotlin.types.expressions.* import org.jetbrains.kotlin.types.expressions.*
public fun StorageComponentContainer.configureModule( public fun StorageComponentContainer.configureModule(
moduleContext: ModuleContext, platformConfigurator: PlatformConfigurator moduleContext: ModuleContext, platform: TargetPlatform
) { ) {
useInstance(moduleContext) useInstance(moduleContext)
useInstance(moduleContext.module) useInstance(moduleContext.module)
@@ -42,42 +42,38 @@ public fun StorageComponentContainer.configureModule(
useInstance(moduleContext.builtIns) useInstance(moduleContext.builtIns)
useInstance(moduleContext.platformToKotlinClassMap) useInstance(moduleContext.platformToKotlinClassMap)
useInstance(platformConfigurator) useInstance(platform)
platformConfigurator.configure(this) platform.platformConfigurator.configure(this)
} }
public fun StorageComponentContainer.configureModule( public fun StorageComponentContainer.configureModule(
moduleContext: ModuleContext, platformConfigurator: PlatformConfigurator, trace: BindingTrace moduleContext: ModuleContext, platform: TargetPlatform, trace: BindingTrace
) { ) {
configureModule(moduleContext, platformConfigurator) configureModule(moduleContext, platform)
useInstance(trace) useInstance(trace)
} }
public fun createContainerForBodyResolve( public fun createContainerForBodyResolve(
moduleContext: ModuleContext, bindingTrace: BindingTrace, moduleContext: ModuleContext, bindingTrace: BindingTrace,
platformConfigurator: PlatformConfigurator, statementFilter: StatementFilter, platform: TargetPlatform, statementFilter: StatementFilter
dynamicTypesSettings: DynamicTypesSettings
): StorageComponentContainer = createContainer("BodyResolve") { ): StorageComponentContainer = createContainer("BodyResolve") {
configureModule(moduleContext, platformConfigurator, bindingTrace) configureModule(moduleContext, platform, bindingTrace)
useInstance(statementFilter) useInstance(statementFilter)
useInstance(dynamicTypesSettings)
useInstance(BodyResolveCache.ThrowException) useInstance(BodyResolveCache.ThrowException)
useImpl<BodyResolver>() useImpl<BodyResolver>()
} }
public fun createContainerForLazyBodyResolve( public fun createContainerForLazyBodyResolve(
moduleContext: ModuleContext, kotlinCodeAnalyzer: KotlinCodeAnalyzer, moduleContext: ModuleContext, kotlinCodeAnalyzer: KotlinCodeAnalyzer,
bindingTrace: BindingTrace, platformConfigurator: PlatformConfigurator, bindingTrace: BindingTrace, platform: TargetPlatform,
dynamicTypesSettings: DynamicTypesSettings,
bodyResolveCache: BodyResolveCache bodyResolveCache: BodyResolveCache
): StorageComponentContainer = createContainer("LazyBodyResolve") { ): StorageComponentContainer = createContainer("LazyBodyResolve") {
configureModule(moduleContext, platformConfigurator, bindingTrace) configureModule(moduleContext, platform, bindingTrace)
useInstance(kotlinCodeAnalyzer) useInstance(kotlinCodeAnalyzer)
useInstance(kotlinCodeAnalyzer.getFileScopeProvider()) useInstance(kotlinCodeAnalyzer.getFileScopeProvider())
useInstance(dynamicTypesSettings)
useInstance(bodyResolveCache) useInstance(bodyResolveCache)
useImpl<LazyTopDownAnalyzerForTopLevel>() useImpl<LazyTopDownAnalyzerForTopLevel>()
} }
@@ -85,13 +81,11 @@ public fun createContainerForLazyBodyResolve(
public fun createContainerForLazyLocalClassifierAnalyzer( public fun createContainerForLazyLocalClassifierAnalyzer(
moduleContext: ModuleContext, moduleContext: ModuleContext,
bindingTrace: BindingTrace, bindingTrace: BindingTrace,
platformConfigurator: PlatformConfigurator, platform: TargetPlatform,
dynamicTypesSettings: DynamicTypesSettings,
localClassDescriptorHolder: LocalClassDescriptorHolder localClassDescriptorHolder: LocalClassDescriptorHolder
): StorageComponentContainer = createContainer("LocalClassifierAnalyzer") { ): StorageComponentContainer = createContainer("LocalClassifierAnalyzer") {
configureModule(moduleContext, platformConfigurator, bindingTrace) configureModule(moduleContext, platform, bindingTrace)
useInstance(dynamicTypesSettings)
useInstance(localClassDescriptorHolder) useInstance(localClassDescriptorHolder)
useImpl<LazyTopDownAnalyzer>() useImpl<LazyTopDownAnalyzer>()
@@ -105,12 +99,13 @@ public fun createContainerForLazyLocalClassifierAnalyzer(
} }
private fun createContainerForLazyResolve( private fun createContainerForLazyResolve(
moduleContext: ModuleContext, declarationProviderFactory: DeclarationProviderFactory, bindingTrace: BindingTrace, moduleContext: ModuleContext,
platformConfigurator: PlatformConfigurator, dynamicTypesSettings: DynamicTypesSettings declarationProviderFactory: DeclarationProviderFactory,
bindingTrace: BindingTrace,
platform: TargetPlatform
): StorageComponentContainer = createContainer("LazyResolve") { ): StorageComponentContainer = createContainer("LazyResolve") {
configureModule(moduleContext, platformConfigurator, bindingTrace) configureModule(moduleContext, platform, bindingTrace)
useInstance(dynamicTypesSettings)
useInstance(declarationProviderFactory) useInstance(declarationProviderFactory)
useInstance(UsageCollector.DO_NOTHING) useInstance(UsageCollector.DO_NOTHING)
@@ -120,14 +115,12 @@ private fun createContainerForLazyResolve(
public fun createLazyResolveSession( public fun createLazyResolveSession(
moduleContext: ModuleContext, declarationProviderFactory: DeclarationProviderFactory, bindingTrace: BindingTrace, moduleContext: ModuleContext, declarationProviderFactory: DeclarationProviderFactory, bindingTrace: BindingTrace,
platformConfigurator: PlatformConfigurator, dynamicTypesSettings: DynamicTypesSettings platform: TargetPlatform
): ResolveSession = createContainerForLazyResolve( ): ResolveSession = createContainerForLazyResolve(moduleContext, declarationProviderFactory, bindingTrace, platform).get<ResolveSession>()
moduleContext, declarationProviderFactory, bindingTrace, platformConfigurator, dynamicTypesSettings
).get<ResolveSession>()
public fun createContainerForMacros(project: Project, module: ModuleDescriptor): ContainerForMacros { public fun createContainerForMacros(project: Project, module: ModuleDescriptor): ContainerForMacros {
val componentContainer = createContainer("Macros") { val componentContainer = createContainer("Macros") {
configureModule(ModuleContext(module, project), TargetPlatform.Default.platformConfigurator) configureModule(ModuleContext(module, project), TargetPlatform.Default)
useImpl<ExpressionTypingServices>() useImpl<ExpressionTypingServices>()
} }
return ContainerForMacros(componentContainer) return ContainerForMacros(componentContainer)
@@ -24,8 +24,7 @@ import org.jetbrains.kotlin.resolve.validation.SymbolUsageValidator
import org.jetbrains.kotlin.types.DynamicTypesSettings import org.jetbrains.kotlin.types.DynamicTypesSettings
public abstract class TargetPlatform( public abstract class TargetPlatform(
public val platformName: String, public val platformName: String
public val dynamicTypesSettings: DynamicTypesSettings
) { ) {
override fun toString(): String { override fun toString(): String {
return platformName return platformName
@@ -33,8 +32,8 @@ public abstract class TargetPlatform(
public abstract val platformConfigurator: PlatformConfigurator public abstract val platformConfigurator: PlatformConfigurator
public object Default : TargetPlatform("Default", DynamicTypesSettings()) { public object Default : TargetPlatform("Default") {
override val platformConfigurator = PlatformConfigurator(listOf(), listOf(), listOf(), listOf()) override val platformConfigurator = PlatformConfigurator(DynamicTypesSettings(), listOf(), listOf(), listOf(), listOf())
} }
} }
@@ -45,6 +44,7 @@ private val DEFAULT_VALIDATORS = listOf(DeprecatedSymbolValidator())
public open class PlatformConfigurator( public open class PlatformConfigurator(
private val dynamicTypesSettings: DynamicTypesSettings,
additionalDeclarationCheckers: List<DeclarationChecker>, additionalDeclarationCheckers: List<DeclarationChecker>,
additionalCallCheckers: List<CallChecker>, additionalCallCheckers: List<CallChecker>,
additionalTypeCheckers: List<AdditionalTypeChecker>, additionalTypeCheckers: List<AdditionalTypeChecker>,
@@ -58,6 +58,7 @@ public open class PlatformConfigurator(
public open fun configure(container: StorageComponentContainer) { public open fun configure(container: StorageComponentContainer) {
with (container) { with (container) {
useInstance(dynamicTypesSettings)
declarationCheckers.forEach { useInstance(it) } declarationCheckers.forEach { useInstance(it) }
callCheckers.forEach { useInstance(it) } callCheckers.forEach { useInstance(it) }
typeCheckers.forEach { useInstance(it) } typeCheckers.forEach { useInstance(it) }
@@ -52,7 +52,7 @@ public class LocalClassifierAnalyzer(
private val funcionDescriptorResolver: FunctionDescriptorResolver, private val funcionDescriptorResolver: FunctionDescriptorResolver,
private val typeResolver: TypeResolver, private val typeResolver: TypeResolver,
private val annotationResolver: AnnotationResolver, private val annotationResolver: AnnotationResolver,
private val platformConfigurator: PlatformConfigurator, private val platform: TargetPlatform,
private val dynamicTypesSettings: DynamicTypesSettings private val dynamicTypesSettings: DynamicTypesSettings
) { ) {
fun processClassOrObject( fun processClassOrObject(
@@ -66,8 +66,7 @@ public class LocalClassifierAnalyzer(
val container = createContainerForLazyLocalClassifierAnalyzer( val container = createContainerForLazyLocalClassifierAnalyzer(
moduleContext, moduleContext,
context.trace, context.trace,
platformConfigurator, platform,
dynamicTypesSettings,
LocalClassDescriptorHolder( LocalClassDescriptorHolder(
scope, scope,
classOrObject, classOrObject,
@@ -28,7 +28,7 @@ import org.jetbrains.kotlin.descriptors.PropertyDescriptor
import org.jetbrains.kotlin.frontend.di.createLazyResolveSession import org.jetbrains.kotlin.frontend.di.createLazyResolveSession
import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.resolve.jvm.TopDownAnalyzerFacadeForJVM import org.jetbrains.kotlin.resolve.jvm.TopDownAnalyzerFacadeForJVM
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformConfigurator import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
import org.jetbrains.kotlin.resolve.lazy.KotlinTestWithEnvironment import org.jetbrains.kotlin.resolve.lazy.KotlinTestWithEnvironment
import org.jetbrains.kotlin.resolve.lazy.ResolveSession import org.jetbrains.kotlin.resolve.lazy.ResolveSession
import org.jetbrains.kotlin.resolve.lazy.declarations.FileBasedDeclarationProviderFactory import org.jetbrains.kotlin.resolve.lazy.declarations.FileBasedDeclarationProviderFactory
@@ -53,7 +53,7 @@ public abstract class AbstractDescriptorRendererTest : KotlinTestWithEnvironment
context, context,
FileBasedDeclarationProviderFactory(context.storageManager, listOf(psiFile)), FileBasedDeclarationProviderFactory(context.storageManager, listOf(psiFile)),
CliLightClassGenerationSupport.NoScopeRecordCliBindingTrace(), CliLightClassGenerationSupport.NoScopeRecordCliBindingTrace(),
JvmPlatformConfigurator, DynamicTypesSettings() JvmPlatform
) )
context.initializeModuleContents(resolveSession.getPackageFragmentProvider()) context.initializeModuleContents(resolveSession.getPackageFragmentProvider())
@@ -81,7 +81,7 @@ public abstract class AbstractDescriptorRendererTest : KotlinTestWithEnvironment
val classDescriptor = getDescriptor(jetClassOrObject, resolveSession) as ClassDescriptor val classDescriptor = getDescriptor(jetClassOrObject, resolveSession) as ClassDescriptor
addCorrespondingParameterDescriptor(classDescriptor.getUnsubstitutedPrimaryConstructor()!!, parameter) addCorrespondingParameterDescriptor(classDescriptor.getUnsubstitutedPrimaryConstructor()!!, parameter)
} }
else -> super.visitParameter(parameter) else -> super.visitParameter(parameter)
} }
} }
@@ -27,13 +27,13 @@ import org.jetbrains.kotlin.frontend.di.configureModule
import org.jetbrains.kotlin.resolve.DescriptorResolver import org.jetbrains.kotlin.resolve.DescriptorResolver
import org.jetbrains.kotlin.resolve.FunctionDescriptorResolver import org.jetbrains.kotlin.resolve.FunctionDescriptorResolver
import org.jetbrains.kotlin.resolve.TypeResolver import org.jetbrains.kotlin.resolve.TypeResolver
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformConfigurator import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
import org.jetbrains.kotlin.types.expressions.ExpressionTypingServices import org.jetbrains.kotlin.types.expressions.ExpressionTypingServices
import org.jetbrains.kotlin.types.expressions.FakeCallResolver import org.jetbrains.kotlin.types.expressions.FakeCallResolver
public fun createContainerForTests(project: Project, module: ModuleDescriptor): ContainerForTests { public fun createContainerForTests(project: Project, module: ModuleDescriptor): ContainerForTests {
return ContainerForTests(createContainer("Tests") { return ContainerForTests(createContainer("Tests") {
configureModule(ModuleContext(module, project), JvmPlatformConfigurator) configureModule(ModuleContext(module, project), JvmPlatform)
useImpl<ExpressionTypingServices>() useImpl<ExpressionTypingServices>()
}) })
} }
@@ -105,8 +105,7 @@ public class JetDefaultModalityModifiersTest extends JetLiteFixture {
new FileBasedDeclarationProviderFactory(moduleContext.getStorageManager(), new FileBasedDeclarationProviderFactory(moduleContext.getStorageManager(),
Collections.singleton(aClass.getContainingJetFile())), Collections.singleton(aClass.getContainingJetFile())),
new BindingTraceContext(), new BindingTraceContext(),
TargetPlatform.Default.platformConfigurator, TargetPlatform.Default.INSTANCE$
new DynamicTypesSettings()
); );
return (ClassDescriptorWithResolutionScopes) resolveSession.getClassDescriptor(aClass); return (ClassDescriptorWithResolutionScopes) resolveSession.getClassDescriptor(aClass);
@@ -130,7 +130,7 @@ public abstract class ElementResolver protected constructor(
return statementFilterUsed return statementFilterUsed
} }
val trace : BindingTrace = when (resolveElement) { val trace: BindingTrace = when (resolveElement) {
is JetNamedFunction -> functionAdditionalResolve(resolveSession, resolveElement, file, createStatementFilter()) is JetNamedFunction -> functionAdditionalResolve(resolveSession, resolveElement, file, createStatementFilter())
is JetClassInitializer -> initializerAdditionalResolve(resolveSession, resolveElement, file, createStatementFilter()) is JetClassInitializer -> initializerAdditionalResolve(resolveSession, resolveElement, file, createStatementFilter())
@@ -388,10 +388,11 @@ public abstract class ElementResolver protected constructor(
): BodyResolver { ): BodyResolver {
val globalContext = SimpleGlobalContext(resolveSession.getStorageManager(), resolveSession.getExceptionTracker()) val globalContext = SimpleGlobalContext(resolveSession.getStorageManager(), resolveSession.getExceptionTracker())
val module = resolveSession.getModuleDescriptor() val module = resolveSession.getModuleDescriptor()
val targetPlatform = getTargetPlatform(file)
return createContainerForBodyResolve( return createContainerForBodyResolve(
globalContext.withProject(file.getProject()).withModule(module), globalContext.withProject(file.getProject()).withModule(module),
trace, targetPlatform.platformConfigurator, statementFilter, targetPlatform.dynamicTypesSettings trace,
getTargetPlatform(file),
statementFilter
).get<BodyResolver>() ).get<BodyResolver>()
} }
@@ -28,7 +28,7 @@ import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
import org.jetbrains.kotlin.frontend.di.createLazyResolveSession import org.jetbrains.kotlin.frontend.di.createLazyResolveSession
import org.jetbrains.kotlin.idea.framework.KotlinJavaScriptLibraryDetectionUtil import org.jetbrains.kotlin.idea.framework.KotlinJavaScriptLibraryDetectionUtil
import org.jetbrains.kotlin.js.analyze.TopDownAnalyzerFacadeForJS import org.jetbrains.kotlin.js.analyze.TopDownAnalyzerFacadeForJS
import org.jetbrains.kotlin.js.resolve.JsPlatformConfigurator import org.jetbrains.kotlin.js.resolve.JsPlatform
import org.jetbrains.kotlin.resolve.BindingTraceContext import org.jetbrains.kotlin.resolve.BindingTraceContext
import org.jetbrains.kotlin.resolve.lazy.ResolveSession import org.jetbrains.kotlin.resolve.lazy.ResolveSession
import org.jetbrains.kotlin.resolve.lazy.declarations.DeclarationProviderFactoryService import org.jetbrains.kotlin.resolve.lazy.declarations.DeclarationProviderFactoryService
@@ -56,9 +56,7 @@ public object JsAnalyzerFacade : AnalyzerFacade<JsResolverForModule, PlatformAna
project, moduleContext.storageManager, syntheticFiles, if (moduleInfo.isLibrary) GlobalSearchScope.EMPTY_SCOPE else moduleContentScope project, moduleContext.storageManager, syntheticFiles, if (moduleInfo.isLibrary) GlobalSearchScope.EMPTY_SCOPE else moduleContentScope
) )
val resolveSession = createLazyResolveSession( val resolveSession = createLazyResolveSession(moduleContext, declarationProviderFactory, BindingTraceContext(), JsPlatform)
moduleContext, declarationProviderFactory, BindingTraceContext(), JsPlatformConfigurator, DynamicTypesAllowed()
)
var packageFragmentProvider = resolveSession.getPackageFragmentProvider() var packageFragmentProvider = resolveSession.getPackageFragmentProvider()
if (moduleInfo is LibraryInfo && KotlinJavaScriptLibraryDetectionUtil.isKotlinJavaScriptLibrary(moduleInfo.library)) { if (moduleInfo is LibraryInfo && KotlinJavaScriptLibraryDetectionUtil.isKotlinJavaScriptLibrary(moduleInfo.library)) {
@@ -232,8 +232,7 @@ private object KotlinResolveDataProvider {
moduleContext, moduleContext,
resolveSession, resolveSession,
trace, trace,
targetPlatform.platformConfigurator, targetPlatform,
targetPlatform.dynamicTypesSettings,
resolveSession.getBodyResolveCache() resolveSession.getBodyResolveCache()
).get<LazyTopDownAnalyzerForTopLevel>() ).get<LazyTopDownAnalyzerForTopLevel>()
@@ -254,8 +254,7 @@ public class JetSourceNavigationHelper {
newModuleContext, newModuleContext,
providerFactory, providerFactory,
new BindingTraceContext(), new BindingTraceContext(),
TargetPlatform.Default.platformConfigurator, TargetPlatform.Default.INSTANCE$
new DynamicTypesSettings()
); );
newModuleContext.initializeModuleContents(resolveSession.getPackageFragmentProvider()); newModuleContext.initializeModuleContents(resolveSession.getPackageFragmentProvider());
@@ -111,8 +111,7 @@ public class BuiltInsReferenceResolver extends AbstractProjectComponent {
DiPackage.createLazyResolveSession( DiPackage.createLazyResolveSession(
newModuleContext, newModuleContext,
declarationFactory, new BindingTraceContext(), declarationFactory, new BindingTraceContext(),
TargetPlatform.Default.INSTANCE$.getPlatformConfigurator(), TargetPlatform.Default.INSTANCE$
new DynamicTypesSettings()
); );
newModuleContext.initializeModuleContents(resolveSession.getPackageFragmentProvider()); newModuleContext.initializeModuleContents(resolveSession.getPackageFragmentProvider());
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.container.useInstance
import org.jetbrains.kotlin.context.ModuleContext import org.jetbrains.kotlin.context.ModuleContext
import org.jetbrains.kotlin.frontend.di.configureModule import org.jetbrains.kotlin.frontend.di.configureModule
import org.jetbrains.kotlin.incremental.components.UsageCollector import org.jetbrains.kotlin.incremental.components.UsageCollector
import org.jetbrains.kotlin.js.resolve.JsPlatformConfigurator import org.jetbrains.kotlin.js.resolve.JsPlatform
import org.jetbrains.kotlin.resolve.BindingTrace import org.jetbrains.kotlin.resolve.BindingTrace
import org.jetbrains.kotlin.resolve.BodyResolveCache import org.jetbrains.kotlin.resolve.BodyResolveCache
import org.jetbrains.kotlin.resolve.LazyTopDownAnalyzerForTopLevel import org.jetbrains.kotlin.resolve.LazyTopDownAnalyzerForTopLevel
@@ -38,7 +38,7 @@ public fun createTopDownAnalyzerForJs(
declarationProviderFactory: DeclarationProviderFactory declarationProviderFactory: DeclarationProviderFactory
): LazyTopDownAnalyzerForTopLevel { ): LazyTopDownAnalyzerForTopLevel {
val storageComponentContainer = createContainer("TopDownAnalyzerForJs") { val storageComponentContainer = createContainer("TopDownAnalyzerForJs") {
configureModule(moduleContext, JsPlatformConfigurator, bindingTrace) configureModule(moduleContext, JsPlatform, bindingTrace)
useInstance(declarationProviderFactory) useInstance(declarationProviderFactory)
useImpl<FileScopeProviderImpl>() useImpl<FileScopeProviderImpl>()
@@ -46,7 +46,6 @@ public fun createTopDownAnalyzerForJs(
useInstance(UsageCollector.DO_NOTHING) useInstance(UsageCollector.DO_NOTHING)
useImpl<ResolveSession>() useImpl<ResolveSession>()
useImpl<LazyTopDownAnalyzerForTopLevel>() useImpl<LazyTopDownAnalyzerForTopLevel>()
useImpl<DynamicTypesAllowed>()
} }
return storageComponentContainer.get<LazyTopDownAnalyzerForTopLevel>() return storageComponentContainer.get<LazyTopDownAnalyzerForTopLevel>()
} }
@@ -20,6 +20,6 @@ import org.jetbrains.kotlin.resolve.PlatformConfigurator
import org.jetbrains.kotlin.resolve.TargetPlatform import org.jetbrains.kotlin.resolve.TargetPlatform
import org.jetbrains.kotlin.types.DynamicTypesAllowed import org.jetbrains.kotlin.types.DynamicTypesAllowed
public object JsPlatform : TargetPlatform("JS", DynamicTypesAllowed()) { public object JsPlatform : TargetPlatform("JS") {
override val platformConfigurator: PlatformConfigurator = JsPlatformConfigurator override val platformConfigurator: PlatformConfigurator = JsPlatformConfigurator
} }
@@ -18,8 +18,10 @@ package org.jetbrains.kotlin.js.resolve
import org.jetbrains.kotlin.js.resolve.diagnostics.JsCallChecker import org.jetbrains.kotlin.js.resolve.diagnostics.JsCallChecker
import org.jetbrains.kotlin.resolve.PlatformConfigurator import org.jetbrains.kotlin.resolve.PlatformConfigurator
import org.jetbrains.kotlin.types.DynamicTypesAllowed
public object JsPlatformConfigurator : PlatformConfigurator( public object JsPlatformConfigurator : PlatformConfigurator(
DynamicTypesAllowed(),
additionalDeclarationCheckers = listOf(NativeInvokeChecker(), NativeGetterChecker(), NativeSetterChecker(), ClassDeclarationChecker()), additionalDeclarationCheckers = listOf(NativeInvokeChecker(), NativeGetterChecker(), NativeSetterChecker(), ClassDeclarationChecker()),
additionalCallCheckers = listOf(JsCallChecker()), additionalCallCheckers = listOf(JsCallChecker()),
additionalTypeCheckers = listOf(), additionalTypeCheckers = listOf(),