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.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<ModuleDescriptor.Capability<*>, Any?>,
|
||||
private val dependencies: Iterable<ModuleInfo>,
|
||||
override val expectedBy: List<ModuleInfo>,
|
||||
override val platform: TargetPlatform,
|
||||
private val modulesWhoseInternalsAreVisible: Collection<ModuleInfo>,
|
||||
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<ModuleInfo> = 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<KtFile>, moduleName: Name, dependOnBuiltIns: Boolean, languageVersionSettings: LanguageVersionSettings,
|
||||
targetPlatform: TargetPlatform,
|
||||
capabilities: Map<ModuleDescriptor.Capability<*>, Any?> = emptyMap(),
|
||||
dependenciesContainer: CommonDependenciesContainer? = null,
|
||||
metadataPartProviderFactory: (ModuleContent<ModuleInfo>) -> 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
|
||||
)
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||
+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.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
|
||||
|
||||
Reference in New Issue
Block a user