From 1606b3bf23d57a35392f09d89f5b66e29903ec43 Mon Sep 17 00:00:00 2001 From: Dmitry Savvinov Date: Tue, 26 Mar 2019 18:00:30 +0300 Subject: [PATCH] [Platform API] Make 'ModuleInfo.platform' non-nullable --- .../common/CommonResolverForModuleFactory.kt | 4 +++ .../fir/AbstractFirDiagnosticsSmokeTest.kt | 4 +-- .../jetbrains/kotlin/analyzer/ModuleInfo.kt | 4 +-- .../kotlin/analyzer/AnalyzerFacade.kt | 2 +- .../resolve/lazy/lazyResolveTestUtils.kt | 2 +- .../MultiModuleJavaAnalysisCustomTest.kt | 2 +- .../idea/caches/project/IdeaModuleInfos.kt | 27 ++++++++++++------- .../idea/caches/project/ScriptModuleInfos.kt | 27 ++++++++++--------- .../kotlin/frontend/js/di/injection.kt | 3 ++- 9 files changed, 46 insertions(+), 29 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 41a9e01db2f..726411137f0 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 @@ -38,6 +38,7 @@ import org.jetbrains.kotlin.incremental.components.ExpectActualTracker import org.jetbrains.kotlin.incremental.components.LookupTracker 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.* @@ -67,6 +68,9 @@ object CommonResolverForModuleFactory : ResolverForModuleFactory() { override fun dependencyOnBuiltIns(): ModuleInfo.DependencyOnBuiltIns = if (dependOnOldBuiltIns) ModuleInfo.DependencyOnBuiltIns.LAST else ModuleInfo.DependencyOnBuiltIns.NONE + override val platform: TargetPlatform + get() = CommonPlatforms.defaultCommonPlatform + override val compilerServices: PlatformDependentCompilerServices get() = CommonPlatformCompilerServices } diff --git a/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/AbstractFirDiagnosticsSmokeTest.kt b/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/AbstractFirDiagnosticsSmokeTest.kt index d6d0bfd8433..6f3c2cbb75c 100644 --- a/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/AbstractFirDiagnosticsSmokeTest.kt +++ b/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/AbstractFirDiagnosticsSmokeTest.kt @@ -147,7 +147,7 @@ abstract class AbstractFirDiagnosticsSmokeTest : BaseDiagnosticsTest() { } class BuiltInModuleInfo(override val name: Name) : ModuleInfo { - override val platform: TargetPlatform? + override val platform: TargetPlatform get() = JvmPlatforms.defaultJvmPlatform override val compilerServices: PlatformDependentCompilerServices @@ -159,7 +159,7 @@ abstract class AbstractFirDiagnosticsSmokeTest : BaseDiagnosticsTest() { } protected class TestModuleInfo(override val name: Name) : ModuleInfo { - override val platform: TargetPlatform? + override val platform: TargetPlatform get() = JvmPlatforms.defaultJvmPlatform override val compilerServices: PlatformDependentCompilerServices diff --git a/compiler/frontend.common/src/org/jetbrains/kotlin/analyzer/ModuleInfo.kt b/compiler/frontend.common/src/org/jetbrains/kotlin/analyzer/ModuleInfo.kt index 6c549740e40..47572263a5c 100644 --- a/compiler/frontend.common/src/org/jetbrains/kotlin/analyzer/ModuleInfo.kt +++ b/compiler/frontend.common/src/org/jetbrains/kotlin/analyzer/ModuleInfo.kt @@ -16,8 +16,8 @@ interface ModuleInfo { val displayedName: String get() = name.asString() fun dependencies(): List val expectedBy: List get() = emptyList() - val platform: TargetPlatform? get() = null - val compilerServices: PlatformDependentCompilerServices? get() = null + val platform: TargetPlatform + val compilerServices: PlatformDependentCompilerServices fun modulesWhoseInternalsAreVisible(): Collection = listOf() val capabilities: Map, Any?> get() = mapOf(Capability to this) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/analyzer/AnalyzerFacade.kt b/compiler/frontend/src/org/jetbrains/kotlin/analyzer/AnalyzerFacade.kt index 2270c224378..3f134d98b15 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/analyzer/AnalyzerFacade.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/analyzer/AnalyzerFacade.kt @@ -193,7 +193,7 @@ class ResolverForProjectImpl( descriptor as ModuleDescriptorImpl, projectContext.withModule(descriptor), moduleContent, - platformParameters(module.platform ?: TODO("Missing platform!")), + platformParameters(module.platform), targetEnvironment, this@ResolverForProjectImpl, languageVersionSettings diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/resolve/lazy/lazyResolveTestUtils.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/resolve/lazy/lazyResolveTestUtils.kt index 82d239d4660..f8e84f35ffb 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/resolve/lazy/lazyResolveTestUtils.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/resolve/lazy/lazyResolveTestUtils.kt @@ -69,6 +69,6 @@ private class TestModule(val dependsOnBuiltIns: Boolean) : ModuleInfo { override val platform: TargetPlatform get() = JvmPlatforms.defaultJvmPlatform - override val compilerServices: PlatformDependentCompilerServices? + override val compilerServices: PlatformDependentCompilerServices get() = JvmPlatformCompilerServices } diff --git a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/MultiModuleJavaAnalysisCustomTest.kt b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/MultiModuleJavaAnalysisCustomTest.kt index f97551e6f58..cde1b1904ab 100644 --- a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/MultiModuleJavaAnalysisCustomTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/MultiModuleJavaAnalysisCustomTest.kt @@ -64,7 +64,7 @@ class MultiModuleJavaAnalysisCustomTest : KtUsefulTestCase() { override val platform: TargetPlatform get() = JvmPlatforms.defaultJvmPlatform - override val compilerServices: PlatformDependentCompilerServices? + override val compilerServices: PlatformDependentCompilerServices get() = JvmPlatformCompilerServices } diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/IdeaModuleInfos.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/IdeaModuleInfos.kt index a2286238b5e..165404ef915 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/IdeaModuleInfos.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/IdeaModuleInfos.kt @@ -43,9 +43,12 @@ import org.jetbrains.kotlin.idea.stubindex.KotlinSourceFilterScope import org.jetbrains.kotlin.idea.util.isInSourceContentWithoutInjected import org.jetbrains.kotlin.idea.util.rootManager import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.platform.DefaultIdeTargetPlatformKindProvider import org.jetbrains.kotlin.platform.idePlatformKind import org.jetbrains.kotlin.resolve.PlatformDependentCompilerServices +import org.jetbrains.kotlin.platform.jvm.JvmPlatforms import org.jetbrains.kotlin.platform.TargetPlatform +import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformCompilerServices import org.jetbrains.kotlin.utils.addIfNotNull import java.util.* @@ -318,10 +321,10 @@ data class LibrarySourceInfo(val project: Project, val library: Library, overrid return createLibraryInfo(project, library) } - override val platform: TargetPlatform? + override val platform: TargetPlatform get() = binariesModuleInfo.platform - override val compilerServices: PlatformDependentCompilerServices? + override val compilerServices: PlatformDependentCompilerServices get() = binariesModuleInfo.compilerServices override fun toString() = "LibrarySourceInfo(libraryName=${library.name})" @@ -337,6 +340,12 @@ data class SdkInfo(val project: Project, val sdk: Sdk) : IdeaModuleInfo { override fun contentScope(): GlobalSearchScope = SdkScope(project, sdk) override fun dependencies(): List = listOf(this) + + override val platform: TargetPlatform + get() = JvmPlatforms.defaultJvmPlatform // TODO(dsavvinov): provide proper target version + + override val compilerServices: PlatformDependentCompilerServices + get() = JvmPlatformCompilerServices } object NotUnderContentRootModuleInfo : IdeaModuleInfo { @@ -350,11 +359,11 @@ object NotUnderContentRootModuleInfo : IdeaModuleInfo { //TODO: (module refactoring) dependency on runtime can be of use here override fun dependencies(): List = listOf(this) - override val platform: TargetPlatform? - get() = null + override val platform: TargetPlatform + get() = DefaultIdeTargetPlatformKindProvider.defaultPlatform - override val compilerServices: PlatformDependentCompilerServices? - get() = null + override val compilerServices: PlatformDependentCompilerServices + get() = platform.findCompilerServices } private class LibraryWithoutSourceScope(project: Project, private val library: Library) : @@ -438,14 +447,14 @@ data class PlatformModuleInfo( override val containedModules: List = listOf(platformModule) + commonModules - override val platform: TargetPlatform? + override val platform: TargetPlatform get() = platformModule.platform override val moduleOrigin: ModuleOrigin get() = platformModule.moduleOrigin - override val compilerServices: PlatformDependentCompilerServices? - get() = platform?.findCompilerServices + override val compilerServices: PlatformDependentCompilerServices + get() = platform.findCompilerServices override fun dependencies() = platformModule.dependencies() diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/ScriptModuleInfos.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/ScriptModuleInfos.kt index f139aefcb41..b0932919269 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/ScriptModuleInfos.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/ScriptModuleInfos.kt @@ -16,6 +16,9 @@ import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition import org.jetbrains.kotlin.resolve.PlatformDependentCompilerServices import org.jetbrains.kotlin.platform.TargetPlatform +import org.jetbrains.kotlin.platform.jvm.JvmPlatforms +import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformCompilerServices + data class ScriptModuleInfo( val project: Project, @@ -48,11 +51,11 @@ data class ScriptModuleInfo( } } - override val platform: TargetPlatform? - get() = null + override val platform: TargetPlatform + get() = JvmPlatforms.defaultJvmPlatform // TODO(dsavvinov): choose proper target version - override val compilerServices: PlatformDependentCompilerServices? - get() = null + override val compilerServices: PlatformDependentCompilerServices + get() = JvmPlatformCompilerServices } sealed class ScriptDependenciesInfo(val project: Project) : IdeaModuleInfo, BinaryModuleInfo { @@ -74,11 +77,11 @@ sealed class ScriptDependenciesInfo(val project: Project) : IdeaModuleInfo, Bina override val sourcesModuleInfo: SourceForBinaryModuleInfo? get() = ScriptDependenciesSourceInfo.ForProject(project) - override val platform: TargetPlatform? - get() = null + override val platform: TargetPlatform + get() = JvmPlatforms.defaultJvmPlatform // TODO(dsavvinov): choose proper TargetVersion - override val compilerServices: PlatformDependentCompilerServices? - get() = null + override val compilerServices: PlatformDependentCompilerServices + get() = JvmPlatformCompilerServices class ForFile( project: Project, @@ -129,11 +132,11 @@ sealed class ScriptDependenciesSourceInfo(val project: Project) : IdeaModuleInfo override fun equals(other: Any?): Boolean = other is ScriptDependenciesSourceInfo && this.project == other.project - override val platform: TargetPlatform? - get() = null + override val platform: TargetPlatform + get() = JvmPlatforms.defaultJvmPlatform // TODO(dsavvinov): choose proper TargetVersion - override val compilerServices: PlatformDependentCompilerServices? - get() = null + override val compilerServices: PlatformDependentCompilerServices + get() = JvmPlatformCompilerServices class ForProject(project: Project) : ScriptDependenciesSourceInfo(project) } \ No newline at end of file diff --git a/js/js.frontend/src/org/jetbrains/kotlin/frontend/js/di/injection.kt b/js/js.frontend/src/org/jetbrains/kotlin/frontend/js/di/injection.kt index d44ca720cc0..22015ddf8b2 100644 --- a/js/js.frontend/src/org/jetbrains/kotlin/frontend/js/di/injection.kt +++ b/js/js.frontend/src/org/jetbrains/kotlin/frontend/js/di/injection.kt @@ -28,6 +28,7 @@ import org.jetbrains.kotlin.frontend.di.configureModule import org.jetbrains.kotlin.incremental.components.ExpectActualTracker import org.jetbrains.kotlin.incremental.components.LookupTracker import org.jetbrains.kotlin.js.resolve.JsPlatformCompilerServices +import org.jetbrains.kotlin.platform.js.JsPlatforms import org.jetbrains.kotlin.resolve.* import org.jetbrains.kotlin.resolve.lazy.KotlinCodeAnalyzer import org.jetbrains.kotlin.resolve.lazy.ResolveSession @@ -46,7 +47,7 @@ fun createTopDownAnalyzerForJs( val storageComponentContainer = createContainer("TopDownAnalyzerForJs", JsPlatformCompilerServices) { configureModule( moduleContext, - DefaultBuiltInPlatforms.jsPlatform, + JsPlatforms.defaultJsPlatform, JsPlatformCompilerServices, bindingTrace )