From 9e014e462b67c6e4dd10ff1cefd17ec273a64560 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Sun, 15 Mar 2020 12:24:42 +0100 Subject: [PATCH] Do not use CommonPlatforms directly in CommonResolverForModuleFactory This allows to get rid of dependency of this code on CommonPlatforms, which depends on all platforms (JVM, JS, Native), and eventually move it to 'frontend'. --- .../common/CommonResolverForModuleFactory.kt | 15 +++++++-------- .../kotlin/cli/metadata/CommonAnalysis.kt | 4 +++- .../kotlin/checkers/AbstractDiagnosticsTest.kt | 2 ++ .../AbstractCommonizationFromSourcesTest.kt | 4 +++- 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/compiler/cli/cli-common/src/org/jetbrains/kotlin/analyzer/common/CommonResolverForModuleFactory.kt b/compiler/cli/cli-common/src/org/jetbrains/kotlin/analyzer/common/CommonResolverForModuleFactory.kt index 920bcf89807..d7a3d2a306c 100644 --- a/compiler/cli/cli-common/src/org/jetbrains/kotlin/analyzer/common/CommonResolverForModuleFactory.kt +++ b/compiler/cli/cli-common/src/org/jetbrains/kotlin/analyzer/common/CommonResolverForModuleFactory.kt @@ -35,7 +35,6 @@ import org.jetbrains.kotlin.frontend.di.configureModule import org.jetbrains.kotlin.frontend.di.configureStandardResolveComponents import org.jetbrains.kotlin.load.kotlin.MetadataFinderFactory import org.jetbrains.kotlin.name.Name -import org.jetbrains.kotlin.platform.CommonPlatforms import org.jetbrains.kotlin.platform.TargetPlatform import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.resolve.* @@ -66,19 +65,17 @@ class CommonResolverForModuleFactory( override val capabilities: Map, Any?>, private val dependencies: Iterable, override val expectedBy: List, + override val platform: TargetPlatform, private val modulesWhoseInternalsAreVisible: Collection, private val dependOnOldBuiltIns: Boolean ) : ModuleInfo { - override fun dependencies() = listOf(this, *dependencies.toList().toTypedArray() ) + override fun dependencies() = listOf(this, *dependencies.toList().toTypedArray()) override fun modulesWhoseInternalsAreVisible(): Collection = modulesWhoseInternalsAreVisible override fun dependencyOnBuiltIns(): ModuleInfo.DependencyOnBuiltIns = if (dependOnOldBuiltIns) ModuleInfo.DependencyOnBuiltIns.LAST else ModuleInfo.DependencyOnBuiltIns.NONE - override val platform: TargetPlatform - get() = CommonPlatforms.defaultCommonPlatform - override val analyzerServices: PlatformDependentAnalyzerServices get() = CommonPlatformAnalyzerServices } @@ -98,11 +95,11 @@ class CommonResolverForModuleFactory( moduleInfo ) - val metadataPartProvider = (platformParameters as CommonAnalysisParameters).metadataPartProviderFactory(moduleContent) + val metadataPartProvider = platformParameters.metadataPartProviderFactory(moduleContent) val trace = CodeAnalyzerInitializer.getInstance(project).createTrace() val container = createContainerToResolveCommonCode( moduleContext, trace, declarationProviderFactory, moduleContentScope, targetEnvironment, metadataPartProvider, - languageVersionSettings, CommonPlatforms.defaultCommonPlatform, CommonPlatformAnalyzerServices, shouldCheckExpectActual + languageVersionSettings, targetPlatform, CommonPlatformAnalyzerServices, shouldCheckExpectActual ) val packageFragmentProviders = @@ -119,6 +116,7 @@ class CommonResolverForModuleFactory( companion object { fun analyzeFiles( files: Collection, moduleName: Name, dependOnBuiltIns: Boolean, languageVersionSettings: LanguageVersionSettings, + targetPlatform: TargetPlatform, capabilities: Map, Any?> = emptyMap(), dependenciesContainer: CommonDependenciesContainer? = null, metadataPartProviderFactory: (ModuleContent) -> MetadataPartProvider @@ -128,6 +126,7 @@ class CommonResolverForModuleFactory( capabilities, dependenciesContainer?.moduleInfos?.toList().orEmpty(), dependenciesContainer?.refinesModuleInfos.orEmpty(), + targetPlatform, dependenciesContainer?.friendModuleInfos.orEmpty(), dependOnBuiltIns ) @@ -142,7 +141,7 @@ class CommonResolverForModuleFactory( val resolverForModuleFactory = CommonResolverForModuleFactory( CommonAnalysisParameters(metadataPartProviderFactory), CompilerEnvironment, - CommonPlatforms.defaultCommonPlatform, + targetPlatform, shouldCheckExpectActual = false, dependenciesContainer ) diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/CommonAnalysis.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/CommonAnalysis.kt index f6a04f5763a..f8f7aebebb2 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/CommonAnalysis.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/CommonAnalysis.kt @@ -14,6 +14,7 @@ import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.config.CommonConfigurationKeys import org.jetbrains.kotlin.config.languageVersionSettings import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.platform.CommonPlatforms import java.io.File internal val KotlinCoreEnvironment.destDir: File? @@ -49,6 +50,7 @@ private fun runCommonAnalysis( analyzer.analyzeAndReport(files) { CommonResolverForModuleFactory.analyzeFiles( files, moduleName, dependOnBuiltins, configuration.languageVersionSettings, + CommonPlatforms.defaultCommonPlatform, dependenciesContainer = dependencyContainer ) { content -> environment.createPackagePartProvider(content.moduleContentScope) @@ -56,4 +58,4 @@ private fun runCommonAnalysis( } return analyzer -} \ No newline at end of file +} diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsTest.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsTest.kt index 5a1da2b51ae..997e0a02573 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsTest.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsTest.kt @@ -47,6 +47,7 @@ import org.jetbrains.kotlin.load.java.lazy.SingleModuleClassResolver import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.SpecialNames +import org.jetbrains.kotlin.platform.CommonPlatforms import org.jetbrains.kotlin.platform.isCommon import org.jetbrains.kotlin.platform.jvm.JvmPlatforms import org.jetbrains.kotlin.psi.KtFile @@ -447,6 +448,7 @@ abstract class AbstractDiagnosticsTest : BaseDiagnosticsTest() { if (platform.isCommon()) { return CommonResolverForModuleFactory.analyzeFiles( files, moduleDescriptor.name, true, languageVersionSettings, + CommonPlatforms.defaultCommonPlatform, mapOf( MODULE_FILES to files ) diff --git a/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/AbstractCommonizationFromSourcesTest.kt b/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/AbstractCommonizationFromSourcesTest.kt index 1cacff4cca5..0bbf9c5dc85 100644 --- a/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/AbstractCommonizationFromSourcesTest.kt +++ b/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/AbstractCommonizationFromSourcesTest.kt @@ -17,6 +17,7 @@ import org.jetbrains.kotlin.descriptors.commonizer.utils.assertIsDirectory import org.jetbrains.kotlin.descriptors.commonizer.utils.assertModulesAreEqual import org.jetbrains.kotlin.descriptors.commonizer.utils.assertValidModule import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.platform.CommonPlatforms import org.jetbrains.kotlin.psi.KtPsiFactory import org.jetbrains.kotlin.test.KotlinTestUtils.* import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase @@ -123,7 +124,8 @@ abstract class AbstractCommonizationFromSourcesTest : KtUsefulTestCase() { files = psiFiles, moduleName = environment.moduleName, dependOnBuiltIns = true, - languageVersionSettings = environment.configuration.languageVersionSettings + languageVersionSettings = environment.configuration.languageVersionSettings, + targetPlatform = CommonPlatforms.defaultCommonPlatform ) { content -> environment.createPackagePartProvider(content.moduleContentScope) }.moduleDescriptor