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'.
This commit is contained in:
committed by
Alexander Udalov
parent
8dd04789ad
commit
9e014e462b
+7
-8
@@ -35,7 +35,6 @@ import org.jetbrains.kotlin.frontend.di.configureModule
|
|||||||
import org.jetbrains.kotlin.frontend.di.configureStandardResolveComponents
|
import org.jetbrains.kotlin.frontend.di.configureStandardResolveComponents
|
||||||
import org.jetbrains.kotlin.load.kotlin.MetadataFinderFactory
|
import org.jetbrains.kotlin.load.kotlin.MetadataFinderFactory
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.platform.CommonPlatforms
|
|
||||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.resolve.*
|
import org.jetbrains.kotlin.resolve.*
|
||||||
@@ -66,19 +65,17 @@ class CommonResolverForModuleFactory(
|
|||||||
override val capabilities: Map<ModuleDescriptor.Capability<*>, Any?>,
|
override val capabilities: Map<ModuleDescriptor.Capability<*>, Any?>,
|
||||||
private val dependencies: Iterable<ModuleInfo>,
|
private val dependencies: Iterable<ModuleInfo>,
|
||||||
override val expectedBy: List<ModuleInfo>,
|
override val expectedBy: List<ModuleInfo>,
|
||||||
|
override val platform: TargetPlatform,
|
||||||
private val modulesWhoseInternalsAreVisible: Collection<ModuleInfo>,
|
private val modulesWhoseInternalsAreVisible: Collection<ModuleInfo>,
|
||||||
private val dependOnOldBuiltIns: Boolean
|
private val dependOnOldBuiltIns: Boolean
|
||||||
) : ModuleInfo {
|
) : ModuleInfo {
|
||||||
override fun dependencies() = listOf(this, *dependencies.toList().toTypedArray() )
|
override fun dependencies() = listOf(this, *dependencies.toList().toTypedArray())
|
||||||
|
|
||||||
override fun modulesWhoseInternalsAreVisible(): Collection<ModuleInfo> = modulesWhoseInternalsAreVisible
|
override fun modulesWhoseInternalsAreVisible(): Collection<ModuleInfo> = modulesWhoseInternalsAreVisible
|
||||||
|
|
||||||
override fun dependencyOnBuiltIns(): ModuleInfo.DependencyOnBuiltIns =
|
override fun dependencyOnBuiltIns(): ModuleInfo.DependencyOnBuiltIns =
|
||||||
if (dependOnOldBuiltIns) ModuleInfo.DependencyOnBuiltIns.LAST else ModuleInfo.DependencyOnBuiltIns.NONE
|
if (dependOnOldBuiltIns) ModuleInfo.DependencyOnBuiltIns.LAST else ModuleInfo.DependencyOnBuiltIns.NONE
|
||||||
|
|
||||||
override val platform: TargetPlatform
|
|
||||||
get() = CommonPlatforms.defaultCommonPlatform
|
|
||||||
|
|
||||||
override val analyzerServices: PlatformDependentAnalyzerServices
|
override val analyzerServices: PlatformDependentAnalyzerServices
|
||||||
get() = CommonPlatformAnalyzerServices
|
get() = CommonPlatformAnalyzerServices
|
||||||
}
|
}
|
||||||
@@ -98,11 +95,11 @@ class CommonResolverForModuleFactory(
|
|||||||
moduleInfo
|
moduleInfo
|
||||||
)
|
)
|
||||||
|
|
||||||
val metadataPartProvider = (platformParameters as CommonAnalysisParameters).metadataPartProviderFactory(moduleContent)
|
val metadataPartProvider = platformParameters.metadataPartProviderFactory(moduleContent)
|
||||||
val trace = CodeAnalyzerInitializer.getInstance(project).createTrace()
|
val trace = CodeAnalyzerInitializer.getInstance(project).createTrace()
|
||||||
val container = createContainerToResolveCommonCode(
|
val container = createContainerToResolveCommonCode(
|
||||||
moduleContext, trace, declarationProviderFactory, moduleContentScope, targetEnvironment, metadataPartProvider,
|
moduleContext, trace, declarationProviderFactory, moduleContentScope, targetEnvironment, metadataPartProvider,
|
||||||
languageVersionSettings, CommonPlatforms.defaultCommonPlatform, CommonPlatformAnalyzerServices, shouldCheckExpectActual
|
languageVersionSettings, targetPlatform, CommonPlatformAnalyzerServices, shouldCheckExpectActual
|
||||||
)
|
)
|
||||||
|
|
||||||
val packageFragmentProviders =
|
val packageFragmentProviders =
|
||||||
@@ -119,6 +116,7 @@ class CommonResolverForModuleFactory(
|
|||||||
companion object {
|
companion object {
|
||||||
fun analyzeFiles(
|
fun analyzeFiles(
|
||||||
files: Collection<KtFile>, moduleName: Name, dependOnBuiltIns: Boolean, languageVersionSettings: LanguageVersionSettings,
|
files: Collection<KtFile>, moduleName: Name, dependOnBuiltIns: Boolean, languageVersionSettings: LanguageVersionSettings,
|
||||||
|
targetPlatform: TargetPlatform,
|
||||||
capabilities: Map<ModuleDescriptor.Capability<*>, Any?> = emptyMap(),
|
capabilities: Map<ModuleDescriptor.Capability<*>, Any?> = emptyMap(),
|
||||||
dependenciesContainer: CommonDependenciesContainer? = null,
|
dependenciesContainer: CommonDependenciesContainer? = null,
|
||||||
metadataPartProviderFactory: (ModuleContent<ModuleInfo>) -> MetadataPartProvider
|
metadataPartProviderFactory: (ModuleContent<ModuleInfo>) -> MetadataPartProvider
|
||||||
@@ -128,6 +126,7 @@ class CommonResolverForModuleFactory(
|
|||||||
capabilities,
|
capabilities,
|
||||||
dependenciesContainer?.moduleInfos?.toList().orEmpty(),
|
dependenciesContainer?.moduleInfos?.toList().orEmpty(),
|
||||||
dependenciesContainer?.refinesModuleInfos.orEmpty(),
|
dependenciesContainer?.refinesModuleInfos.orEmpty(),
|
||||||
|
targetPlatform,
|
||||||
dependenciesContainer?.friendModuleInfos.orEmpty(),
|
dependenciesContainer?.friendModuleInfos.orEmpty(),
|
||||||
dependOnBuiltIns
|
dependOnBuiltIns
|
||||||
)
|
)
|
||||||
@@ -142,7 +141,7 @@ class CommonResolverForModuleFactory(
|
|||||||
val resolverForModuleFactory = CommonResolverForModuleFactory(
|
val resolverForModuleFactory = CommonResolverForModuleFactory(
|
||||||
CommonAnalysisParameters(metadataPartProviderFactory),
|
CommonAnalysisParameters(metadataPartProviderFactory),
|
||||||
CompilerEnvironment,
|
CompilerEnvironment,
|
||||||
CommonPlatforms.defaultCommonPlatform,
|
targetPlatform,
|
||||||
shouldCheckExpectActual = false,
|
shouldCheckExpectActual = false,
|
||||||
dependenciesContainer
|
dependenciesContainer
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
|||||||
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
||||||
import org.jetbrains.kotlin.config.languageVersionSettings
|
import org.jetbrains.kotlin.config.languageVersionSettings
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
import org.jetbrains.kotlin.platform.CommonPlatforms
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
internal val KotlinCoreEnvironment.destDir: File?
|
internal val KotlinCoreEnvironment.destDir: File?
|
||||||
@@ -49,6 +50,7 @@ private fun runCommonAnalysis(
|
|||||||
analyzer.analyzeAndReport(files) {
|
analyzer.analyzeAndReport(files) {
|
||||||
CommonResolverForModuleFactory.analyzeFiles(
|
CommonResolverForModuleFactory.analyzeFiles(
|
||||||
files, moduleName, dependOnBuiltins, configuration.languageVersionSettings,
|
files, moduleName, dependOnBuiltins, configuration.languageVersionSettings,
|
||||||
|
CommonPlatforms.defaultCommonPlatform,
|
||||||
dependenciesContainer = dependencyContainer
|
dependenciesContainer = dependencyContainer
|
||||||
) { content ->
|
) { content ->
|
||||||
environment.createPackagePartProvider(content.moduleContentScope)
|
environment.createPackagePartProvider(content.moduleContentScope)
|
||||||
@@ -56,4 +58,4 @@ private fun runCommonAnalysis(
|
|||||||
}
|
}
|
||||||
|
|
||||||
return analyzer
|
return analyzer
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ import org.jetbrains.kotlin.load.java.lazy.SingleModuleClassResolver
|
|||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.name.SpecialNames
|
import org.jetbrains.kotlin.name.SpecialNames
|
||||||
|
import org.jetbrains.kotlin.platform.CommonPlatforms
|
||||||
import org.jetbrains.kotlin.platform.isCommon
|
import org.jetbrains.kotlin.platform.isCommon
|
||||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
@@ -447,6 +448,7 @@ abstract class AbstractDiagnosticsTest : BaseDiagnosticsTest() {
|
|||||||
if (platform.isCommon()) {
|
if (platform.isCommon()) {
|
||||||
return CommonResolverForModuleFactory.analyzeFiles(
|
return CommonResolverForModuleFactory.analyzeFiles(
|
||||||
files, moduleDescriptor.name, true, languageVersionSettings,
|
files, moduleDescriptor.name, true, languageVersionSettings,
|
||||||
|
CommonPlatforms.defaultCommonPlatform,
|
||||||
mapOf(
|
mapOf(
|
||||||
MODULE_FILES to files
|
MODULE_FILES to files
|
||||||
)
|
)
|
||||||
|
|||||||
+3
-1
@@ -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.assertModulesAreEqual
|
||||||
import org.jetbrains.kotlin.descriptors.commonizer.utils.assertValidModule
|
import org.jetbrains.kotlin.descriptors.commonizer.utils.assertValidModule
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
import org.jetbrains.kotlin.platform.CommonPlatforms
|
||||||
import org.jetbrains.kotlin.psi.KtPsiFactory
|
import org.jetbrains.kotlin.psi.KtPsiFactory
|
||||||
import org.jetbrains.kotlin.test.KotlinTestUtils.*
|
import org.jetbrains.kotlin.test.KotlinTestUtils.*
|
||||||
import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase
|
import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase
|
||||||
@@ -123,7 +124,8 @@ abstract class AbstractCommonizationFromSourcesTest : KtUsefulTestCase() {
|
|||||||
files = psiFiles,
|
files = psiFiles,
|
||||||
moduleName = environment.moduleName,
|
moduleName = environment.moduleName,
|
||||||
dependOnBuiltIns = true,
|
dependOnBuiltIns = true,
|
||||||
languageVersionSettings = environment.configuration.languageVersionSettings
|
languageVersionSettings = environment.configuration.languageVersionSettings,
|
||||||
|
targetPlatform = CommonPlatforms.defaultCommonPlatform
|
||||||
) { content ->
|
) { content ->
|
||||||
environment.createPackagePartProvider(content.moduleContentScope)
|
environment.createPackagePartProvider(content.moduleContentScope)
|
||||||
}.moduleDescriptor
|
}.moduleDescriptor
|
||||||
|
|||||||
Reference in New Issue
Block a user