[Platform API] Make 'ModuleInfo.platform' non-nullable

This commit is contained in:
Dmitry Savvinov
2019-03-26 18:00:30 +03:00
parent 2d528c6396
commit 1606b3bf23
9 changed files with 46 additions and 29 deletions
@@ -38,6 +38,7 @@ import org.jetbrains.kotlin.incremental.components.ExpectActualTracker
import org.jetbrains.kotlin.incremental.components.LookupTracker import org.jetbrains.kotlin.incremental.components.LookupTracker
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.*
@@ -67,6 +68,9 @@ object CommonResolverForModuleFactory : ResolverForModuleFactory() {
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 compilerServices: PlatformDependentCompilerServices override val compilerServices: PlatformDependentCompilerServices
get() = CommonPlatformCompilerServices get() = CommonPlatformCompilerServices
} }
@@ -147,7 +147,7 @@ abstract class AbstractFirDiagnosticsSmokeTest : BaseDiagnosticsTest() {
} }
class BuiltInModuleInfo(override val name: Name) : ModuleInfo { class BuiltInModuleInfo(override val name: Name) : ModuleInfo {
override val platform: TargetPlatform? override val platform: TargetPlatform
get() = JvmPlatforms.defaultJvmPlatform get() = JvmPlatforms.defaultJvmPlatform
override val compilerServices: PlatformDependentCompilerServices override val compilerServices: PlatformDependentCompilerServices
@@ -159,7 +159,7 @@ abstract class AbstractFirDiagnosticsSmokeTest : BaseDiagnosticsTest() {
} }
protected class TestModuleInfo(override val name: Name) : ModuleInfo { protected class TestModuleInfo(override val name: Name) : ModuleInfo {
override val platform: TargetPlatform? override val platform: TargetPlatform
get() = JvmPlatforms.defaultJvmPlatform get() = JvmPlatforms.defaultJvmPlatform
override val compilerServices: PlatformDependentCompilerServices override val compilerServices: PlatformDependentCompilerServices
@@ -16,8 +16,8 @@ interface ModuleInfo {
val displayedName: String get() = name.asString() val displayedName: String get() = name.asString()
fun dependencies(): List<ModuleInfo> fun dependencies(): List<ModuleInfo>
val expectedBy: List<ModuleInfo> get() = emptyList() val expectedBy: List<ModuleInfo> get() = emptyList()
val platform: TargetPlatform? get() = null val platform: TargetPlatform
val compilerServices: PlatformDependentCompilerServices? get() = null val compilerServices: PlatformDependentCompilerServices
fun modulesWhoseInternalsAreVisible(): Collection<ModuleInfo> = listOf() fun modulesWhoseInternalsAreVisible(): Collection<ModuleInfo> = listOf()
val capabilities: Map<ModuleDescriptor.Capability<*>, Any?> val capabilities: Map<ModuleDescriptor.Capability<*>, Any?>
get() = mapOf(Capability to this) get() = mapOf(Capability to this)
@@ -193,7 +193,7 @@ class ResolverForProjectImpl<M : ModuleInfo>(
descriptor as ModuleDescriptorImpl, descriptor as ModuleDescriptorImpl,
projectContext.withModule(descriptor), projectContext.withModule(descriptor),
moduleContent, moduleContent,
platformParameters(module.platform ?: TODO("Missing platform!")), platformParameters(module.platform),
targetEnvironment, targetEnvironment,
this@ResolverForProjectImpl, this@ResolverForProjectImpl,
languageVersionSettings languageVersionSettings
@@ -69,6 +69,6 @@ private class TestModule(val dependsOnBuiltIns: Boolean) : ModuleInfo {
override val platform: TargetPlatform override val platform: TargetPlatform
get() = JvmPlatforms.defaultJvmPlatform get() = JvmPlatforms.defaultJvmPlatform
override val compilerServices: PlatformDependentCompilerServices? override val compilerServices: PlatformDependentCompilerServices
get() = JvmPlatformCompilerServices get() = JvmPlatformCompilerServices
} }
@@ -64,7 +64,7 @@ class MultiModuleJavaAnalysisCustomTest : KtUsefulTestCase() {
override val platform: TargetPlatform override val platform: TargetPlatform
get() = JvmPlatforms.defaultJvmPlatform get() = JvmPlatforms.defaultJvmPlatform
override val compilerServices: PlatformDependentCompilerServices? override val compilerServices: PlatformDependentCompilerServices
get() = JvmPlatformCompilerServices get() = JvmPlatformCompilerServices
} }
@@ -43,9 +43,12 @@ import org.jetbrains.kotlin.idea.stubindex.KotlinSourceFilterScope
import org.jetbrains.kotlin.idea.util.isInSourceContentWithoutInjected import org.jetbrains.kotlin.idea.util.isInSourceContentWithoutInjected
import org.jetbrains.kotlin.idea.util.rootManager import org.jetbrains.kotlin.idea.util.rootManager
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.platform.DefaultIdeTargetPlatformKindProvider
import org.jetbrains.kotlin.platform.idePlatformKind import org.jetbrains.kotlin.platform.idePlatformKind
import org.jetbrains.kotlin.resolve.PlatformDependentCompilerServices import org.jetbrains.kotlin.resolve.PlatformDependentCompilerServices
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
import org.jetbrains.kotlin.platform.TargetPlatform import org.jetbrains.kotlin.platform.TargetPlatform
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformCompilerServices
import org.jetbrains.kotlin.utils.addIfNotNull import org.jetbrains.kotlin.utils.addIfNotNull
import java.util.* import java.util.*
@@ -318,10 +321,10 @@ data class LibrarySourceInfo(val project: Project, val library: Library, overrid
return createLibraryInfo(project, library) return createLibraryInfo(project, library)
} }
override val platform: TargetPlatform? override val platform: TargetPlatform
get() = binariesModuleInfo.platform get() = binariesModuleInfo.platform
override val compilerServices: PlatformDependentCompilerServices? override val compilerServices: PlatformDependentCompilerServices
get() = binariesModuleInfo.compilerServices get() = binariesModuleInfo.compilerServices
override fun toString() = "LibrarySourceInfo(libraryName=${library.name})" 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 contentScope(): GlobalSearchScope = SdkScope(project, sdk)
override fun dependencies(): List<IdeaModuleInfo> = listOf(this) override fun dependencies(): List<IdeaModuleInfo> = listOf(this)
override val platform: TargetPlatform
get() = JvmPlatforms.defaultJvmPlatform // TODO(dsavvinov): provide proper target version
override val compilerServices: PlatformDependentCompilerServices
get() = JvmPlatformCompilerServices
} }
object NotUnderContentRootModuleInfo : IdeaModuleInfo { object NotUnderContentRootModuleInfo : IdeaModuleInfo {
@@ -350,11 +359,11 @@ object NotUnderContentRootModuleInfo : IdeaModuleInfo {
//TODO: (module refactoring) dependency on runtime can be of use here //TODO: (module refactoring) dependency on runtime can be of use here
override fun dependencies(): List<IdeaModuleInfo> = listOf(this) override fun dependencies(): List<IdeaModuleInfo> = listOf(this)
override val platform: TargetPlatform? override val platform: TargetPlatform
get() = null get() = DefaultIdeTargetPlatformKindProvider.defaultPlatform
override val compilerServices: PlatformDependentCompilerServices? override val compilerServices: PlatformDependentCompilerServices
get() = null get() = platform.findCompilerServices
} }
private class LibraryWithoutSourceScope(project: Project, private val library: Library) : private class LibraryWithoutSourceScope(project: Project, private val library: Library) :
@@ -438,14 +447,14 @@ data class PlatformModuleInfo(
override val containedModules: List<ModuleSourceInfo> = listOf(platformModule) + commonModules override val containedModules: List<ModuleSourceInfo> = listOf(platformModule) + commonModules
override val platform: TargetPlatform? override val platform: TargetPlatform
get() = platformModule.platform get() = platformModule.platform
override val moduleOrigin: ModuleOrigin override val moduleOrigin: ModuleOrigin
get() = platformModule.moduleOrigin get() = platformModule.moduleOrigin
override val compilerServices: PlatformDependentCompilerServices? override val compilerServices: PlatformDependentCompilerServices
get() = platform?.findCompilerServices get() = platform.findCompilerServices
override fun dependencies() = platformModule.dependencies() override fun dependencies() = platformModule.dependencies()
@@ -16,6 +16,9 @@ import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition
import org.jetbrains.kotlin.resolve.PlatformDependentCompilerServices import org.jetbrains.kotlin.resolve.PlatformDependentCompilerServices
import org.jetbrains.kotlin.platform.TargetPlatform import org.jetbrains.kotlin.platform.TargetPlatform
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformCompilerServices
data class ScriptModuleInfo( data class ScriptModuleInfo(
val project: Project, val project: Project,
@@ -48,11 +51,11 @@ data class ScriptModuleInfo(
} }
} }
override val platform: TargetPlatform? override val platform: TargetPlatform
get() = null get() = JvmPlatforms.defaultJvmPlatform // TODO(dsavvinov): choose proper target version
override val compilerServices: PlatformDependentCompilerServices? override val compilerServices: PlatformDependentCompilerServices
get() = null get() = JvmPlatformCompilerServices
} }
sealed class ScriptDependenciesInfo(val project: Project) : IdeaModuleInfo, BinaryModuleInfo { sealed class ScriptDependenciesInfo(val project: Project) : IdeaModuleInfo, BinaryModuleInfo {
@@ -74,11 +77,11 @@ sealed class ScriptDependenciesInfo(val project: Project) : IdeaModuleInfo, Bina
override val sourcesModuleInfo: SourceForBinaryModuleInfo? override val sourcesModuleInfo: SourceForBinaryModuleInfo?
get() = ScriptDependenciesSourceInfo.ForProject(project) get() = ScriptDependenciesSourceInfo.ForProject(project)
override val platform: TargetPlatform? override val platform: TargetPlatform
get() = null get() = JvmPlatforms.defaultJvmPlatform // TODO(dsavvinov): choose proper TargetVersion
override val compilerServices: PlatformDependentCompilerServices? override val compilerServices: PlatformDependentCompilerServices
get() = null get() = JvmPlatformCompilerServices
class ForFile( class ForFile(
project: Project, 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 fun equals(other: Any?): Boolean = other is ScriptDependenciesSourceInfo && this.project == other.project
override val platform: TargetPlatform? override val platform: TargetPlatform
get() = null get() = JvmPlatforms.defaultJvmPlatform // TODO(dsavvinov): choose proper TargetVersion
override val compilerServices: PlatformDependentCompilerServices? override val compilerServices: PlatformDependentCompilerServices
get() = null get() = JvmPlatformCompilerServices
class ForProject(project: Project) : ScriptDependenciesSourceInfo(project) class ForProject(project: Project) : ScriptDependenciesSourceInfo(project)
} }
@@ -28,6 +28,7 @@ import org.jetbrains.kotlin.frontend.di.configureModule
import org.jetbrains.kotlin.incremental.components.ExpectActualTracker import org.jetbrains.kotlin.incremental.components.ExpectActualTracker
import org.jetbrains.kotlin.incremental.components.LookupTracker import org.jetbrains.kotlin.incremental.components.LookupTracker
import org.jetbrains.kotlin.js.resolve.JsPlatformCompilerServices import org.jetbrains.kotlin.js.resolve.JsPlatformCompilerServices
import org.jetbrains.kotlin.platform.js.JsPlatforms
import org.jetbrains.kotlin.resolve.* import org.jetbrains.kotlin.resolve.*
import org.jetbrains.kotlin.resolve.lazy.KotlinCodeAnalyzer import org.jetbrains.kotlin.resolve.lazy.KotlinCodeAnalyzer
import org.jetbrains.kotlin.resolve.lazy.ResolveSession import org.jetbrains.kotlin.resolve.lazy.ResolveSession
@@ -46,7 +47,7 @@ fun createTopDownAnalyzerForJs(
val storageComponentContainer = createContainer("TopDownAnalyzerForJs", JsPlatformCompilerServices) { val storageComponentContainer = createContainer("TopDownAnalyzerForJs", JsPlatformCompilerServices) {
configureModule( configureModule(
moduleContext, moduleContext,
DefaultBuiltInPlatforms.jsPlatform, JsPlatforms.defaultJsPlatform,
JsPlatformCompilerServices, JsPlatformCompilerServices,
bindingTrace bindingTrace
) )