[Platform API] Introduce fundamental abstraction of Platform
This is a large commit, which introduces general API for working with
abstraction of Platform.
- Add new abstraction to 'core' - SimplePlatform - which represents
exactly one platform
- Clients are strongly prohibited to create instances of SimplePlatform
by hand, instead, corresponding *Platforms abstraction should be used
(e.g. JvmPlatforms, JsPlatforms, KonanPlatforms)
- Move TargetPlatform to 'core', it represents now a collection of
SimplePlatforms
- Clients are strongly encouraged to use TargetPlatform
(not SimplePlatform) in API, to enforce checks for multiplatform
- Provide a helper-extensions to work with TargetPlatform
(in particular, for getting a specific component platform)
- Remove MultiTargetPlatform in favour of TargetPlatform
- Notably, this commit leaves another widely used duplicated abstraction,
namely, IdePlatform. For the sake sanity, removal of IdePlatform is
extracted in the separate commit.
This commit is contained in:
Generated
+7
@@ -0,0 +1,7 @@
|
|||||||
|
<component name="CopyrightManager">
|
||||||
|
<copyright>
|
||||||
|
<option name="allowReplaceRegexp" value="JetBrains" />
|
||||||
|
<option name="notice" value="Copyright 2010-&#36;today.year JetBrains s.r.o. and Kotlin Programming Language contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file." />
|
||||||
|
<option name="myName" value="apache" />
|
||||||
|
</copyright>
|
||||||
|
</component>
|
||||||
@@ -8,6 +8,7 @@ dependencies {
|
|||||||
compile(project(":core:util.runtime"))
|
compile(project(":core:util.runtime"))
|
||||||
compile(project(":compiler:frontend"))
|
compile(project(":compiler:frontend"))
|
||||||
compile(project(":compiler:frontend.java"))
|
compile(project(":compiler:frontend.java"))
|
||||||
|
compile(project(":js:js.frontend"))
|
||||||
compileOnly(project(":kotlin-reflect-api"))
|
compileOnly(project(":kotlin-reflect-api"))
|
||||||
compileOnly(intellijCoreDep()) { includeJars("intellij-core") }
|
compileOnly(intellijCoreDep()) { includeJars("intellij-core") }
|
||||||
compileOnly(intellijDep()) { includeIntellijCoreJarDependencies(project) }
|
compileOnly(intellijDep()) { includeIntellijCoreJarDependencies(project) }
|
||||||
|
|||||||
+5
-5
@@ -22,7 +22,7 @@ import com.intellij.psi.search.GlobalSearchScope
|
|||||||
import org.jetbrains.kotlin.analyzer.*
|
import org.jetbrains.kotlin.analyzer.*
|
||||||
import org.jetbrains.kotlin.config.LanguageFeature
|
import org.jetbrains.kotlin.config.LanguageFeature
|
||||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||||
import org.jetbrains.kotlin.config.TargetPlatformVersion
|
import org.jetbrains.kotlin.platform.TargetPlatformVersion
|
||||||
import org.jetbrains.kotlin.container.StorageComponentContainer
|
import org.jetbrains.kotlin.container.StorageComponentContainer
|
||||||
import org.jetbrains.kotlin.container.get
|
import org.jetbrains.kotlin.container.get
|
||||||
import org.jetbrains.kotlin.container.useImpl
|
import org.jetbrains.kotlin.container.useImpl
|
||||||
@@ -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.TargetPlatform
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.resolve.*
|
import org.jetbrains.kotlin.resolve.*
|
||||||
import org.jetbrains.kotlin.resolve.lazy.ResolveSession
|
import org.jetbrains.kotlin.resolve.lazy.ResolveSession
|
||||||
@@ -72,7 +73,7 @@ object CommonResolverForModuleFactory : ResolverForModuleFactory() {
|
|||||||
|
|
||||||
fun analyzeFiles(
|
fun analyzeFiles(
|
||||||
files: Collection<KtFile>, moduleName: Name, dependOnBuiltIns: Boolean, languageVersionSettings: LanguageVersionSettings,
|
files: Collection<KtFile>, moduleName: Name, dependOnBuiltIns: Boolean, languageVersionSettings: LanguageVersionSettings,
|
||||||
capabilities: Map<ModuleDescriptor.Capability<*>, Any?> = mapOf(MultiTargetPlatform.CAPABILITY to MultiTargetPlatform.Common),
|
capabilities: Map<ModuleDescriptor.Capability<*>, Any?> = emptyMap(),
|
||||||
metadataPartProviderFactory: (ModuleContent<ModuleInfo>) -> MetadataPartProvider
|
metadataPartProviderFactory: (ModuleContent<ModuleInfo>) -> MetadataPartProvider
|
||||||
): AnalysisResult {
|
): AnalysisResult {
|
||||||
val moduleInfo = SourceModuleInfo(moduleName, capabilities, dependOnBuiltIns)
|
val moduleInfo = SourceModuleInfo(moduleName, capabilities, dependOnBuiltIns)
|
||||||
@@ -121,8 +122,7 @@ object CommonResolverForModuleFactory : ResolverForModuleFactory() {
|
|||||||
platformParameters: PlatformAnalysisParameters,
|
platformParameters: PlatformAnalysisParameters,
|
||||||
targetEnvironment: TargetEnvironment,
|
targetEnvironment: TargetEnvironment,
|
||||||
resolverForProject: ResolverForProject<M>,
|
resolverForProject: ResolverForProject<M>,
|
||||||
languageVersionSettings: LanguageVersionSettings,
|
languageVersionSettings: LanguageVersionSettings
|
||||||
targetPlatformVersion: TargetPlatformVersion
|
|
||||||
): ResolverForModule {
|
): ResolverForModule {
|
||||||
val (moduleInfo, syntheticFiles, moduleContentScope) = moduleContent
|
val (moduleInfo, syntheticFiles, moduleContentScope) = moduleContent
|
||||||
val project = moduleContext.project
|
val project = moduleContext.project
|
||||||
@@ -156,7 +156,7 @@ object CommonResolverForModuleFactory : ResolverForModuleFactory() {
|
|||||||
metadataPartProvider: MetadataPartProvider,
|
metadataPartProvider: MetadataPartProvider,
|
||||||
languageVersionSettings: LanguageVersionSettings
|
languageVersionSettings: LanguageVersionSettings
|
||||||
): StorageComponentContainer = createContainer("ResolveCommonCode", CommonPlatformCompilerServices) {
|
): StorageComponentContainer = createContainer("ResolveCommonCode", CommonPlatformCompilerServices) {
|
||||||
configureModule(moduleContext, CommonPlatform, TargetPlatformVersion.NoVersion, CommonPlatformCompilerServices, bindingTrace)
|
configureModule(moduleContext, DefaultBuiltInPlatforms.commonPlatform, CommonPlatformCompilerServices, bindingTrace)
|
||||||
|
|
||||||
useInstance(moduleContentScope)
|
useInstance(moduleContentScope)
|
||||||
useInstance(LookupTracker.DO_NOTHING)
|
useInstance(LookupTracker.DO_NOTHING)
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
||||||
|
* that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.platform
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.platform.js.JsPlatforms
|
||||||
|
import org.jetbrains.kotlin.platform.js.JsPlatforms.defaultJsPlatform
|
||||||
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||||
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms.defaultJvmPlatform
|
||||||
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms.jvm18
|
||||||
|
import org.jetbrains.kotlin.platform.konan.KonanPlatforms
|
||||||
|
import org.jetbrains.kotlin.platform.konan.KonanPlatforms.defaultKonanPlatform
|
||||||
|
|
||||||
|
object CommonPlatforms {
|
||||||
|
|
||||||
|
val defaultCommonPlatform: TargetPlatform = TargetPlatform(
|
||||||
|
setOf(
|
||||||
|
defaultJvmPlatform.single(),
|
||||||
|
defaultJsPlatform.single(),
|
||||||
|
defaultKonanPlatform.single()
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
val allSimplePlatforms: List<TargetPlatform>
|
||||||
|
get() = sequence {
|
||||||
|
yieldAll(JvmPlatforms.allJvmPlatforms)
|
||||||
|
yieldAll(KonanPlatforms.allKonanPlatforms)
|
||||||
|
yieldAll(JsPlatforms.allJsPlatforms)
|
||||||
|
|
||||||
|
// TODO(dsavvinov): extensions points?
|
||||||
|
}.toList()
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.platform.konan
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.platform.SimplePlatform
|
||||||
|
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
|
import org.jetbrains.kotlin.platform.toTargetPlatform
|
||||||
|
|
||||||
|
abstract class KonanPlatform : SimplePlatform("Native") {
|
||||||
|
override val oldFashionedDescription: String
|
||||||
|
get() = "Kotlin/Native "
|
||||||
|
}
|
||||||
|
|
||||||
|
object KonanPlatforms {
|
||||||
|
val defaultKonanPlatform: TargetPlatform = object : KonanPlatform() {}.toTargetPlatform()
|
||||||
|
|
||||||
|
val allKonanPlatforms: List<TargetPlatform> = listOf(defaultKonanPlatform)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun TargetPlatform?.isNative(): Boolean = this?.singleOrNull() is KonanPlatform
|
||||||
+9
-3
@@ -66,11 +66,13 @@ import org.jetbrains.kotlin.modules.Module
|
|||||||
import org.jetbrains.kotlin.modules.TargetId
|
import org.jetbrains.kotlin.modules.TargetId
|
||||||
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.platform.TargetPlatform
|
||||||
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||||
import org.jetbrains.kotlin.progress.ProgressIndicatorAndCompilationCanceledStatus
|
import org.jetbrains.kotlin.progress.ProgressIndicatorAndCompilationCanceledStatus
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.resolve.TargetPlatform
|
import org.jetbrains.kotlin.resolve.PlatformDependentAnalyzerServices
|
||||||
import org.jetbrains.kotlin.resolve.jvm.KotlinJavaPsiFacade
|
import org.jetbrains.kotlin.resolve.jvm.KotlinJavaPsiFacade
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
|
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformAnalyzerServices
|
||||||
import org.jetbrains.kotlin.utils.newLinkedHashMapWithExpectedSize
|
import org.jetbrains.kotlin.utils.newLinkedHashMapWithExpectedSize
|
||||||
import org.jetbrains.kotlin.utils.tryConstructClassFromStringArgs
|
import org.jetbrains.kotlin.utils.tryConstructClassFromStringArgs
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@@ -301,7 +303,11 @@ object KotlinToJVMBytecodeCompiler {
|
|||||||
|
|
||||||
val dependencies: MutableList<ModuleInfo> = mutableListOf()
|
val dependencies: MutableList<ModuleInfo> = mutableListOf()
|
||||||
|
|
||||||
override val platform: TargetPlatform? get() = JvmPlatform
|
override val platform: TargetPlatform
|
||||||
|
get() = JvmPlatforms.unspecifiedJvmPlatform
|
||||||
|
|
||||||
|
override val analyzerServices: PlatformDependentAnalyzerServices
|
||||||
|
get() = JvmPlatformAnalyzerServices
|
||||||
|
|
||||||
override fun dependencies(): List<ModuleInfo> {
|
override fun dependencies(): List<ModuleInfo> {
|
||||||
return dependencies
|
return dependencies
|
||||||
|
|||||||
+5
-2
@@ -55,6 +55,7 @@ import org.jetbrains.kotlin.load.kotlin.incremental.IncrementalPackageFragmentPr
|
|||||||
import org.jetbrains.kotlin.load.kotlin.incremental.IncrementalPackagePartProvider
|
import org.jetbrains.kotlin.load.kotlin.incremental.IncrementalPackagePartProvider
|
||||||
import org.jetbrains.kotlin.modules.TargetId
|
import org.jetbrains.kotlin.modules.TargetId
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.resolve.*
|
import org.jetbrains.kotlin.resolve.*
|
||||||
import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver
|
import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver
|
||||||
@@ -167,8 +168,9 @@ object TopDownAnalyzerFacadeForJVM {
|
|||||||
val dependencyScope = GlobalSearchScope.notScope(sourceScope)
|
val dependencyScope = GlobalSearchScope.notScope(sourceScope)
|
||||||
|
|
||||||
val dependenciesContainer = createContainerForTopDownAnalyzerForJvm(
|
val dependenciesContainer = createContainerForTopDownAnalyzerForJvm(
|
||||||
|
JvmPlatforms.jvmPlatformByTargetVersion(jvmTarget), // TODO(dsavvinov): do not pass JvmTarget around
|
||||||
dependenciesContext, trace, DeclarationProviderFactory.EMPTY, dependencyScope, lookupTracker, expectActualTracker,
|
dependenciesContext, trace, DeclarationProviderFactory.EMPTY, dependencyScope, lookupTracker, expectActualTracker,
|
||||||
packagePartProvider(dependencyScope), moduleClassResolver, targetEnvironment, jvmTarget, languageVersionSettings,
|
packagePartProvider(dependencyScope), moduleClassResolver, targetEnvironment, languageVersionSettings,
|
||||||
configureJavaClassFinder
|
configureJavaClassFinder
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -196,8 +198,9 @@ object TopDownAnalyzerFacadeForJVM {
|
|||||||
// to be stored in CliLightClassGenerationSupport, and it better be the source one (otherwise light classes would not be found)
|
// to be stored in CliLightClassGenerationSupport, and it better be the source one (otherwise light classes would not be found)
|
||||||
// TODO: get rid of duplicate invocation of CodeAnalyzerInitializer#initialize, or refactor CliLightClassGenerationSupport
|
// TODO: get rid of duplicate invocation of CodeAnalyzerInitializer#initialize, or refactor CliLightClassGenerationSupport
|
||||||
val container = createContainerForTopDownAnalyzerForJvm(
|
val container = createContainerForTopDownAnalyzerForJvm(
|
||||||
|
JvmPlatforms.jvmPlatformByTargetVersion(jvmTarget),
|
||||||
moduleContext, trace, declarationProviderFactory(storageManager, files), sourceScope, lookupTracker, expectActualTracker,
|
moduleContext, trace, declarationProviderFactory(storageManager, files), sourceScope, lookupTracker, expectActualTracker,
|
||||||
partProvider, moduleClassResolver, targetEnvironment, jvmTarget, languageVersionSettings, configureJavaClassFinder,
|
partProvider, moduleClassResolver, targetEnvironment, languageVersionSettings, configureJavaClassFinder,
|
||||||
configuration[JVMConfigurationKeys.JAVA_CLASSES_TRACKER]
|
configuration[JVMConfigurationKeys.JAVA_CLASSES_TRACKER]
|
||||||
).apply {
|
).apply {
|
||||||
initJvmBuiltInsForTopDownAnalysis()
|
initJvmBuiltInsForTopDownAnalysis()
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import org.jetbrains.kotlin.fir.FirSession
|
|||||||
import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider
|
import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider
|
||||||
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.platform.TargetPlatform
|
||||||
|
|
||||||
class FirModuleDescriptor(val session: FirSession) : ModuleDescriptor {
|
class FirModuleDescriptor(val session: FirSession) : ModuleDescriptor {
|
||||||
override val builtIns: KotlinBuiltIns
|
override val builtIns: KotlinBuiltIns
|
||||||
@@ -25,6 +26,9 @@ class FirModuleDescriptor(val session: FirSession) : ModuleDescriptor {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override val platform: TargetPlatform?
|
||||||
|
get() = null
|
||||||
|
|
||||||
override fun getPackage(fqName: FqName): PackageViewDescriptor {
|
override fun getPackage(fqName: FqName): PackageViewDescriptor {
|
||||||
val symbolProvider = FirSymbolProvider.getInstance(session)
|
val symbolProvider = FirSymbolProvider.getInstance(session)
|
||||||
if (symbolProvider.getPackage(fqName) != null) {
|
if (symbolProvider.getPackage(fqName) != null) {
|
||||||
|
|||||||
+14
-10
@@ -22,10 +22,12 @@ import org.jetbrains.kotlin.fir.resolve.FirProvider
|
|||||||
import org.jetbrains.kotlin.fir.resolve.impl.FirProviderImpl
|
import org.jetbrains.kotlin.fir.resolve.impl.FirProviderImpl
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirTotalResolveTransformer
|
import org.jetbrains.kotlin.fir.resolve.transformers.FirTotalResolveTransformer
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.resolve.MultiTargetPlatform
|
import org.jetbrains.kotlin.platform.CommonPlatforms
|
||||||
|
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
|
import org.jetbrains.kotlin.platform.js.JsPlatforms
|
||||||
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||||
|
import org.jetbrains.kotlin.platform.konan.KonanPlatforms
|
||||||
import org.jetbrains.kotlin.resolve.PlatformDependentCompilerServices
|
import org.jetbrains.kotlin.resolve.PlatformDependentCompilerServices
|
||||||
import org.jetbrains.kotlin.resolve.TargetPlatform
|
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
|
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformCompilerServices
|
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformCompilerServices
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.util.*
|
import java.util.*
|
||||||
@@ -130,21 +132,23 @@ abstract class AbstractFirDiagnosticsSmokeTest : BaseDiagnosticsTest() {
|
|||||||
private val builtInsModuleInfo = BuiltInModuleInfo(Name.special("<built-ins>"))
|
private val builtInsModuleInfo = BuiltInModuleInfo(Name.special("<built-ins>"))
|
||||||
|
|
||||||
protected open fun createModule(moduleName: String): TestModuleInfo {
|
protected open fun createModule(moduleName: String): TestModuleInfo {
|
||||||
val nameSuffix = moduleName.substringAfterLast("-", "")
|
val nameSuffix = moduleName.substringAfterLast("-", "").toUpperCase()
|
||||||
// TODO: use platform
|
|
||||||
@Suppress("UNUSED_VARIABLE")
|
@Suppress("UNUSED_VARIABLE")
|
||||||
val platform =
|
val platform =
|
||||||
when {
|
when {
|
||||||
nameSuffix.isEmpty() -> null
|
nameSuffix.isEmpty() -> null // TODO(dsavvinov): this leads to 'null'-platform in ModuleDescriptor
|
||||||
nameSuffix == "common" -> MultiTargetPlatform.Common
|
nameSuffix == "COMMON" -> CommonPlatforms.defaultCommonPlatform
|
||||||
else -> MultiTargetPlatform.Specific(nameSuffix.toUpperCase())
|
nameSuffix == "JVM" -> JvmPlatforms.defaultJvmPlatform // TODO(dsavvinov): determine JvmTarget precisely
|
||||||
|
nameSuffix == "JS" -> JsPlatforms.defaultJsPlatform
|
||||||
|
nameSuffix == "NATIVE" -> KonanPlatforms.defaultKonanPlatform
|
||||||
|
else -> throw IllegalStateException("Can't determine platform by name $nameSuffix")
|
||||||
}
|
}
|
||||||
return TestModuleInfo(Name.special("<$moduleName>"))
|
return TestModuleInfo(Name.special("<$moduleName>"))
|
||||||
}
|
}
|
||||||
|
|
||||||
class BuiltInModuleInfo(override val name: Name) : ModuleInfo {
|
class BuiltInModuleInfo(override val name: Name) : ModuleInfo {
|
||||||
override val platform: TargetPlatform?
|
override val platform: TargetPlatform?
|
||||||
get() = JvmPlatform
|
get() = JvmPlatforms.defaultJvmPlatform
|
||||||
|
|
||||||
override val compilerServices: PlatformDependentCompilerServices
|
override val compilerServices: PlatformDependentCompilerServices
|
||||||
get() = JvmPlatformCompilerServices
|
get() = JvmPlatformCompilerServices
|
||||||
@@ -156,7 +160,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() = JvmPlatform
|
get() = JvmPlatforms.defaultJvmPlatform
|
||||||
|
|
||||||
override val compilerServices: PlatformDependentCompilerServices
|
override val compilerServices: PlatformDependentCompilerServices
|
||||||
get() = JvmPlatformCompilerServices
|
get() = JvmPlatformCompilerServices
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.analyzer
|
|||||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.resolve.PlatformDependentCompilerServices
|
import org.jetbrains.kotlin.resolve.PlatformDependentCompilerServices
|
||||||
import org.jetbrains.kotlin.resolve.TargetPlatform
|
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
|
|
||||||
|
|
||||||
interface ModuleInfo {
|
interface ModuleInfo {
|
||||||
|
|||||||
@@ -1,11 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
|
||||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.resolve
|
|
||||||
|
|
||||||
abstract class TargetPlatform(val platformName: String) {
|
|
||||||
override fun toString() = platformName
|
|
||||||
abstract val platform: MultiTargetPlatform
|
|
||||||
}
|
|
||||||
@@ -17,6 +17,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.config
|
package org.jetbrains.kotlin.config
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.platform.TargetPlatformVersion
|
||||||
import org.jetbrains.org.objectweb.asm.Opcodes
|
import org.jetbrains.org.objectweb.asm.Opcodes
|
||||||
|
|
||||||
enum class JvmTarget(override val description: String) : TargetPlatformVersion {
|
enum class JvmTarget(override val description: String) : TargetPlatformVersion {
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ import com.intellij.psi.search.GlobalSearchScope
|
|||||||
import org.jetbrains.kotlin.builtins.jvm.JvmBuiltIns
|
import org.jetbrains.kotlin.builtins.jvm.JvmBuiltIns
|
||||||
import org.jetbrains.kotlin.builtins.jvm.JvmBuiltInsPackageFragmentProvider
|
import org.jetbrains.kotlin.builtins.jvm.JvmBuiltInsPackageFragmentProvider
|
||||||
import org.jetbrains.kotlin.config.JvmAnalysisFlags
|
import org.jetbrains.kotlin.config.JvmAnalysisFlags
|
||||||
import org.jetbrains.kotlin.config.JvmTarget
|
|
||||||
import org.jetbrains.kotlin.config.LanguageFeature
|
import org.jetbrains.kotlin.config.LanguageFeature
|
||||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||||
import org.jetbrains.kotlin.container.*
|
import org.jetbrains.kotlin.container.*
|
||||||
@@ -41,9 +40,9 @@ import org.jetbrains.kotlin.load.java.lazy.ModuleClassResolver
|
|||||||
import org.jetbrains.kotlin.load.kotlin.DeserializationComponentsForJava
|
import org.jetbrains.kotlin.load.kotlin.DeserializationComponentsForJava
|
||||||
import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
|
import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
|
||||||
import org.jetbrains.kotlin.load.kotlin.VirtualFileFinderFactory
|
import org.jetbrains.kotlin.load.kotlin.VirtualFileFinderFactory
|
||||||
|
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
import org.jetbrains.kotlin.resolve.*
|
import org.jetbrains.kotlin.resolve.*
|
||||||
import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver
|
import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
|
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformCompilerServices
|
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformCompilerServices
|
||||||
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
|
||||||
@@ -79,22 +78,22 @@ private fun StorageComponentContainer.configureJavaTopDownAnalysis(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun createContainerForLazyResolveWithJava(
|
fun createContainerForLazyResolveWithJava(
|
||||||
moduleContext: ModuleContext,
|
jvmPlatform: TargetPlatform,
|
||||||
bindingTrace: BindingTrace,
|
moduleContext: ModuleContext,
|
||||||
declarationProviderFactory: DeclarationProviderFactory,
|
bindingTrace: BindingTrace,
|
||||||
moduleContentScope: GlobalSearchScope,
|
declarationProviderFactory: DeclarationProviderFactory,
|
||||||
moduleClassResolver: ModuleClassResolver,
|
moduleContentScope: GlobalSearchScope,
|
||||||
targetEnvironment: TargetEnvironment,
|
moduleClassResolver: ModuleClassResolver,
|
||||||
lookupTracker: LookupTracker,
|
targetEnvironment: TargetEnvironment,
|
||||||
expectActualTracker: ExpectActualTracker,
|
lookupTracker: LookupTracker,
|
||||||
packagePartProvider: PackagePartProvider,
|
expectActualTracker: ExpectActualTracker,
|
||||||
jvmTarget: JvmTarget,
|
packagePartProvider: PackagePartProvider,
|
||||||
languageVersionSettings: LanguageVersionSettings,
|
languageVersionSettings: LanguageVersionSettings,
|
||||||
useBuiltInsProvider: Boolean,
|
useBuiltInsProvider: Boolean,
|
||||||
configureJavaClassFinder: (StorageComponentContainer.() -> Unit)? = null,
|
configureJavaClassFinder: (StorageComponentContainer.() -> Unit)? = null,
|
||||||
javaClassTracker: JavaClassesTracker? = null
|
javaClassTracker: JavaClassesTracker? = null
|
||||||
): StorageComponentContainer = createContainer("LazyResolveWithJava", JvmPlatformCompilerServices) {
|
): StorageComponentContainer = createContainer("LazyResolveWithJava", JvmPlatformCompilerServices) {
|
||||||
configureModule(moduleContext, JvmPlatform, jvmTarget, JvmPlatformCompilerServices, bindingTrace)
|
configureModule(moduleContext, jvmPlatform, JvmPlatformCompilerServices, bindingTrace)
|
||||||
configureJavaTopDownAnalysis(moduleContentScope, moduleContext.project, lookupTracker, expectActualTracker)
|
configureJavaTopDownAnalysis(moduleContentScope, moduleContext.project, lookupTracker, expectActualTracker)
|
||||||
|
|
||||||
if (configureJavaClassFinder != null) {
|
if (configureJavaClassFinder != null) {
|
||||||
@@ -135,22 +134,22 @@ fun createContainerForLazyResolveWithJava(
|
|||||||
|
|
||||||
|
|
||||||
fun createContainerForTopDownAnalyzerForJvm(
|
fun createContainerForTopDownAnalyzerForJvm(
|
||||||
moduleContext: ModuleContext,
|
jvmPlatform: TargetPlatform,
|
||||||
bindingTrace: BindingTrace,
|
moduleContext: ModuleContext,
|
||||||
declarationProviderFactory: DeclarationProviderFactory,
|
bindingTrace: BindingTrace,
|
||||||
moduleContentScope: GlobalSearchScope,
|
declarationProviderFactory: DeclarationProviderFactory,
|
||||||
lookupTracker: LookupTracker,
|
moduleContentScope: GlobalSearchScope,
|
||||||
expectActualTracker: ExpectActualTracker,
|
lookupTracker: LookupTracker,
|
||||||
packagePartProvider: PackagePartProvider,
|
expectActualTracker: ExpectActualTracker,
|
||||||
moduleClassResolver: ModuleClassResolver,
|
packagePartProvider: PackagePartProvider,
|
||||||
targetEnvironment: TargetEnvironment,
|
moduleClassResolver: ModuleClassResolver,
|
||||||
jvmTarget: JvmTarget,
|
targetEnvironment: TargetEnvironment,
|
||||||
languageVersionSettings: LanguageVersionSettings,
|
languageVersionSettings: LanguageVersionSettings,
|
||||||
configureJavaClassFinder: (StorageComponentContainer.() -> Unit)? = null,
|
configureJavaClassFinder: (StorageComponentContainer.() -> Unit)? = null,
|
||||||
javaClassTracker: JavaClassesTracker? = null
|
javaClassTracker: JavaClassesTracker? = null
|
||||||
): ComponentProvider = createContainerForLazyResolveWithJava(
|
): ComponentProvider = createContainerForLazyResolveWithJava(
|
||||||
moduleContext, bindingTrace, declarationProviderFactory, moduleContentScope, moduleClassResolver,
|
jvmPlatform, moduleContext, bindingTrace, declarationProviderFactory, moduleContentScope, moduleClassResolver,
|
||||||
targetEnvironment, lookupTracker, expectActualTracker, packagePartProvider, jvmTarget, languageVersionSettings,
|
targetEnvironment, lookupTracker, expectActualTracker, packagePartProvider, languageVersionSettings,
|
||||||
useBuiltInsProvider = true,
|
useBuiltInsProvider = true,
|
||||||
configureJavaClassFinder = configureJavaClassFinder,
|
configureJavaClassFinder = configureJavaClassFinder,
|
||||||
javaClassTracker = javaClassTracker
|
javaClassTracker = javaClassTracker
|
||||||
|
|||||||
@@ -0,0 +1,44 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
||||||
|
* that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.platform.jvm
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.config.JvmTarget
|
||||||
|
import org.jetbrains.kotlin.platform.SimplePlatform
|
||||||
|
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
|
import org.jetbrains.kotlin.platform.toTargetPlatform
|
||||||
|
import org.jetbrains.kotlin.platform.TargetPlatformVersion
|
||||||
|
|
||||||
|
abstract class JvmPlatform : SimplePlatform("JVM") {
|
||||||
|
override val oldFashionedDescription: String
|
||||||
|
get() = "JVM "
|
||||||
|
}
|
||||||
|
|
||||||
|
object JvmPlatforms {
|
||||||
|
private val jvmTargetToJdkPlatform: Map<JvmTarget, TargetPlatform> =
|
||||||
|
JvmTarget.values().map { it to JdkPlatform(it).toTargetPlatform() }.toMap()
|
||||||
|
|
||||||
|
val defaultJvmPlatform: TargetPlatform = jvmTargetToJdkPlatform[JvmTarget.DEFAULT]!!
|
||||||
|
|
||||||
|
val jvm16: TargetPlatform = jvmTargetToJdkPlatform[JvmTarget.JVM_1_6]!!
|
||||||
|
val jvm18: TargetPlatform = jvmTargetToJdkPlatform[JvmTarget.JVM_1_8]!!
|
||||||
|
|
||||||
|
fun jvmPlatformByTargetVersion(targetVersion: JvmTarget): TargetPlatform =
|
||||||
|
jvmTargetToJdkPlatform[targetVersion]!!
|
||||||
|
|
||||||
|
val allJvmPlatforms: List<TargetPlatform> = jvmTargetToJdkPlatform.values.toList()
|
||||||
|
}
|
||||||
|
|
||||||
|
data class JdkPlatform(val targetVersion: JvmTarget) : JvmPlatform() {
|
||||||
|
override fun toString(): String = "$platformName ($targetVersion)"
|
||||||
|
|
||||||
|
override val oldFashionedDescription: String
|
||||||
|
get() = "JVM " + targetVersion.description
|
||||||
|
|
||||||
|
override val targetPlatformVersion: TargetPlatformVersion
|
||||||
|
get() = targetVersion
|
||||||
|
}
|
||||||
|
|
||||||
|
fun TargetPlatform?.isJvm(): Boolean = this?.singleOrNull() is JvmPlatform
|
||||||
+4
-9
@@ -17,9 +17,7 @@
|
|||||||
package org.jetbrains.kotlin.resolve.jvm
|
package org.jetbrains.kotlin.resolve.jvm
|
||||||
|
|
||||||
import org.jetbrains.kotlin.analyzer.*
|
import org.jetbrains.kotlin.analyzer.*
|
||||||
import org.jetbrains.kotlin.config.JvmTarget
|
|
||||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||||
import org.jetbrains.kotlin.config.TargetPlatformVersion
|
|
||||||
import org.jetbrains.kotlin.container.get
|
import org.jetbrains.kotlin.container.get
|
||||||
import org.jetbrains.kotlin.context.ModuleContext
|
import org.jetbrains.kotlin.context.ModuleContext
|
||||||
import org.jetbrains.kotlin.descriptors.impl.CompositePackageFragmentProvider
|
import org.jetbrains.kotlin.descriptors.impl.CompositePackageFragmentProvider
|
||||||
@@ -30,11 +28,10 @@ import org.jetbrains.kotlin.incremental.components.LookupTracker
|
|||||||
import org.jetbrains.kotlin.load.java.lazy.ModuleClassResolverImpl
|
import org.jetbrains.kotlin.load.java.lazy.ModuleClassResolverImpl
|
||||||
import org.jetbrains.kotlin.load.java.structure.JavaClass
|
import org.jetbrains.kotlin.load.java.structure.JavaClass
|
||||||
import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
|
import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
|
||||||
|
import org.jetbrains.kotlin.platform.jvm.isJvm
|
||||||
import org.jetbrains.kotlin.resolve.CodeAnalyzerInitializer
|
import org.jetbrains.kotlin.resolve.CodeAnalyzerInitializer
|
||||||
import org.jetbrains.kotlin.resolve.TargetEnvironment
|
import org.jetbrains.kotlin.resolve.TargetEnvironment
|
||||||
import org.jetbrains.kotlin.resolve.TargetPlatform
|
|
||||||
import org.jetbrains.kotlin.resolve.jvm.extensions.PackageFragmentProviderExtension
|
import org.jetbrains.kotlin.resolve.jvm.extensions.PackageFragmentProviderExtension
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
|
|
||||||
import org.jetbrains.kotlin.resolve.lazy.ResolveSession
|
import org.jetbrains.kotlin.resolve.lazy.ResolveSession
|
||||||
import org.jetbrains.kotlin.resolve.lazy.declarations.DeclarationProviderFactoryService
|
import org.jetbrains.kotlin.resolve.lazy.declarations.DeclarationProviderFactoryService
|
||||||
|
|
||||||
@@ -52,8 +49,7 @@ object JvmResolverForModuleFactory : ResolverForModuleFactory() {
|
|||||||
platformParameters: PlatformAnalysisParameters,
|
platformParameters: PlatformAnalysisParameters,
|
||||||
targetEnvironment: TargetEnvironment,
|
targetEnvironment: TargetEnvironment,
|
||||||
resolverForProject: ResolverForProject<M>,
|
resolverForProject: ResolverForProject<M>,
|
||||||
languageVersionSettings: LanguageVersionSettings,
|
languageVersionSettings: LanguageVersionSettings
|
||||||
targetPlatformVersion: TargetPlatformVersion
|
|
||||||
): ResolverForModule {
|
): ResolverForModule {
|
||||||
val (moduleInfo, syntheticFiles, moduleContentScope) = moduleContent
|
val (moduleInfo, syntheticFiles, moduleContentScope) = moduleContent
|
||||||
val project = moduleContext.project
|
val project = moduleContext.project
|
||||||
@@ -73,7 +69,7 @@ object JvmResolverForModuleFactory : ResolverForModuleFactory() {
|
|||||||
val resolverForReferencedModule = referencedClassModule?.let { resolverForProject.tryGetResolverForModule(it as M) }
|
val resolverForReferencedModule = referencedClassModule?.let { resolverForProject.tryGetResolverForModule(it as M) }
|
||||||
|
|
||||||
val resolverForModule = resolverForReferencedModule?.takeIf {
|
val resolverForModule = resolverForReferencedModule?.takeIf {
|
||||||
referencedClassModule.platform == JvmPlatform || referencedClassModule.platform == null
|
referencedClassModule.platform.isJvm() || referencedClassModule.platform == null
|
||||||
} ?: run {
|
} ?: run {
|
||||||
// in case referenced class lies outside of our resolver, resolve the class as if it is inside our module
|
// in case referenced class lies outside of our resolver, resolve the class as if it is inside our module
|
||||||
// this leads to java class being resolved several times
|
// this leads to java class being resolved several times
|
||||||
@@ -82,12 +78,12 @@ object JvmResolverForModuleFactory : ResolverForModuleFactory() {
|
|||||||
resolverForModule.componentProvider.get<JavaDescriptorResolver>()
|
resolverForModule.componentProvider.get<JavaDescriptorResolver>()
|
||||||
}
|
}
|
||||||
|
|
||||||
val jvmTarget = targetPlatformVersion as? JvmTarget ?: JvmTarget.DEFAULT
|
|
||||||
val trace = CodeAnalyzerInitializer.getInstance(project).createTrace()
|
val trace = CodeAnalyzerInitializer.getInstance(project).createTrace()
|
||||||
|
|
||||||
val lookupTracker = LookupTracker.DO_NOTHING
|
val lookupTracker = LookupTracker.DO_NOTHING
|
||||||
val packagePartProvider = (platformParameters as JvmPlatformParameters).packagePartProviderFactory(moduleContent)
|
val packagePartProvider = (platformParameters as JvmPlatformParameters).packagePartProviderFactory(moduleContent)
|
||||||
val container = createContainerForLazyResolveWithJava(
|
val container = createContainerForLazyResolveWithJava(
|
||||||
|
moduleDescriptor.platform!!,
|
||||||
moduleContext,
|
moduleContext,
|
||||||
trace,
|
trace,
|
||||||
declarationProviderFactory,
|
declarationProviderFactory,
|
||||||
@@ -97,7 +93,6 @@ object JvmResolverForModuleFactory : ResolverForModuleFactory() {
|
|||||||
lookupTracker,
|
lookupTracker,
|
||||||
ExpectActualTracker.DoNothing,
|
ExpectActualTracker.DoNothing,
|
||||||
packagePartProvider,
|
packagePartProvider,
|
||||||
jvmTarget,
|
|
||||||
languageVersionSettings,
|
languageVersionSettings,
|
||||||
useBuiltInsProvider = false // TODO: load built-ins from module dependencies in IDE
|
useBuiltInsProvider = false // TODO: load built-ins from module dependencies in IDE
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,23 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2015 JetBrains s.r.o.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.resolve.jvm.platform
|
|
||||||
|
|
||||||
import org.jetbrains.kotlin.resolve.*
|
|
||||||
|
|
||||||
object JvmPlatform : TargetPlatform("JVM") {
|
|
||||||
override val platform = MultiTargetPlatform.Specific(platformName)
|
|
||||||
}
|
|
||||||
@@ -25,7 +25,6 @@ import org.jetbrains.kotlin.builtins.DefaultBuiltIns
|
|||||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||||
import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
|
import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
|
||||||
import org.jetbrains.kotlin.config.TargetPlatformVersion
|
|
||||||
import org.jetbrains.kotlin.container.ComponentProvider
|
import org.jetbrains.kotlin.container.ComponentProvider
|
||||||
import org.jetbrains.kotlin.context.ModuleContext
|
import org.jetbrains.kotlin.context.ModuleContext
|
||||||
import org.jetbrains.kotlin.context.ProjectContext
|
import org.jetbrains.kotlin.context.ProjectContext
|
||||||
@@ -37,10 +36,10 @@ import org.jetbrains.kotlin.descriptors.impl.ModuleDependencies
|
|||||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
||||||
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.platform.TargetPlatform
|
||||||
|
import org.jetbrains.kotlin.platform.TargetPlatformVersion
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.resolve.CompilerEnvironment
|
import org.jetbrains.kotlin.resolve.*
|
||||||
import org.jetbrains.kotlin.resolve.TargetEnvironment
|
|
||||||
import org.jetbrains.kotlin.resolve.TargetPlatform
|
|
||||||
import org.jetbrains.kotlin.storage.StorageManager
|
import org.jetbrains.kotlin.storage.StorageManager
|
||||||
import org.jetbrains.kotlin.storage.getValue
|
import org.jetbrains.kotlin.storage.getValue
|
||||||
import java.util.*
|
import java.util.*
|
||||||
@@ -185,6 +184,8 @@ class ResolverForProjectImpl<M : ModuleInfo>(
|
|||||||
|
|
||||||
val languageVersionSettings =
|
val languageVersionSettings =
|
||||||
moduleLanguageSettingsProvider.getLanguageVersionSettings(module, projectContext.project, isReleaseCoroutines)
|
moduleLanguageSettingsProvider.getLanguageVersionSettings(module, projectContext.project, isReleaseCoroutines)
|
||||||
|
|
||||||
|
// FIXME(dsavvinov): make sure that module.platform returns platform with the same JvmTarget as this one
|
||||||
val targetPlatformVersion = moduleLanguageSettingsProvider.getTargetPlatform(module, projectContext.project)
|
val targetPlatformVersion = moduleLanguageSettingsProvider.getTargetPlatform(module, projectContext.project)
|
||||||
|
|
||||||
val resolverForModuleFactory = resolverForModuleFactoryByPlatform(module.platform)
|
val resolverForModuleFactory = resolverForModuleFactoryByPlatform(module.platform)
|
||||||
@@ -195,8 +196,7 @@ class ResolverForProjectImpl<M : ModuleInfo>(
|
|||||||
platformParameters(module.platform ?: TODO("Missing platform!")),
|
platformParameters(module.platform ?: TODO("Missing platform!")),
|
||||||
targetEnvironment,
|
targetEnvironment,
|
||||||
this@ResolverForProjectImpl,
|
this@ResolverForProjectImpl,
|
||||||
languageVersionSettings,
|
languageVersionSettings
|
||||||
targetPlatformVersion
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -255,7 +255,7 @@ class ResolverForProjectImpl<M : ModuleInfo>(
|
|||||||
module.name,
|
module.name,
|
||||||
projectContext.storageManager,
|
projectContext.storageManager,
|
||||||
builtIns,
|
builtIns,
|
||||||
module.platform?.multiTargetPlatform,
|
module.platform,
|
||||||
module.capabilities,
|
module.capabilities,
|
||||||
module.stableName
|
module.stableName
|
||||||
)
|
)
|
||||||
@@ -304,8 +304,7 @@ abstract class ResolverForModuleFactory {
|
|||||||
platformParameters: PlatformAnalysisParameters,
|
platformParameters: PlatformAnalysisParameters,
|
||||||
targetEnvironment: TargetEnvironment,
|
targetEnvironment: TargetEnvironment,
|
||||||
resolverForProject: ResolverForProject<M>,
|
resolverForProject: ResolverForProject<M>,
|
||||||
languageVersionSettings: LanguageVersionSettings,
|
languageVersionSettings: LanguageVersionSettings
|
||||||
targetPlatformVersion: TargetPlatformVersion
|
|
||||||
): ResolverForModule
|
): ResolverForModule
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,11 +17,6 @@ import org.jetbrains.kotlin.resolve.scopes.SyntheticScopes
|
|||||||
import org.jetbrains.kotlin.storage.StorageManager
|
import org.jetbrains.kotlin.storage.StorageManager
|
||||||
import org.jetbrains.kotlin.types.DynamicTypesSettings
|
import org.jetbrains.kotlin.types.DynamicTypesSettings
|
||||||
|
|
||||||
object CommonPlatform : TargetPlatform("Default") {
|
|
||||||
override val platform: MultiTargetPlatform
|
|
||||||
get() = MultiTargetPlatform.Common
|
|
||||||
}
|
|
||||||
|
|
||||||
private object CommonPlatformConfigurator : PlatformConfiguratorBase(
|
private object CommonPlatformConfigurator : PlatformConfiguratorBase(
|
||||||
DynamicTypesSettings(), listOf(), listOf(), listOf(), listOf(), listOf(),
|
DynamicTypesSettings(), listOf(), listOf(), listOf(), listOf(), listOf(),
|
||||||
IdentifierChecker.Default, OverloadFilter.Default, PlatformToKotlinClassMap.EMPTY, DelegationFilter.Default,
|
IdentifierChecker.Default, OverloadFilter.Default, PlatformToKotlinClassMap.EMPTY, DelegationFilter.Default,
|
||||||
|
|||||||
@@ -20,17 +20,18 @@ import org.jetbrains.kotlin.config.LanguageVersionSettings
|
|||||||
import org.jetbrains.kotlin.descriptors.CallableDescriptor
|
import org.jetbrains.kotlin.descriptors.CallableDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
||||||
|
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
import org.jetbrains.kotlin.psi.KtCallableDeclaration
|
import org.jetbrains.kotlin.psi.KtCallableDeclaration
|
||||||
import org.jetbrains.kotlin.psi.KtExpression
|
import org.jetbrains.kotlin.psi.KtExpression
|
||||||
import org.jetbrains.kotlin.psi.KtReferenceExpression
|
import org.jetbrains.kotlin.psi.KtReferenceExpression
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
||||||
import org.jetbrains.kotlin.resolve.AnalyzingUtils
|
import org.jetbrains.kotlin.resolve.*
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
|
||||||
import org.jetbrains.kotlin.resolve.MultiTargetPlatform
|
|
||||||
import org.jetbrains.kotlin.resolve.calls.callUtil.getType
|
import org.jetbrains.kotlin.resolve.calls.callUtil.getType
|
||||||
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfo
|
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfo
|
||||||
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowValueFactory
|
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowValueFactory
|
||||||
|
import org.jetbrains.kotlin.platform.isCommon
|
||||||
|
import org.jetbrains.kotlin.platform.oldFashionedDescription
|
||||||
import org.jetbrains.kotlin.types.KotlinType
|
import org.jetbrains.kotlin.types.KotlinType
|
||||||
import org.jetbrains.kotlin.types.expressions.typeInfoFactory.noTypeInfo
|
import org.jetbrains.kotlin.types.expressions.typeInfoFactory.noTypeInfo
|
||||||
import java.util.*
|
import java.util.*
|
||||||
@@ -48,7 +49,7 @@ object CheckerTestUtil {
|
|||||||
|
|
||||||
fun getDiagnosticsIncludingSyntaxErrors(
|
fun getDiagnosticsIncludingSyntaxErrors(
|
||||||
bindingContext: BindingContext,
|
bindingContext: BindingContext,
|
||||||
implementingModulesBindings: List<Pair<MultiTargetPlatform, BindingContext>>,
|
implementingModulesBindings: List<Pair<TargetPlatform, BindingContext>>,
|
||||||
root: PsiElement,
|
root: PsiElement,
|
||||||
markDynamicCalls: Boolean,
|
markDynamicCalls: Boolean,
|
||||||
dynamicCallDescriptors: MutableList<DeclarationDescriptor>,
|
dynamicCallDescriptors: MutableList<DeclarationDescriptor>,
|
||||||
@@ -70,10 +71,11 @@ object CheckerTestUtil {
|
|||||||
moduleDescriptor,
|
moduleDescriptor,
|
||||||
diagnosedRanges
|
diagnosedRanges
|
||||||
)
|
)
|
||||||
val sortedBindings = implementingModulesBindings.sortedBy { it.first }
|
|
||||||
|
val sortedBindings = implementingModulesBindings.sortedBy { it.first.oldFashionedDescription }
|
||||||
|
|
||||||
for ((platform, second) in sortedBindings) {
|
for ((platform, second) in sortedBindings) {
|
||||||
assert(platform is MultiTargetPlatform.Specific) { "Implementing module must have a specific platform: $platform" }
|
assert(!platform.isCommon()) { "Implementing module must have a specific platform: $platform" }
|
||||||
|
|
||||||
result.addAll(
|
result.addAll(
|
||||||
getDiagnosticsIncludingSyntaxErrors(
|
getDiagnosticsIncludingSyntaxErrors(
|
||||||
@@ -81,7 +83,7 @@ object CheckerTestUtil {
|
|||||||
root,
|
root,
|
||||||
markDynamicCalls,
|
markDynamicCalls,
|
||||||
dynamicCallDescriptors,
|
dynamicCallDescriptors,
|
||||||
(platform as MultiTargetPlatform.Specific).platform,
|
platform.single().platformName,
|
||||||
withNewInference,
|
withNewInference,
|
||||||
languageVersionSettings,
|
languageVersionSettings,
|
||||||
dataFlowValueFactory,
|
dataFlowValueFactory,
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
|||||||
import org.jetbrains.kotlin.descriptors.PackageFragmentProvider
|
import org.jetbrains.kotlin.descriptors.PackageFragmentProvider
|
||||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.resolve.MultiTargetPlatform
|
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
import org.jetbrains.kotlin.storage.ExceptionTracker
|
import org.jetbrains.kotlin.storage.ExceptionTracker
|
||||||
import org.jetbrains.kotlin.storage.LockBasedStorageManager
|
import org.jetbrains.kotlin.storage.LockBasedStorageManager
|
||||||
import org.jetbrains.kotlin.storage.StorageManager
|
import org.jetbrains.kotlin.storage.StorageManager
|
||||||
@@ -99,8 +99,8 @@ fun ContextForNewModule(
|
|||||||
projectContext: ProjectContext,
|
projectContext: ProjectContext,
|
||||||
moduleName: Name,
|
moduleName: Name,
|
||||||
builtIns: KotlinBuiltIns,
|
builtIns: KotlinBuiltIns,
|
||||||
multiTargetPlatform: MultiTargetPlatform?
|
platform: TargetPlatform?
|
||||||
): MutableModuleContext {
|
): MutableModuleContext {
|
||||||
val module = ModuleDescriptorImpl(moduleName, projectContext.storageManager, builtIns, multiTargetPlatform)
|
val module = ModuleDescriptorImpl(moduleName, projectContext.storageManager, builtIns, platform)
|
||||||
return MutableModuleContextImpl(module, projectContext)
|
return MutableModuleContextImpl(module, projectContext)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ import org.jetbrains.kotlin.descriptors.impl.TypeAliasConstructorDescriptor
|
|||||||
import org.jetbrains.kotlin.diagnostics.rendering.TabledDescriptorRenderer.newTable
|
import org.jetbrains.kotlin.diagnostics.rendering.TabledDescriptorRenderer.newTable
|
||||||
import org.jetbrains.kotlin.diagnostics.rendering.TabledDescriptorRenderer.newText
|
import org.jetbrains.kotlin.diagnostics.rendering.TabledDescriptorRenderer.newText
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
import org.jetbrains.kotlin.platform.isCommon
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.renderer.DescriptorRenderer
|
import org.jetbrains.kotlin.renderer.DescriptorRenderer
|
||||||
import org.jetbrains.kotlin.renderer.DescriptorRenderer.Companion.DEBUG_TEXT
|
import org.jetbrains.kotlin.renderer.DescriptorRenderer.Companion.DEBUG_TEXT
|
||||||
@@ -85,11 +86,10 @@ object Renderers {
|
|||||||
|
|
||||||
@JvmField
|
@JvmField
|
||||||
val PLATFORM = Renderer<ModuleDescriptor> {
|
val PLATFORM = Renderer<ModuleDescriptor> {
|
||||||
val platform = it.getMultiTargetPlatform()
|
val platform = it.platform
|
||||||
" ${it.getCapability(ModuleInfo.Capability)?.displayedName ?: ""}" + when (platform) {
|
" ${it.getCapability(ModuleInfo.Capability)?.displayedName ?: ""}" + when {
|
||||||
MultiTargetPlatform.Common -> ""
|
platform == null || platform.isCommon() -> ""
|
||||||
is MultiTargetPlatform.Specific -> " for " + platform.platform
|
else -> " for " + platform.single().platformName
|
||||||
null -> ""
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -18,7 +18,7 @@ package org.jetbrains.kotlin.extensions
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.container.StorageComponentContainer
|
import org.jetbrains.kotlin.container.StorageComponentContainer
|
||||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||||
import org.jetbrains.kotlin.resolve.TargetPlatform
|
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
|
|
||||||
interface StorageComponentContainerContributor {
|
interface StorageComponentContainerContributor {
|
||||||
companion object : ProjectExtensionDescriptor<StorageComponentContainerContributor>(
|
companion object : ProjectExtensionDescriptor<StorageComponentContainerContributor>(
|
||||||
|
|||||||
@@ -16,11 +16,10 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.frontend.di
|
package org.jetbrains.kotlin.frontend.di
|
||||||
|
|
||||||
import org.jetbrains.kotlin.analyzer.common.CommonPlatform
|
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
import org.jetbrains.kotlin.analyzer.common.CommonPlatformCompilerServices
|
import org.jetbrains.kotlin.analyzer.common.CommonPlatformCompilerServices
|
||||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||||
import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
|
import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
|
||||||
import org.jetbrains.kotlin.config.TargetPlatformVersion
|
|
||||||
import org.jetbrains.kotlin.container.StorageComponentContainer
|
import org.jetbrains.kotlin.container.StorageComponentContainer
|
||||||
import org.jetbrains.kotlin.container.get
|
import org.jetbrains.kotlin.container.get
|
||||||
import org.jetbrains.kotlin.container.useImpl
|
import org.jetbrains.kotlin.container.useImpl
|
||||||
@@ -29,7 +28,9 @@ import org.jetbrains.kotlin.context.ModuleContext
|
|||||||
import org.jetbrains.kotlin.extensions.StorageComponentContainerContributor
|
import org.jetbrains.kotlin.extensions.StorageComponentContainerContributor
|
||||||
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.platform.subplatformOfType
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
|
import org.jetbrains.kotlin.platform.TargetPlatformVersion
|
||||||
import org.jetbrains.kotlin.resolve.*
|
import org.jetbrains.kotlin.resolve.*
|
||||||
import org.jetbrains.kotlin.resolve.calls.components.ClassicTypeSystemContextForCS
|
import org.jetbrains.kotlin.resolve.calls.components.ClassicTypeSystemContextForCS
|
||||||
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowValueFactoryImpl
|
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowValueFactoryImpl
|
||||||
@@ -46,7 +47,6 @@ import org.jetbrains.kotlin.types.expressions.LocalLazyDeclarationResolver
|
|||||||
fun StorageComponentContainer.configureModule(
|
fun StorageComponentContainer.configureModule(
|
||||||
moduleContext: ModuleContext,
|
moduleContext: ModuleContext,
|
||||||
platform: TargetPlatform,
|
platform: TargetPlatform,
|
||||||
platformVersion: TargetPlatformVersion,
|
|
||||||
compilerServices: PlatformDependentCompilerServices
|
compilerServices: PlatformDependentCompilerServices
|
||||||
) {
|
) {
|
||||||
useInstance(moduleContext)
|
useInstance(moduleContext)
|
||||||
@@ -56,8 +56,8 @@ fun StorageComponentContainer.configureModule(
|
|||||||
useInstance(moduleContext.module.builtIns)
|
useInstance(moduleContext.module.builtIns)
|
||||||
|
|
||||||
useInstance(platform)
|
useInstance(platform)
|
||||||
useInstance(platformVersion)
|
|
||||||
useInstance(compilerServices)
|
useInstance(compilerServices)
|
||||||
|
useInstance(platform.componentPlatforms.singleOrNull()?.targetPlatformVersion ?: TargetPlatformVersion.NoVersion)
|
||||||
|
|
||||||
compilerServices.platformConfigurator.configureModuleComponents(this)
|
compilerServices.platformConfigurator.configureModuleComponents(this)
|
||||||
compilerServices.platformConfigurator.configureModuleDependentCheckers(this)
|
compilerServices.platformConfigurator.configureModuleDependentCheckers(this)
|
||||||
@@ -83,11 +83,10 @@ private fun StorageComponentContainer.configurePlatformIndependentComponents() {
|
|||||||
fun StorageComponentContainer.configureModule(
|
fun StorageComponentContainer.configureModule(
|
||||||
moduleContext: ModuleContext,
|
moduleContext: ModuleContext,
|
||||||
platform: TargetPlatform,
|
platform: TargetPlatform,
|
||||||
platformVersion: TargetPlatformVersion,
|
|
||||||
compilerServices: PlatformDependentCompilerServices,
|
compilerServices: PlatformDependentCompilerServices,
|
||||||
trace: BindingTrace
|
trace: BindingTrace
|
||||||
) {
|
) {
|
||||||
configureModule(moduleContext, platform, platformVersion, compilerServices)
|
configureModule(moduleContext, platform, compilerServices)
|
||||||
useInstance(trace)
|
useInstance(trace)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -96,11 +95,10 @@ fun createContainerForBodyResolve(
|
|||||||
bindingTrace: BindingTrace,
|
bindingTrace: BindingTrace,
|
||||||
platform: TargetPlatform,
|
platform: TargetPlatform,
|
||||||
statementFilter: StatementFilter,
|
statementFilter: StatementFilter,
|
||||||
targetPlatformVersion: TargetPlatformVersion,
|
|
||||||
compilerServices: PlatformDependentCompilerServices,
|
compilerServices: PlatformDependentCompilerServices,
|
||||||
languageVersionSettings: LanguageVersionSettings
|
languageVersionSettings: LanguageVersionSettings
|
||||||
): StorageComponentContainer = createContainer("BodyResolve", compilerServices) {
|
): StorageComponentContainer = createContainer("BodyResolve", compilerServices) {
|
||||||
configureModule(moduleContext, platform, targetPlatformVersion, compilerServices, bindingTrace)
|
configureModule(moduleContext, platform, compilerServices, bindingTrace)
|
||||||
|
|
||||||
useInstance(statementFilter)
|
useInstance(statementFilter)
|
||||||
|
|
||||||
@@ -118,11 +116,10 @@ fun createContainerForLazyBodyResolve(
|
|||||||
bindingTrace: BindingTrace,
|
bindingTrace: BindingTrace,
|
||||||
platform: TargetPlatform,
|
platform: TargetPlatform,
|
||||||
bodyResolveCache: BodyResolveCache,
|
bodyResolveCache: BodyResolveCache,
|
||||||
targetPlatformVersion: TargetPlatformVersion,
|
|
||||||
compilerServices: PlatformDependentCompilerServices,
|
compilerServices: PlatformDependentCompilerServices,
|
||||||
languageVersionSettings: LanguageVersionSettings
|
languageVersionSettings: LanguageVersionSettings
|
||||||
): StorageComponentContainer = createContainer("LazyBodyResolve", compilerServices) {
|
): StorageComponentContainer = createContainer("LazyBodyResolve", compilerServices) {
|
||||||
configureModule(moduleContext, platform, targetPlatformVersion, compilerServices, bindingTrace)
|
configureModule(moduleContext, platform, compilerServices, bindingTrace)
|
||||||
|
|
||||||
useInstance(kotlinCodeAnalyzer)
|
useInstance(kotlinCodeAnalyzer)
|
||||||
useInstance(kotlinCodeAnalyzer.fileScopeProvider)
|
useInstance(kotlinCodeAnalyzer.fileScopeProvider)
|
||||||
@@ -139,13 +136,12 @@ fun createContainerForLazyLocalClassifierAnalyzer(
|
|||||||
bindingTrace: BindingTrace,
|
bindingTrace: BindingTrace,
|
||||||
platform: TargetPlatform,
|
platform: TargetPlatform,
|
||||||
lookupTracker: LookupTracker,
|
lookupTracker: LookupTracker,
|
||||||
targetPlatformVersion: TargetPlatformVersion,
|
|
||||||
languageVersionSettings: LanguageVersionSettings,
|
languageVersionSettings: LanguageVersionSettings,
|
||||||
statementFilter: StatementFilter,
|
statementFilter: StatementFilter,
|
||||||
localClassDescriptorHolder: LocalClassDescriptorHolder,
|
localClassDescriptorHolder: LocalClassDescriptorHolder,
|
||||||
compilerServices: PlatformDependentCompilerServices
|
compilerServices: PlatformDependentCompilerServices
|
||||||
): StorageComponentContainer = createContainer("LocalClassifierAnalyzer", compilerServices) {
|
): StorageComponentContainer = createContainer("LocalClassifierAnalyzer", compilerServices) {
|
||||||
configureModule(moduleContext, platform, targetPlatformVersion, compilerServices, bindingTrace)
|
configureModule(moduleContext, platform, compilerServices, bindingTrace)
|
||||||
|
|
||||||
useInstance(localClassDescriptorHolder)
|
useInstance(localClassDescriptorHolder)
|
||||||
useInstance(lookupTracker)
|
useInstance(lookupTracker)
|
||||||
@@ -173,12 +169,11 @@ fun createContainerForLazyResolve(
|
|||||||
declarationProviderFactory: DeclarationProviderFactory,
|
declarationProviderFactory: DeclarationProviderFactory,
|
||||||
bindingTrace: BindingTrace,
|
bindingTrace: BindingTrace,
|
||||||
platform: TargetPlatform,
|
platform: TargetPlatform,
|
||||||
targetPlatformVersion: TargetPlatformVersion,
|
|
||||||
compilerServices: PlatformDependentCompilerServices,
|
compilerServices: PlatformDependentCompilerServices,
|
||||||
targetEnvironment: TargetEnvironment,
|
targetEnvironment: TargetEnvironment,
|
||||||
languageVersionSettings: LanguageVersionSettings
|
languageVersionSettings: LanguageVersionSettings
|
||||||
): StorageComponentContainer = createContainer("LazyResolve", compilerServices) {
|
): StorageComponentContainer = createContainer("LazyResolve", compilerServices) {
|
||||||
configureModule(moduleContext, platform, targetPlatformVersion, compilerServices, bindingTrace)
|
configureModule(moduleContext, platform, compilerServices, bindingTrace)
|
||||||
|
|
||||||
useInstance(declarationProviderFactory)
|
useInstance(declarationProviderFactory)
|
||||||
useInstance(languageVersionSettings)
|
useInstance(languageVersionSettings)
|
||||||
@@ -192,13 +187,13 @@ fun createContainerForLazyResolve(
|
|||||||
useImpl<SubstitutingScopeProviderImpl>()
|
useImpl<SubstitutingScopeProviderImpl>()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: remove it
|
||||||
fun createLazyResolveSession(moduleContext: ModuleContext, files: Collection<KtFile>): ResolveSession =
|
fun createLazyResolveSession(moduleContext: ModuleContext, files: Collection<KtFile>): ResolveSession =
|
||||||
createContainerForLazyResolve(
|
createContainerForLazyResolve(
|
||||||
moduleContext,
|
moduleContext,
|
||||||
FileBasedDeclarationProviderFactory(moduleContext.storageManager, files),
|
FileBasedDeclarationProviderFactory(moduleContext.storageManager, files),
|
||||||
BindingTraceContext(),
|
BindingTraceContext(),
|
||||||
CommonPlatform,
|
DefaultBuiltInPlatforms.commonPlatform,
|
||||||
TargetPlatformVersion.NoVersion,
|
|
||||||
CommonPlatformCompilerServices,
|
CommonPlatformCompilerServices,
|
||||||
CompilerEnvironment,
|
CompilerEnvironment,
|
||||||
LanguageVersionSettingsImpl.DEFAULT
|
LanguageVersionSettingsImpl.DEFAULT
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import org.jetbrains.kotlin.idea.MainFunctionDetector
|
|||||||
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
|
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
|
||||||
import org.jetbrains.kotlin.name.FqNameUnsafe
|
import org.jetbrains.kotlin.name.FqNameUnsafe
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
import org.jetbrains.kotlin.resolve.descriptorUtil.platform
|
||||||
|
|
||||||
import org.jetbrains.kotlin.resolve.scopes.MemberScope
|
import org.jetbrains.kotlin.resolve.scopes.MemberScope
|
||||||
import java.util.*
|
import java.util.*
|
||||||
@@ -290,7 +291,7 @@ class OverloadResolver(
|
|||||||
if (member1 !is MemberDescriptor || member2 !is MemberDescriptor) return false
|
if (member1 !is MemberDescriptor || member2 !is MemberDescriptor) return false
|
||||||
|
|
||||||
return member1.isActual && member2.isActual &&
|
return member1.isActual && member2.isActual &&
|
||||||
member1.getMultiTargetPlatform() != member2.getMultiTargetPlatform()
|
member1.platform != member2.platform
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun reportRedeclarations(redeclarations: Collection<DeclarationDescriptorNonRoot>) {
|
private fun reportRedeclarations(redeclarations: Collection<DeclarationDescriptorNonRoot>) {
|
||||||
|
|||||||
+4
-4
@@ -9,9 +9,8 @@ import com.intellij.psi.PsiElement
|
|||||||
import org.jetbrains.kotlin.descriptors.ClassifierDescriptor
|
import org.jetbrains.kotlin.descriptors.ClassifierDescriptor
|
||||||
import org.jetbrains.kotlin.diagnostics.Errors
|
import org.jetbrains.kotlin.diagnostics.Errors
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.resolve.MultiTargetPlatform
|
import org.jetbrains.kotlin.resolve.descriptorUtil.platform
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.module
|
import org.jetbrains.kotlin.platform.isCommon
|
||||||
import org.jetbrains.kotlin.resolve.getMultiTargetPlatform
|
|
||||||
import org.jetbrains.kotlin.resolve.multiplatform.isCommonSource
|
import org.jetbrains.kotlin.resolve.multiplatform.isCommonSource
|
||||||
|
|
||||||
class OptionalExpectationUsageChecker : ClassifierUsageChecker {
|
class OptionalExpectationUsageChecker : ClassifierUsageChecker {
|
||||||
@@ -23,8 +22,9 @@ class OptionalExpectationUsageChecker : ClassifierUsageChecker {
|
|||||||
}
|
}
|
||||||
|
|
||||||
val ktFile = element.containingFile as KtFile
|
val ktFile = element.containingFile as KtFile
|
||||||
|
// TODO(dsavvinov): unify for compiler/IDE
|
||||||
// The first part is for the compiler, and the second one is for IDE
|
// The first part is for the compiler, and the second one is for IDE
|
||||||
if (ktFile.isCommonSource != true && targetDescriptor.module.getMultiTargetPlatform() != MultiTargetPlatform.Common) {
|
if (ktFile.isCommonSource != true && !targetDescriptor.platform.isCommon()) {
|
||||||
context.trace.report(Errors.OPTIONAL_DECLARATION_USAGE_IN_NON_COMMON_SOURCE.on(element))
|
context.trace.report(Errors.OPTIONAL_DECLARATION_USAGE_IN_NON_COMMON_SOURCE.on(element))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-3
@@ -18,8 +18,8 @@ package org.jetbrains.kotlin.types.expressions
|
|||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import com.intellij.psi.util.PsiTreeUtil
|
import com.intellij.psi.util.PsiTreeUtil
|
||||||
|
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||||
import org.jetbrains.kotlin.config.TargetPlatformVersion
|
|
||||||
import org.jetbrains.kotlin.container.get
|
import org.jetbrains.kotlin.container.get
|
||||||
import org.jetbrains.kotlin.context.GlobalContext
|
import org.jetbrains.kotlin.context.GlobalContext
|
||||||
import org.jetbrains.kotlin.context.withModule
|
import org.jetbrains.kotlin.context.withModule
|
||||||
@@ -64,7 +64,6 @@ class LocalClassifierAnalyzer(
|
|||||||
private val compilerServices: PlatformDependentCompilerServices,
|
private val compilerServices: PlatformDependentCompilerServices,
|
||||||
private val lookupTracker: LookupTracker,
|
private val lookupTracker: LookupTracker,
|
||||||
private val supertypeLoopChecker: SupertypeLoopChecker,
|
private val supertypeLoopChecker: SupertypeLoopChecker,
|
||||||
private val targetPlatformVersion: TargetPlatformVersion,
|
|
||||||
private val languageVersionSettings: LanguageVersionSettings,
|
private val languageVersionSettings: LanguageVersionSettings,
|
||||||
private val delegationFilter: DelegationFilter,
|
private val delegationFilter: DelegationFilter,
|
||||||
private val wrappedTypeFactory: WrappedTypeFactory,
|
private val wrappedTypeFactory: WrappedTypeFactory,
|
||||||
@@ -84,7 +83,6 @@ class LocalClassifierAnalyzer(
|
|||||||
context.trace,
|
context.trace,
|
||||||
platform,
|
platform,
|
||||||
lookupTracker,
|
lookupTracker,
|
||||||
targetPlatformVersion,
|
|
||||||
languageVersionSettings,
|
languageVersionSettings,
|
||||||
context.statementFilter,
|
context.statementFilter,
|
||||||
LocalClassDescriptorHolder(
|
LocalClassDescriptorHolder(
|
||||||
|
|||||||
+21
-11
@@ -39,6 +39,11 @@ 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.js.JsPlatforms
|
||||||
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||||
|
import org.jetbrains.kotlin.platform.konan.KonanPlatforms
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.resolve.*
|
import org.jetbrains.kotlin.resolve.*
|
||||||
import org.jetbrains.kotlin.resolve.calls.model.MutableResolvedCall
|
import org.jetbrains.kotlin.resolve.calls.model.MutableResolvedCall
|
||||||
@@ -166,13 +171,13 @@ abstract class AbstractDiagnosticsTest : BaseDiagnosticsTest() {
|
|||||||
val actualText = StringBuilder()
|
val actualText = StringBuilder()
|
||||||
for (testFile in files) {
|
for (testFile in files) {
|
||||||
val module = testFile.module
|
val module = testFile.module
|
||||||
val isCommonModule = modules[module]!!.getMultiTargetPlatform() == MultiTargetPlatform.Common
|
val isCommonModule = modules[module]!!.platform.isCommon()
|
||||||
val implementingModules =
|
val implementingModules =
|
||||||
if (!isCommonModule) emptyList()
|
if (!isCommonModule) emptyList()
|
||||||
else modules.entries.filter { (testModule) -> module in testModule?.getDependencies().orEmpty() }
|
else modules.entries.filter { (testModule) -> module in testModule?.getDependencies().orEmpty() }
|
||||||
val implementingModulesBindings = implementingModules.mapNotNull { (testModule, moduleDescriptor) ->
|
val implementingModulesBindings = implementingModules.mapNotNull { (testModule, moduleDescriptor) ->
|
||||||
val platform = moduleDescriptor.getCapability(MultiTargetPlatform.CAPABILITY)
|
val platform = moduleDescriptor.platform
|
||||||
if (platform is MultiTargetPlatform.Specific) platform to moduleBindings[testModule]!!
|
if (platform != null && !platform.isCommon()) platform to moduleBindings[testModule]!!
|
||||||
else null
|
else null
|
||||||
}
|
}
|
||||||
val moduleDescriptor = modules[module]!!
|
val moduleDescriptor = modules[module]!!
|
||||||
@@ -356,12 +361,11 @@ abstract class AbstractDiagnosticsTest : BaseDiagnosticsTest() {
|
|||||||
|
|
||||||
val moduleDescriptor = moduleContext.module as ModuleDescriptorImpl
|
val moduleDescriptor = moduleContext.module as ModuleDescriptorImpl
|
||||||
|
|
||||||
val platform = moduleDescriptor.getMultiTargetPlatform()
|
val platform = moduleDescriptor.platform
|
||||||
if (platform == MultiTargetPlatform.Common) {
|
if (platform.isCommon()) {
|
||||||
return CommonResolverForModuleFactory.analyzeFiles(
|
return CommonResolverForModuleFactory.analyzeFiles(
|
||||||
files, moduleDescriptor.name, true, languageVersionSettings,
|
files, moduleDescriptor.name, true, languageVersionSettings,
|
||||||
mapOf(
|
mapOf(
|
||||||
MultiTargetPlatform.CAPABILITY to MultiTargetPlatform.Common,
|
|
||||||
MODULE_FILES to files
|
MODULE_FILES to files
|
||||||
)
|
)
|
||||||
) { _ ->
|
) { _ ->
|
||||||
@@ -377,6 +381,7 @@ abstract class AbstractDiagnosticsTest : BaseDiagnosticsTest() {
|
|||||||
val moduleClassResolver = SingleModuleClassResolver()
|
val moduleClassResolver = SingleModuleClassResolver()
|
||||||
|
|
||||||
val container = createContainerForTopDownAnalyzerForJvm(
|
val container = createContainerForTopDownAnalyzerForJvm(
|
||||||
|
JvmPlatforms.jvmPlatformByTargetVersion(jvmTarget), // TODO(dsavvinov): do not pass JvmTarget around
|
||||||
moduleContext,
|
moduleContext,
|
||||||
moduleTrace,
|
moduleTrace,
|
||||||
FileBasedDeclarationProviderFactory(moduleContext.storageManager, files),
|
FileBasedDeclarationProviderFactory(moduleContext.storageManager, files),
|
||||||
@@ -386,7 +391,6 @@ abstract class AbstractDiagnosticsTest : BaseDiagnosticsTest() {
|
|||||||
environment.createPackagePartProvider(moduleContentScope),
|
environment.createPackagePartProvider(moduleContentScope),
|
||||||
moduleClassResolver,
|
moduleClassResolver,
|
||||||
CompilerEnvironment,
|
CompilerEnvironment,
|
||||||
jvmTarget,
|
|
||||||
languageVersionSettings
|
languageVersionSettings
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -417,7 +421,7 @@ abstract class AbstractDiagnosticsTest : BaseDiagnosticsTest() {
|
|||||||
// E.g. "<!JVM:ACTUAL_WITHOUT_EXPECT!>...<!>
|
// E.g. "<!JVM:ACTUAL_WITHOUT_EXPECT!>...<!>
|
||||||
val result = ArrayList<KtFile>(0)
|
val result = ArrayList<KtFile>(0)
|
||||||
for (dependency in dependencies) {
|
for (dependency in dependencies) {
|
||||||
if (dependency.getCapability(MultiTargetPlatform.CAPABILITY) == MultiTargetPlatform.Common) {
|
if (dependency.platform.isCommon()) {
|
||||||
val files = dependency.getCapability(MODULE_FILES)
|
val files = dependency.getCapability(MODULE_FILES)
|
||||||
?: error("MODULE_FILES should have been set for the common module: $dependency")
|
?: error("MODULE_FILES should have been set for the common module: $dependency")
|
||||||
result.addAll(files)
|
result.addAll(files)
|
||||||
@@ -585,10 +589,16 @@ abstract class AbstractDiagnosticsTest : BaseDiagnosticsTest() {
|
|||||||
emptyList()
|
emptyList()
|
||||||
|
|
||||||
protected open fun createModule(moduleName: String, storageManager: StorageManager): ModuleDescriptorImpl {
|
protected open fun createModule(moduleName: String, storageManager: StorageManager): ModuleDescriptorImpl {
|
||||||
val nameSuffix = moduleName.substringAfterLast("-", "")
|
val nameSuffix = moduleName.substringAfterLast("-", "").toUpperCase()
|
||||||
val platform =
|
val platform =
|
||||||
if (nameSuffix.isEmpty()) null
|
when {
|
||||||
else if (nameSuffix == "common") MultiTargetPlatform.Common else MultiTargetPlatform.Specific(nameSuffix.toUpperCase())
|
nameSuffix.isEmpty() -> null // TODO(dsavvinov): this leads to 'null'-platform in ModuleDescriptor
|
||||||
|
nameSuffix == "COMMON" -> CommonPlatforms.defaultCommonPlatform
|
||||||
|
nameSuffix == "JVM" -> JvmPlatforms.defaultJvmPlatform // TODO(dsavvinov): determine JvmTarget precisely
|
||||||
|
nameSuffix == "JS" -> JsPlatforms.defaultJsPlatform
|
||||||
|
nameSuffix == "NATIVE" -> KonanPlatforms.defaultKonanPlatform
|
||||||
|
else -> throw IllegalStateException("Can't determine platform by name $nameSuffix")
|
||||||
|
}
|
||||||
val builtIns = JvmBuiltIns(storageManager, JvmBuiltIns.Kind.FROM_CLASS_LOADER)
|
val builtIns = JvmBuiltIns(storageManager, JvmBuiltIns.Kind.FROM_CLASS_LOADER)
|
||||||
return ModuleDescriptorImpl(Name.special("<$moduleName>"), storageManager, builtIns, platform)
|
return ModuleDescriptorImpl(Name.special("<$moduleName>"), storageManager, builtIns, platform)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ import org.jetbrains.kotlin.name.FqName
|
|||||||
import org.jetbrains.kotlin.psi.KtDeclaration
|
import org.jetbrains.kotlin.psi.KtDeclaration
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
import org.jetbrains.kotlin.resolve.MultiTargetPlatform
|
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowValueFactoryImpl
|
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowValueFactoryImpl
|
||||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||||
import org.jetbrains.kotlin.utils.addIfNotNull
|
import org.jetbrains.kotlin.utils.addIfNotNull
|
||||||
@@ -223,7 +223,7 @@ abstract class BaseDiagnosticsTest : KotlinMultiFileTestWithJava<TestModule, Tes
|
|||||||
|
|
||||||
fun getActualText(
|
fun getActualText(
|
||||||
bindingContext: BindingContext,
|
bindingContext: BindingContext,
|
||||||
implementingModulesBindings: List<Pair<MultiTargetPlatform, BindingContext>>,
|
implementingModulesBindings: List<Pair<TargetPlatform, BindingContext>>,
|
||||||
actualText: StringBuilder,
|
actualText: StringBuilder,
|
||||||
skipJvmSignatureDiagnostics: Boolean,
|
skipJvmSignatureDiagnostics: Boolean,
|
||||||
languageVersionSettings: LanguageVersionSettings,
|
languageVersionSettings: LanguageVersionSettings,
|
||||||
|
|||||||
@@ -7,15 +7,15 @@ package org.jetbrains.kotlin.fir
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.analyzer.ModuleInfo
|
import org.jetbrains.kotlin.analyzer.ModuleInfo
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||||
import org.jetbrains.kotlin.resolve.PlatformDependentCompilerServices
|
import org.jetbrains.kotlin.resolve.PlatformDependentCompilerServices
|
||||||
import org.jetbrains.kotlin.resolve.TargetPlatform
|
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
|
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformCompilerServices
|
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformCompilerServices
|
||||||
|
|
||||||
class FirTestModuleInfo(
|
class FirTestModuleInfo(
|
||||||
override val name: Name = Name.identifier("TestModule"),
|
override val name: Name = Name.identifier("TestModule"),
|
||||||
val dependencies: MutableList<ModuleInfo> = mutableListOf(),
|
val dependencies: MutableList<ModuleInfo> = mutableListOf(),
|
||||||
override val platform: TargetPlatform = JvmPlatform,
|
override val platform: TargetPlatform = JvmPlatforms.defaultJvmPlatform,
|
||||||
override val compilerServices: PlatformDependentCompilerServices = JvmPlatformCompilerServices
|
override val compilerServices: PlatformDependentCompilerServices = JvmPlatformCompilerServices
|
||||||
) : ModuleInfo {
|
) : ModuleInfo {
|
||||||
override fun dependencies(): List<ModuleInfo> = dependencies
|
override fun dependencies(): List<ModuleInfo> = dependencies
|
||||||
|
|||||||
+5
-5
@@ -22,17 +22,17 @@ import org.jetbrains.kotlin.analyzer.LanguageSettingsProvider
|
|||||||
import org.jetbrains.kotlin.analyzer.ModuleContent
|
import org.jetbrains.kotlin.analyzer.ModuleContent
|
||||||
import org.jetbrains.kotlin.analyzer.ModuleInfo
|
import org.jetbrains.kotlin.analyzer.ModuleInfo
|
||||||
import org.jetbrains.kotlin.analyzer.ResolverForProjectImpl
|
import org.jetbrains.kotlin.analyzer.ResolverForProjectImpl
|
||||||
import org.jetbrains.kotlin.analyzer.common.CommonPlatform
|
|
||||||
import org.jetbrains.kotlin.analyzer.common.CommonPlatformCompilerServices
|
|
||||||
import org.jetbrains.kotlin.container.get
|
import org.jetbrains.kotlin.container.get
|
||||||
import org.jetbrains.kotlin.context.ProjectContext
|
import org.jetbrains.kotlin.context.ProjectContext
|
||||||
import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
|
import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.resolve.PlatformDependentCompilerServices
|
import org.jetbrains.kotlin.resolve.PlatformDependentCompilerServices
|
||||||
import org.jetbrains.kotlin.resolve.TargetPlatform
|
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||||
import org.jetbrains.kotlin.resolve.jvm.JvmResolverForModuleFactory
|
import org.jetbrains.kotlin.resolve.jvm.JvmResolverForModuleFactory
|
||||||
import org.jetbrains.kotlin.resolve.jvm.JvmPlatformParameters
|
import org.jetbrains.kotlin.resolve.jvm.JvmPlatformParameters
|
||||||
|
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformCompilerServices
|
||||||
|
|
||||||
fun createResolveSessionForFiles(
|
fun createResolveSessionForFiles(
|
||||||
project: Project,
|
project: Project,
|
||||||
@@ -67,8 +67,8 @@ private class TestModule(val dependsOnBuiltIns: Boolean) : ModuleInfo {
|
|||||||
ModuleInfo.DependencyOnBuiltIns.NONE
|
ModuleInfo.DependencyOnBuiltIns.NONE
|
||||||
|
|
||||||
override val platform: TargetPlatform
|
override val platform: TargetPlatform
|
||||||
get() = CommonPlatform
|
get() = JvmPlatforms.defaultJvmPlatform
|
||||||
|
|
||||||
override val compilerServices: PlatformDependentCompilerServices?
|
override val compilerServices: PlatformDependentCompilerServices?
|
||||||
get() = CommonPlatformCompilerServices
|
get() = JvmPlatformCompilerServices
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -28,10 +28,10 @@ import org.jetbrains.kotlin.descriptors.*;
|
|||||||
import org.jetbrains.kotlin.descriptors.impl.SubpackagesScope;
|
import org.jetbrains.kotlin.descriptors.impl.SubpackagesScope;
|
||||||
import org.jetbrains.kotlin.jvm.compiler.ExpectedLoadErrorsUtil;
|
import org.jetbrains.kotlin.jvm.compiler.ExpectedLoadErrorsUtil;
|
||||||
import org.jetbrains.kotlin.name.FqName;
|
import org.jetbrains.kotlin.name.FqName;
|
||||||
|
import org.jetbrains.kotlin.platform.TargetPlatformKt;
|
||||||
import org.jetbrains.kotlin.renderer.*;
|
import org.jetbrains.kotlin.renderer.*;
|
||||||
import org.jetbrains.kotlin.resolve.DescriptorUtils;
|
import org.jetbrains.kotlin.resolve.DescriptorUtils;
|
||||||
import org.jetbrains.kotlin.resolve.MemberComparator;
|
import org.jetbrains.kotlin.resolve.MemberComparator;
|
||||||
import org.jetbrains.kotlin.resolve.MultiTargetPlatform;
|
|
||||||
import org.jetbrains.kotlin.resolve.scopes.ChainedMemberScope;
|
import org.jetbrains.kotlin.resolve.scopes.ChainedMemberScope;
|
||||||
import org.jetbrains.kotlin.resolve.scopes.MemberScope;
|
import org.jetbrains.kotlin.resolve.scopes.MemberScope;
|
||||||
import org.jetbrains.kotlin.test.KotlinTestUtils;
|
import org.jetbrains.kotlin.test.KotlinTestUtils;
|
||||||
@@ -243,7 +243,7 @@ public class RecursiveDescriptorComparator {
|
|||||||
|
|
||||||
// 'expected' declarations do not belong to the platform-specific module, even though they participate in the analysis
|
// 'expected' declarations do not belong to the platform-specific module, even though they participate in the analysis
|
||||||
if (descriptor instanceof MemberDescriptor && ((MemberDescriptor) descriptor).isExpect() &&
|
if (descriptor instanceof MemberDescriptor && ((MemberDescriptor) descriptor).isExpect() &&
|
||||||
module.getCapability(MultiTargetPlatform.CAPABILITY) != MultiTargetPlatform.Common.INSTANCE) return false;
|
!TargetPlatformKt.isCommon(module.getPlatform())) return false;
|
||||||
|
|
||||||
return module.equals(DescriptorUtils.getContainingModule(descriptor));
|
return module.equals(DescriptorUtils.getContainingModule(descriptor));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,6 @@
|
|||||||
package org.jetbrains.kotlin.tests.di
|
package org.jetbrains.kotlin.tests.di
|
||||||
|
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import org.jetbrains.kotlin.config.JvmTarget
|
|
||||||
import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
|
import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
|
||||||
import org.jetbrains.kotlin.container.StorageComponentContainer
|
import org.jetbrains.kotlin.container.StorageComponentContainer
|
||||||
import org.jetbrains.kotlin.container.getValue
|
import org.jetbrains.kotlin.container.getValue
|
||||||
@@ -26,9 +25,9 @@ import org.jetbrains.kotlin.container.useInstance
|
|||||||
import org.jetbrains.kotlin.context.ModuleContext
|
import org.jetbrains.kotlin.context.ModuleContext
|
||||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||||
import org.jetbrains.kotlin.frontend.di.configureModule
|
import org.jetbrains.kotlin.frontend.di.configureModule
|
||||||
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||||
import org.jetbrains.kotlin.resolve.*
|
import org.jetbrains.kotlin.resolve.*
|
||||||
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowValueFactory
|
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowValueFactory
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
|
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformCompilerServices
|
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformCompilerServices
|
||||||
import org.jetbrains.kotlin.types.SubstitutingScopeProviderImpl
|
import org.jetbrains.kotlin.types.SubstitutingScopeProviderImpl
|
||||||
import org.jetbrains.kotlin.types.expressions.ExpressionTypingServices
|
import org.jetbrains.kotlin.types.expressions.ExpressionTypingServices
|
||||||
@@ -36,7 +35,8 @@ import org.jetbrains.kotlin.types.expressions.FakeCallResolver
|
|||||||
|
|
||||||
fun createContainerForTests(project: Project, module: ModuleDescriptor): ContainerForTests {
|
fun createContainerForTests(project: Project, module: ModuleDescriptor): ContainerForTests {
|
||||||
return ContainerForTests(createContainer("Tests", JvmPlatformCompilerServices) {
|
return ContainerForTests(createContainer("Tests", JvmPlatformCompilerServices) {
|
||||||
configureModule(ModuleContext(module, project), JvmPlatform, JvmTarget.DEFAULT, JvmPlatformCompilerServices)
|
configureModule(ModuleContext(module, project),
|
||||||
|
JvmPlatforms.defaultJvmPlatform, JvmPlatformCompilerServices)
|
||||||
useInstance(LanguageVersionSettingsImpl.DEFAULT)
|
useInstance(LanguageVersionSettingsImpl.DEFAULT)
|
||||||
useImpl<SubstitutingScopeProviderImpl>()
|
useImpl<SubstitutingScopeProviderImpl>()
|
||||||
useImpl<AnnotationResolverImpl>()
|
useImpl<AnnotationResolverImpl>()
|
||||||
|
|||||||
+3
-3
@@ -35,13 +35,13 @@ import org.jetbrains.kotlin.name.FqName
|
|||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.resolve.PlatformDependentCompilerServices
|
import org.jetbrains.kotlin.resolve.PlatformDependentCompilerServices
|
||||||
import org.jetbrains.kotlin.resolve.TargetPlatform
|
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||||
import org.jetbrains.kotlin.resolve.constants.EnumValue
|
import org.jetbrains.kotlin.resolve.constants.EnumValue
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.annotationClass
|
import org.jetbrains.kotlin.resolve.descriptorUtil.annotationClass
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.module
|
import org.jetbrains.kotlin.resolve.descriptorUtil.module
|
||||||
import org.jetbrains.kotlin.resolve.jvm.JvmResolverForModuleFactory
|
import org.jetbrains.kotlin.resolve.jvm.JvmResolverForModuleFactory
|
||||||
import org.jetbrains.kotlin.resolve.jvm.JvmPlatformParameters
|
import org.jetbrains.kotlin.resolve.jvm.JvmPlatformParameters
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
|
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformCompilerServices
|
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformCompilerServices
|
||||||
import org.jetbrains.kotlin.test.ConfigurationKind
|
import org.jetbrains.kotlin.test.ConfigurationKind
|
||||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||||
@@ -62,7 +62,7 @@ class MultiModuleJavaAnalysisCustomTest : KtUsefulTestCase() {
|
|||||||
override val name = Name.special("<$_name>")
|
override val name = Name.special("<$_name>")
|
||||||
|
|
||||||
override val platform: TargetPlatform
|
override val platform: TargetPlatform
|
||||||
get() = JvmPlatform
|
get() = JvmPlatforms.defaultJvmPlatform
|
||||||
|
|
||||||
override val compilerServices: PlatformDependentCompilerServices?
|
override val compilerServices: PlatformDependentCompilerServices?
|
||||||
get() = JvmPlatformCompilerServices
|
get() = JvmPlatformCompilerServices
|
||||||
|
|||||||
@@ -1,25 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2017 JetBrains s.r.o.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.config
|
|
||||||
|
|
||||||
import org.jetbrains.kotlin.utils.DescriptionAware
|
|
||||||
|
|
||||||
interface TargetPlatformVersion : DescriptionAware {
|
|
||||||
object NoVersion : TargetPlatformVersion {
|
|
||||||
override val description = ""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -19,6 +19,7 @@ package org.jetbrains.kotlin.descriptors
|
|||||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||||
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.platform.TargetPlatform
|
||||||
|
|
||||||
interface ModuleDescriptor : DeclarationDescriptor {
|
interface ModuleDescriptor : DeclarationDescriptor {
|
||||||
override fun getContainingDeclaration(): DeclarationDescriptor? = null
|
override fun getContainingDeclaration(): DeclarationDescriptor? = null
|
||||||
@@ -30,6 +31,10 @@ interface ModuleDescriptor : DeclarationDescriptor {
|
|||||||
*/
|
*/
|
||||||
val stableName: Name?
|
val stableName: Name?
|
||||||
|
|
||||||
|
// NB: this field should actually be non-null, but making it so implies a LOT of work, so we postpone it for a moment
|
||||||
|
// TODO: make it non-null
|
||||||
|
val platform: TargetPlatform?
|
||||||
|
|
||||||
fun shouldSeeInternalsOf(targetModule: ModuleDescriptor): Boolean
|
fun shouldSeeInternalsOf(targetModule: ModuleDescriptor): Boolean
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: DeclarationDescriptorVisitor<R, D>, data: D): R {
|
override fun <R, D> accept(visitor: DeclarationDescriptorVisitor<R, D>, data: D): R {
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.descriptors.PackageViewDescriptor
|
|||||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
||||||
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.resolve.MultiTargetPlatform
|
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
import org.jetbrains.kotlin.storage.StorageManager
|
import org.jetbrains.kotlin.storage.StorageManager
|
||||||
import org.jetbrains.kotlin.utils.sure
|
import org.jetbrains.kotlin.utils.sure
|
||||||
import java.lang.IllegalArgumentException
|
import java.lang.IllegalArgumentException
|
||||||
@@ -34,8 +34,8 @@ class ModuleDescriptorImpl @JvmOverloads constructor(
|
|||||||
private val storageManager: StorageManager,
|
private val storageManager: StorageManager,
|
||||||
override val builtIns: KotlinBuiltIns,
|
override val builtIns: KotlinBuiltIns,
|
||||||
// May be null in compiler context, should be not-null in IDE context
|
// May be null in compiler context, should be not-null in IDE context
|
||||||
multiTargetPlatform: MultiTargetPlatform? = null,
|
override val platform: TargetPlatform? = null,
|
||||||
capabilities: Map<ModuleDescriptor.Capability<*>, Any?> = emptyMap(),
|
private val capabilities: Map<ModuleDescriptor.Capability<*>, Any?> = emptyMap(),
|
||||||
override val stableName: Name? = null
|
override val stableName: Name? = null
|
||||||
) : DeclarationDescriptorImpl(Annotations.EMPTY, moduleName), ModuleDescriptor {
|
) : DeclarationDescriptorImpl(Annotations.EMPTY, moduleName), ModuleDescriptor {
|
||||||
init {
|
init {
|
||||||
@@ -44,8 +44,6 @@ class ModuleDescriptorImpl @JvmOverloads constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private val capabilities = capabilities + (multiTargetPlatform?.let { mapOf(MultiTargetPlatform.CAPABILITY to it) } ?: emptyMap())
|
|
||||||
|
|
||||||
private var dependencies: ModuleDependencies? = null
|
private var dependencies: ModuleDependencies? = null
|
||||||
private var packageFragmentProviderForModuleContent: PackageFragmentProvider? = null
|
private var packageFragmentProviderForModuleContent: PackageFragmentProvider? = null
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,68 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.platform
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Core abstraction of Platform API, represents a collection of platforms.
|
||||||
|
*
|
||||||
|
* This is the primarily abstraction intended to use in the most part of API, as, usually,
|
||||||
|
* pretty much anything that may have a platform, may have a several platforms as well in the
|
||||||
|
* context of multiplatform projects.
|
||||||
|
*
|
||||||
|
* Please, use it over the [SimplePlatform] unless you're absolutely sure what you're doing.
|
||||||
|
*
|
||||||
|
* NB. Even in cases, where some part of logic makes sense only for a particular platform (e.g., JVM),
|
||||||
|
* it still can be applicable for [TargetPlatform]s with [componentPlatforms] > 1, e.g. when it consists
|
||||||
|
* of two version of JDK, JDK and Android, several versions of Android API, etc.
|
||||||
|
*/
|
||||||
|
data class TargetPlatform(val componentPlatforms: Set<SimplePlatform>) : Collection<SimplePlatform> by componentPlatforms {
|
||||||
|
init {
|
||||||
|
if (componentPlatforms.isEmpty()) throw IllegalArgumentException("Don't instantiate TargetPlatform with empty set of platforms")
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun toString(): String = presentableDescription
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Core abstraction of Platform API, represents exactly one platform.
|
||||||
|
*
|
||||||
|
* API guarantees:
|
||||||
|
*
|
||||||
|
* - direct inheritors are well-known and represent three major platforms supported at the moment (JVM, JS, Native)
|
||||||
|
*
|
||||||
|
* - exact enumeration of all inheritors isn't available at the compile time, see [CommonPlatforms]
|
||||||
|
*
|
||||||
|
* - each implementation should support equality in a broad sense of "absolutely the same platform"
|
||||||
|
*
|
||||||
|
* - it is _prohibited_ to create instances of [SimplePlatform] in the client's code, use respective factory instance (e.g., [JvmPlatforms])
|
||||||
|
* to get instances of platforms
|
||||||
|
*
|
||||||
|
* Ideally, each specific subtype should be either a data class or singleton.
|
||||||
|
*/
|
||||||
|
abstract class SimplePlatform(val platformName: String) {
|
||||||
|
override fun toString(): String = platformName
|
||||||
|
|
||||||
|
/** See KDoc for [TargetPlatform.oldFashionedDescription] */
|
||||||
|
abstract val oldFashionedDescription: String
|
||||||
|
|
||||||
|
// FIXME(dsavvinov): hack to allow injection inject JvmTarget into container.
|
||||||
|
// Proper fix would be to rewrite clients to get JdkPlatform from container, and pull JvmTarget from it
|
||||||
|
// (this will also remove need in TargetPlatformVersion as the whole, and, in particular, ugly passing
|
||||||
|
// of TargetPlatformVersion.NoVersion in non-JVM code)
|
||||||
|
open val targetPlatformVersion: TargetPlatformVersion = TargetPlatformVersion.NoVersion
|
||||||
|
}
|
||||||
|
|
||||||
|
interface TargetPlatformVersion {
|
||||||
|
val description: String
|
||||||
|
|
||||||
|
object NoVersion : TargetPlatformVersion {
|
||||||
|
override val description = ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun TargetPlatform?.isCommon(): Boolean = this != null && this.size > 1
|
||||||
|
|
||||||
|
fun SimplePlatform.toTargetPlatform(): TargetPlatform = TargetPlatform(setOf(this))
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
||||||
|
* that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.platform
|
||||||
|
|
||||||
|
inline fun <reified T : SimplePlatform> TargetPlatform.subplatformOfType(): T? = componentPlatforms.filterIsInstance<T>().singleOrNull()
|
||||||
|
fun <T> TargetPlatform.subplatformOfType(klass: Class<T>): T? = componentPlatforms.filterIsInstance(klass).singleOrNull()
|
||||||
|
|
||||||
|
inline fun <reified T : SimplePlatform> TargetPlatform?.has(): Boolean = this != null && subplatformOfType<T>() != null
|
||||||
|
fun <T> TargetPlatform?.has(klass: Class<T>): Boolean = this != null && subplatformOfType(klass) != null
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns human-readable description, mapping multiplatform to 'Common (experimental)',
|
||||||
|
* as well as maintaining some quirks of the previous representation, like trailing whitespaces
|
||||||
|
*
|
||||||
|
* It is needed mainly for backwards compatibility, because some subsystem actually
|
||||||
|
* managed to rely on the format of that string. In particular, 'facetSerialization.kt' uses
|
||||||
|
* those string as keys in serialized `.iml`-file, and changing format of that string (including
|
||||||
|
* trimming pointless whitespaces) leads to incorrectly deserialized facets.
|
||||||
|
*
|
||||||
|
* New clients are encouraged to use [presentableDescription] description instead, as it
|
||||||
|
* also provides better description for multiplatforms.
|
||||||
|
*/
|
||||||
|
val TargetPlatform.oldFashionedDescription: String
|
||||||
|
get() = if (this.isCommon()) "Common (experimental) " else this.single().oldFashionedDescription
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Renders multiplatform in form
|
||||||
|
* '$PLATFORM_1 / $PLATFORM_2 / ...'
|
||||||
|
* e.g.
|
||||||
|
* 'JVM (1.8) / JS / Native'
|
||||||
|
*/
|
||||||
|
val TargetPlatform.presentableDescription: String
|
||||||
|
get() = componentPlatforms.joinToString(separator = "/")
|
||||||
@@ -19,6 +19,7 @@ import org.jetbrains.kotlin.name.FqNameUnsafe
|
|||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||||
import org.jetbrains.kotlin.resolve.DescriptorUtils.getContainingClass
|
import org.jetbrains.kotlin.resolve.DescriptorUtils.getContainingClass
|
||||||
|
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
import org.jetbrains.kotlin.resolve.constants.ConstantValue
|
import org.jetbrains.kotlin.resolve.constants.ConstantValue
|
||||||
import org.jetbrains.kotlin.resolve.constants.EnumValue
|
import org.jetbrains.kotlin.resolve.constants.EnumValue
|
||||||
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
|
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
|
||||||
@@ -57,6 +58,9 @@ val DeclarationDescriptor.isExtension: Boolean
|
|||||||
val DeclarationDescriptor.module: ModuleDescriptor
|
val DeclarationDescriptor.module: ModuleDescriptor
|
||||||
get() = DescriptorUtils.getContainingModule(this)
|
get() = DescriptorUtils.getContainingModule(this)
|
||||||
|
|
||||||
|
val DeclarationDescriptor.platform: TargetPlatform?
|
||||||
|
get() = module.platform
|
||||||
|
|
||||||
fun ModuleDescriptor.resolveTopLevelClass(topLevelClassFqName: FqName, location: LookupLocation): ClassDescriptor? {
|
fun ModuleDescriptor.resolveTopLevelClass(topLevelClassFqName: FqName, location: LookupLocation): ClassDescriptor? {
|
||||||
assert(!topLevelClassFqName.isRoot)
|
assert(!topLevelClassFqName.isRoot)
|
||||||
return getPackage(topLevelClassFqName.parent()).memberScope.getContributedClassifier(
|
return getPackage(topLevelClassFqName.parent()).memberScope.getContributedClassifier(
|
||||||
|
|||||||
@@ -1,47 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2017 JetBrains s.r.o.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.resolve
|
|
||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.MemberDescriptor
|
|
||||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.module
|
|
||||||
|
|
||||||
sealed class MultiTargetPlatform : Comparable<MultiTargetPlatform> {
|
|
||||||
object Common : MultiTargetPlatform() {
|
|
||||||
override fun compareTo(other: MultiTargetPlatform): Int =
|
|
||||||
if (other is Common) 0 else -1
|
|
||||||
}
|
|
||||||
|
|
||||||
data class Specific(val platform: String) : MultiTargetPlatform() {
|
|
||||||
override fun compareTo(other: MultiTargetPlatform): Int =
|
|
||||||
when (other) {
|
|
||||||
is Common -> 1
|
|
||||||
is Specific -> platform.compareTo(other.platform)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
@JvmField
|
|
||||||
val CAPABILITY = ModuleDescriptor.Capability<MultiTargetPlatform>("MULTI_TARGET_PLATFORM")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun ModuleDescriptor.getMultiTargetPlatform(): MultiTargetPlatform? =
|
|
||||||
module.getCapability(MultiTargetPlatform.CAPABILITY)
|
|
||||||
|
|
||||||
fun MemberDescriptor.getMultiTargetPlatform(): String? =
|
|
||||||
(module.getMultiTargetPlatform() as? MultiTargetPlatform.Specific)?.platform
|
|
||||||
@@ -30,6 +30,7 @@ import org.jetbrains.kotlin.descriptors.impl.TypeParameterDescriptorImpl;
|
|||||||
import org.jetbrains.kotlin.incremental.components.LookupLocation;
|
import org.jetbrains.kotlin.incremental.components.LookupLocation;
|
||||||
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.platform.TargetPlatform;
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.DescriptorUtilsKt;
|
import org.jetbrains.kotlin.resolve.descriptorUtil.DescriptorUtilsKt;
|
||||||
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter;
|
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter;
|
||||||
import org.jetbrains.kotlin.resolve.scopes.MemberScope;
|
import org.jetbrains.kotlin.resolve.scopes.MemberScope;
|
||||||
@@ -80,6 +81,12 @@ public class ErrorUtils {
|
|||||||
return Name.special("<ERROR MODULE>");
|
return Name.special("<ERROR MODULE>");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public TargetPlatform getPlatform() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public PackageViewDescriptor getPackage(@NotNull FqName fqName) {
|
public PackageViewDescriptor getPackage(@NotNull FqName fqName) {
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ import com.intellij.psi.PsiFile
|
|||||||
import org.jetbrains.kotlin.analyzer.ModuleInfo
|
import org.jetbrains.kotlin.analyzer.ModuleInfo
|
||||||
import org.jetbrains.kotlin.idea.resolve.ResolutionFacade
|
import org.jetbrains.kotlin.idea.resolve.ResolutionFacade
|
||||||
import org.jetbrains.kotlin.psi.KtElement
|
import org.jetbrains.kotlin.psi.KtElement
|
||||||
import org.jetbrains.kotlin.resolve.TargetPlatform
|
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
import org.jetbrains.kotlin.resolve.diagnostics.KotlinSuppressCache
|
import org.jetbrains.kotlin.resolve.diagnostics.KotlinSuppressCache
|
||||||
|
|
||||||
interface KotlinCacheService {
|
interface KotlinCacheService {
|
||||||
|
|||||||
+4
-4
@@ -51,6 +51,7 @@ import org.jetbrains.kotlin.incremental.components.NoLookupLocation
|
|||||||
import org.jetbrains.kotlin.lexer.KtTokens
|
import org.jetbrains.kotlin.lexer.KtTokens
|
||||||
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.platform.jvm.JvmPlatforms
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.getElementTextWithContext
|
import org.jetbrains.kotlin.psi.psiUtil.getElementTextWithContext
|
||||||
import org.jetbrains.kotlin.resolve.*
|
import org.jetbrains.kotlin.resolve.*
|
||||||
@@ -63,7 +64,6 @@ import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfoFactory
|
|||||||
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowValueFactory
|
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowValueFactory
|
||||||
import org.jetbrains.kotlin.resolve.calls.util.CallMaker
|
import org.jetbrains.kotlin.resolve.calls.util.CallMaker
|
||||||
import org.jetbrains.kotlin.resolve.constants.evaluate.ConstantExpressionEvaluator
|
import org.jetbrains.kotlin.resolve.constants.evaluate.ConstantExpressionEvaluator
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
|
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformCompilerServices
|
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformCompilerServices
|
||||||
import org.jetbrains.kotlin.resolve.lazy.FileScopeProviderImpl
|
import org.jetbrains.kotlin.resolve.lazy.FileScopeProviderImpl
|
||||||
import org.jetbrains.kotlin.resolve.lazy.ForceResolveUtil
|
import org.jetbrains.kotlin.resolve.lazy.ForceResolveUtil
|
||||||
@@ -306,10 +306,10 @@ internal object IDELightClassContexts {
|
|||||||
|
|
||||||
val moduleInfo = files.first().getModuleInfo()
|
val moduleInfo = files.first().getModuleInfo()
|
||||||
val container = createContainer("LightClassStub", JvmPlatformCompilerServices) {
|
val container = createContainer("LightClassStub", JvmPlatformCompilerServices) {
|
||||||
val jvmTarget = IDELanguageSettingsProvider.getTargetPlatform(moduleInfo, project) as? JvmTarget
|
val jvmTarget = IDELanguageSettingsProvider.getTargetPlatform(moduleInfo, project) as? JvmTarget ?: JvmTarget.DEFAULT
|
||||||
configureModule(
|
configureModule(
|
||||||
ModuleContext(moduleDescriptor, project), JvmPlatform,
|
ModuleContext(moduleDescriptor, project), JvmPlatforms.jvmPlatformByTargetVersion(jvmTarget),
|
||||||
jvmTarget ?: JvmTarget.DEFAULT, JvmPlatformCompilerServices, trace
|
JvmPlatformCompilerServices, trace
|
||||||
)
|
)
|
||||||
|
|
||||||
useInstance(GlobalSearchScope.EMPTY_SCOPE)
|
useInstance(GlobalSearchScope.EMPTY_SCOPE)
|
||||||
|
|||||||
@@ -45,8 +45,7 @@ import org.jetbrains.kotlin.idea.util.rootManager
|
|||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
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.resolve.TargetPlatform
|
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
|
|
||||||
import org.jetbrains.kotlin.utils.addIfNotNull
|
import org.jetbrains.kotlin.utils.addIfNotNull
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -17,11 +17,11 @@ import com.intellij.psi.util.CachedValueProvider
|
|||||||
import com.intellij.psi.util.CachedValuesManager
|
import com.intellij.psi.util.CachedValuesManager
|
||||||
import com.intellij.util.containers.ContainerUtil
|
import com.intellij.util.containers.ContainerUtil
|
||||||
import com.intellij.util.containers.MultiMap
|
import com.intellij.util.containers.MultiMap
|
||||||
import org.jetbrains.kotlin.analyzer.common.CommonPlatform
|
|
||||||
import org.jetbrains.kotlin.idea.core.util.CachedValue
|
import org.jetbrains.kotlin.idea.core.util.CachedValue
|
||||||
import org.jetbrains.kotlin.idea.core.util.getValue
|
import org.jetbrains.kotlin.idea.core.util.getValue
|
||||||
import org.jetbrains.kotlin.idea.framework.getLibraryPlatform
|
import org.jetbrains.kotlin.idea.framework.getLibraryPlatform
|
||||||
import org.jetbrains.kotlin.resolve.TargetPlatform
|
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
|
import org.jetbrains.kotlin.platform.isCommon
|
||||||
import org.jetbrains.kotlin.utils.addIfNotNull
|
import org.jetbrains.kotlin.utils.addIfNotNull
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
@@ -92,7 +92,7 @@ class LibraryDependenciesCacheImpl(private val project: Project) : LibraryDepend
|
|||||||
* @return true if it's OK to add a dependency from a library with platform [from] to a library with platform [to]
|
* @return true if it's OK to add a dependency from a library with platform [from] to a library with platform [to]
|
||||||
*/
|
*/
|
||||||
private fun compatiblePlatforms(from: TargetPlatform, to: TargetPlatform): Boolean {
|
private fun compatiblePlatforms(from: TargetPlatform, to: TargetPlatform): Boolean {
|
||||||
return from == to || to is CommonPlatform
|
return from == to || to.isCommon()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getLibraryUsageIndex(): LibraryUsageIndex {
|
private fun getLibraryUsageIndex(): LibraryUsageIndex {
|
||||||
|
|||||||
+1
-1
@@ -15,7 +15,7 @@ import org.jetbrains.kotlin.idea.stubindex.KotlinSourceFilterScope
|
|||||||
import org.jetbrains.kotlin.name.Name
|
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.resolve.TargetPlatform
|
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
|
|
||||||
data class ScriptModuleInfo(
|
data class ScriptModuleInfo(
|
||||||
val project: Project,
|
val project: Project,
|
||||||
|
|||||||
+3
-3
@@ -15,8 +15,8 @@ import com.intellij.openapi.roots.LibraryOrderEntry
|
|||||||
import com.intellij.openapi.roots.ModuleRootManager
|
import com.intellij.openapi.roots.ModuleRootManager
|
||||||
import com.intellij.openapi.roots.ProjectRootModificationTracker
|
import com.intellij.openapi.roots.ProjectRootModificationTracker
|
||||||
import com.intellij.psi.util.CachedValueProvider
|
import com.intellij.psi.util.CachedValueProvider
|
||||||
import org.jetbrains.kotlin.analyzer.common.CommonPlatform
|
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
import org.jetbrains.kotlin.resolve.TargetPlatform
|
import org.jetbrains.kotlin.platform.isCommon
|
||||||
import java.util.concurrent.ConcurrentHashMap
|
import java.util.concurrent.ConcurrentHashMap
|
||||||
|
|
||||||
fun getModuleInfosFromIdeaModel(project: Project, platform: TargetPlatform): List<IdeaModuleInfo> {
|
fun getModuleInfosFromIdeaModel(project: Project, platform: TargetPlatform): List<IdeaModuleInfo> {
|
||||||
@@ -70,7 +70,7 @@ private fun mergePlatformModules(
|
|||||||
allModules: List<ModuleSourceInfo>,
|
allModules: List<ModuleSourceInfo>,
|
||||||
platform: TargetPlatform
|
platform: TargetPlatform
|
||||||
): List<IdeaModuleInfo> {
|
): List<IdeaModuleInfo> {
|
||||||
if (platform is CommonPlatform) return allModules
|
if (platform.isCommon()) return allModules
|
||||||
|
|
||||||
val platformModules =
|
val platformModules =
|
||||||
allModules.flatMap { module ->
|
allModules.flatMap { module ->
|
||||||
|
|||||||
+7
-6
@@ -14,7 +14,6 @@ import com.intellij.openapi.roots.ProjectRootModificationTracker
|
|||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import com.intellij.psi.util.CachedValueProvider
|
import com.intellij.psi.util.CachedValueProvider
|
||||||
import org.jetbrains.kotlin.analyzer.ModuleInfo
|
import org.jetbrains.kotlin.analyzer.ModuleInfo
|
||||||
import org.jetbrains.kotlin.analyzer.common.CommonPlatform
|
|
||||||
import org.jetbrains.kotlin.caches.resolve.KotlinCacheService
|
import org.jetbrains.kotlin.caches.resolve.KotlinCacheService
|
||||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||||
import org.jetbrains.kotlin.idea.caches.project.SourceType.PRODUCTION
|
import org.jetbrains.kotlin.idea.caches.project.SourceType.PRODUCTION
|
||||||
@@ -26,7 +25,8 @@ import org.jetbrains.kotlin.idea.project.platform
|
|||||||
import org.jetbrains.kotlin.idea.util.rootManager
|
import org.jetbrains.kotlin.idea.util.rootManager
|
||||||
import org.jetbrains.kotlin.platform.impl.CommonIdePlatformKind
|
import org.jetbrains.kotlin.platform.impl.CommonIdePlatformKind
|
||||||
import org.jetbrains.kotlin.platform.impl.isCommon
|
import org.jetbrains.kotlin.platform.impl.isCommon
|
||||||
import org.jetbrains.kotlin.resolve.TargetPlatform
|
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
|
import org.jetbrains.kotlin.platform.isCommon
|
||||||
|
|
||||||
val Module.isNewMPPModule: Boolean
|
val Module.isNewMPPModule: Boolean
|
||||||
get() = facetSettings?.kind?.isNewMPP ?: false
|
get() = facetSettings?.kind?.isNewMPP ?: false
|
||||||
@@ -119,15 +119,16 @@ private fun ModuleSourceInfo.toDescriptor() = KotlinCacheService.getInstance(mod
|
|||||||
.getResolutionFacadeByModuleInfo(this, platform)?.moduleDescriptor
|
.getResolutionFacadeByModuleInfo(this, platform)?.moduleDescriptor
|
||||||
|
|
||||||
fun PsiElement.getPlatformModuleInfo(desiredPlatform: TargetPlatform): PlatformModuleInfo? {
|
fun PsiElement.getPlatformModuleInfo(desiredPlatform: TargetPlatform): PlatformModuleInfo? {
|
||||||
assert(desiredPlatform !is CommonPlatform) { "Platform module cannot have Common platform" }
|
assert(!desiredPlatform.isCommon()) { "Platform module cannot have Common platform" }
|
||||||
val moduleInfo = getNullableModuleInfo() as? ModuleSourceInfo ?: return null
|
val moduleInfo = getNullableModuleInfo() as? ModuleSourceInfo ?: return null
|
||||||
return when (moduleInfo.platform) {
|
val platform = moduleInfo.platform
|
||||||
is CommonPlatform -> {
|
return when {
|
||||||
|
platform.isCommon() -> {
|
||||||
val correspondingImplementingModule = moduleInfo.module.implementingModules.map { it.toInfo(moduleInfo.sourceType) }
|
val correspondingImplementingModule = moduleInfo.module.implementingModules.map { it.toInfo(moduleInfo.sourceType) }
|
||||||
.firstOrNull { it?.platform == desiredPlatform } ?: return null
|
.firstOrNull { it?.platform == desiredPlatform } ?: return null
|
||||||
PlatformModuleInfo(correspondingImplementingModule, correspondingImplementingModule.expectedBy)
|
PlatformModuleInfo(correspondingImplementingModule, correspondingImplementingModule.expectedBy)
|
||||||
}
|
}
|
||||||
desiredPlatform -> {
|
platform == desiredPlatform -> {
|
||||||
val expectedBy = moduleInfo.expectedBy.takeIf { it.isNotEmpty() } ?: return null
|
val expectedBy = moduleInfo.expectedBy.takeIf { it.isNotEmpty() } ?: return null
|
||||||
PlatformModuleInfo(moduleInfo, expectedBy)
|
PlatformModuleInfo(moduleInfo, expectedBy)
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-3
@@ -29,7 +29,8 @@ import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
|
|||||||
import org.jetbrains.kotlin.idea.util.application.runReadAction
|
import org.jetbrains.kotlin.idea.util.application.runReadAction
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||||
|
import org.jetbrains.kotlin.platform.jvm.isJvm
|
||||||
import org.jetbrains.kotlin.resolve.scopes.MemberScope
|
import org.jetbrains.kotlin.resolve.scopes.MemberScope
|
||||||
import org.jetbrains.kotlin.utils.sure
|
import org.jetbrains.kotlin.utils.sure
|
||||||
import java.util.*
|
import java.util.*
|
||||||
@@ -240,7 +241,7 @@ class IDEKotlinAsJavaSupport(private val project: Project) : KotlinAsJavaSupport
|
|||||||
// thus we need to ensure that resolver will be built by the file from platform part of the module
|
// thus we need to ensure that resolver will be built by the file from platform part of the module
|
||||||
// (resolver built by a file from the common part will have no knowledge of the platform part)
|
// (resolver built by a file from the common part will have no knowledge of the platform part)
|
||||||
// the actual of order of files that resolver receives is controlled by *findFilesForFacade* method
|
// the actual of order of files that resolver receives is controlled by *findFilesForFacade* method
|
||||||
private fun Collection<KtFile>.platformSourcesFirst() = sortedByDescending { it.platform == JvmPlatform }
|
private fun Collection<KtFile>.platformSourcesFirst() = sortedByDescending { it.platform.isJvm() }
|
||||||
|
|
||||||
private fun getLightClassForDecompiledClassOrObject(decompiledClassOrObject: KtClassOrObject): KtLightClassForDecompiledDeclaration? {
|
private fun getLightClassForDecompiledClassOrObject(decompiledClassOrObject: KtClassOrObject): KtLightClassForDecompiledDeclaration? {
|
||||||
if (decompiledClassOrObject is KtEnumEntry) {
|
if (decompiledClassOrObject is KtEnumEntry) {
|
||||||
@@ -331,5 +332,5 @@ class IDEKotlinAsJavaSupport(private val project: Project) : KotlinAsJavaSupport
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal fun PsiElement.getModuleInfoPreferringJvmPlatform(): IdeaModuleInfo {
|
internal fun PsiElement.getModuleInfoPreferringJvmPlatform(): IdeaModuleInfo {
|
||||||
return getPlatformModuleInfo(JvmPlatform) ?: getModuleInfo()
|
return getPlatformModuleInfo(JvmPlatforms.defaultJvmPlatform) ?: getModuleInfo()
|
||||||
}
|
}
|
||||||
+1
-1
@@ -54,7 +54,7 @@ import org.jetbrains.kotlin.platform.DefaultIdeTargetPlatformKindProvider
|
|||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.contains
|
import org.jetbrains.kotlin.psi.psiUtil.contains
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
import org.jetbrains.kotlin.resolve.TargetPlatform
|
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
import org.jetbrains.kotlin.resolve.diagnostics.KotlinSuppressCache
|
import org.jetbrains.kotlin.resolve.diagnostics.KotlinSuppressCache
|
||||||
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
|
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
|
||||||
|
|||||||
+2
-2
@@ -18,7 +18,7 @@ import org.jetbrains.kotlin.psi.KtClassOrObject
|
|||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.psi.KtFileClassProvider
|
import org.jetbrains.kotlin.psi.KtFileClassProvider
|
||||||
import org.jetbrains.kotlin.psi.analysisContext
|
import org.jetbrains.kotlin.psi.analysisContext
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
|
import org.jetbrains.kotlin.platform.jvm.isJvm
|
||||||
|
|
||||||
class KtFileClassProviderImpl(val kotlinAsJavaSupport: KotlinAsJavaSupport) :
|
class KtFileClassProviderImpl(val kotlinAsJavaSupport: KotlinAsJavaSupport) :
|
||||||
KtFileClassProvider {
|
KtFileClassProvider {
|
||||||
@@ -40,7 +40,7 @@ class KtFileClassProviderImpl(val kotlinAsJavaSupport: KotlinAsJavaSupport) :
|
|||||||
// common files might be in fact compiled to jvm and thus correspond to a PsiClass
|
// common files might be in fact compiled to jvm and thus correspond to a PsiClass
|
||||||
// this API does not provide context (like GSS) to be able to determine if this file is in fact seen through a jvm module
|
// this API does not provide context (like GSS) to be able to determine if this file is in fact seen through a jvm module
|
||||||
// this also fixes a problem where a Java JUnit run configuration producer would produce run configurations for a common file
|
// this also fixes a problem where a Java JUnit run configuration producer would produce run configurations for a common file
|
||||||
if (moduleInfo.platform !is JvmPlatform) return emptyArray()
|
if (!moduleInfo.platform.isJvm()) return emptyArray()
|
||||||
|
|
||||||
val jvmClassInfo = JvmFileClassUtil.getFileClassInfoNoResolve(file)
|
val jvmClassInfo = JvmFileClassUtil.getFileClassInfoNoResolve(file)
|
||||||
val fileClassFqName = file.javaFileFacadeFqName
|
val fileClassFqName = file.javaFileFacadeFqName
|
||||||
|
|||||||
+1
-7
@@ -23,7 +23,6 @@ import com.intellij.openapi.project.Project
|
|||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import com.intellij.psi.util.PsiTreeUtil
|
import com.intellij.psi.util.PsiTreeUtil
|
||||||
import org.jetbrains.kotlin.analyzer.AnalysisResult
|
import org.jetbrains.kotlin.analyzer.AnalysisResult
|
||||||
import org.jetbrains.kotlin.config.JvmTarget
|
|
||||||
import org.jetbrains.kotlin.container.ComponentProvider
|
import org.jetbrains.kotlin.container.ComponentProvider
|
||||||
import org.jetbrains.kotlin.container.get
|
import org.jetbrains.kotlin.container.get
|
||||||
import org.jetbrains.kotlin.context.GlobalContext
|
import org.jetbrains.kotlin.context.GlobalContext
|
||||||
@@ -33,14 +32,12 @@ import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
|||||||
import org.jetbrains.kotlin.diagnostics.DiagnosticUtils
|
import org.jetbrains.kotlin.diagnostics.DiagnosticUtils
|
||||||
import org.jetbrains.kotlin.frontend.di.createContainerForLazyBodyResolve
|
import org.jetbrains.kotlin.frontend.di.createContainerForLazyBodyResolve
|
||||||
import org.jetbrains.kotlin.idea.caches.project.getModuleInfo
|
import org.jetbrains.kotlin.idea.caches.project.getModuleInfo
|
||||||
import org.jetbrains.kotlin.idea.compiler.IDELanguageSettingsProvider
|
|
||||||
import org.jetbrains.kotlin.idea.project.TargetPlatformDetector
|
import org.jetbrains.kotlin.idea.project.TargetPlatformDetector
|
||||||
import org.jetbrains.kotlin.idea.project.findCompilerServices
|
import org.jetbrains.kotlin.idea.project.findCompilerServices
|
||||||
import org.jetbrains.kotlin.idea.project.languageVersionSettings
|
import org.jetbrains.kotlin.idea.project.languageVersionSettings
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.parentsWithSelf
|
import org.jetbrains.kotlin.psi.psiUtil.parentsWithSelf
|
||||||
import org.jetbrains.kotlin.resolve.*
|
import org.jetbrains.kotlin.resolve.*
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
|
|
||||||
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
||||||
import org.jetbrains.kotlin.resolve.lazy.ResolveSession
|
import org.jetbrains.kotlin.resolve.lazy.ResolveSession
|
||||||
import java.util.*
|
import java.util.*
|
||||||
@@ -190,10 +187,8 @@ private object KotlinResolveDataProvider {
|
|||||||
|
|
||||||
val moduleInfo = analyzableElement.containingKtFile.getModuleInfo()
|
val moduleInfo = analyzableElement.containingKtFile.getModuleInfo()
|
||||||
|
|
||||||
|
// TODO: should return proper platform!
|
||||||
val targetPlatform = moduleInfo.platform ?: TargetPlatformDetector.getPlatform(analyzableElement.containingKtFile)
|
val targetPlatform = moduleInfo.platform ?: TargetPlatformDetector.getPlatform(analyzableElement.containingKtFile)
|
||||||
val targetPlatformVersion = IDELanguageSettingsProvider.getTargetPlatform(moduleInfo, project).let {
|
|
||||||
if (targetPlatform == JvmPlatform && it !is JvmTarget) JvmTarget.DEFAULT else it
|
|
||||||
}
|
|
||||||
|
|
||||||
val lazyTopDownAnalyzer = createContainerForLazyBodyResolve(
|
val lazyTopDownAnalyzer = createContainerForLazyBodyResolve(
|
||||||
//TODO: should get ModuleContext
|
//TODO: should get ModuleContext
|
||||||
@@ -202,7 +197,6 @@ private object KotlinResolveDataProvider {
|
|||||||
trace,
|
trace,
|
||||||
targetPlatform,
|
targetPlatform,
|
||||||
bodyResolveCache,
|
bodyResolveCache,
|
||||||
targetPlatformVersion,
|
|
||||||
targetPlatform.findCompilerServices,
|
targetPlatform.findCompilerServices,
|
||||||
analyzableElement.languageVersionSettings
|
analyzableElement.languageVersionSettings
|
||||||
).get<LazyTopDownAnalyzer>()
|
).get<LazyTopDownAnalyzer>()
|
||||||
|
|||||||
+7
-6
@@ -25,7 +25,6 @@ import com.intellij.psi.util.PsiModificationTracker
|
|||||||
import com.intellij.util.containers.SLRUCache
|
import com.intellij.util.containers.SLRUCache
|
||||||
import org.jetbrains.kotlin.analyzer.*
|
import org.jetbrains.kotlin.analyzer.*
|
||||||
import org.jetbrains.kotlin.analyzer.common.CommonAnalysisParameters
|
import org.jetbrains.kotlin.analyzer.common.CommonAnalysisParameters
|
||||||
import org.jetbrains.kotlin.analyzer.common.CommonPlatform
|
|
||||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||||
import org.jetbrains.kotlin.builtins.jvm.JvmBuiltIns
|
import org.jetbrains.kotlin.builtins.jvm.JvmBuiltIns
|
||||||
import org.jetbrains.kotlin.caches.resolve.resolution
|
import org.jetbrains.kotlin.caches.resolve.resolution
|
||||||
@@ -41,11 +40,13 @@ import org.jetbrains.kotlin.idea.project.IdeaEnvironment
|
|||||||
import org.jetbrains.kotlin.load.java.structure.JavaClass
|
import org.jetbrains.kotlin.load.java.structure.JavaClass
|
||||||
import org.jetbrains.kotlin.load.java.structure.impl.JavaClassImpl
|
import org.jetbrains.kotlin.load.java.structure.impl.JavaClassImpl
|
||||||
import org.jetbrains.kotlin.platform.idePlatformKind
|
import org.jetbrains.kotlin.platform.idePlatformKind
|
||||||
|
import org.jetbrains.kotlin.platform.isCommon
|
||||||
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||||
|
import org.jetbrains.kotlin.platform.jvm.isJvm
|
||||||
import org.jetbrains.kotlin.psi.KtElement
|
import org.jetbrains.kotlin.psi.KtElement
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.resolve.CompositeBindingContext
|
import org.jetbrains.kotlin.resolve.CompositeBindingContext
|
||||||
import org.jetbrains.kotlin.resolve.jvm.JvmPlatformParameters
|
import org.jetbrains.kotlin.resolve.jvm.JvmPlatformParameters
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
|
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult
|
import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult
|
||||||
|
|
||||||
internal class ProjectResolutionFacade(
|
internal class ProjectResolutionFacade(
|
||||||
@@ -125,7 +126,7 @@ internal class ProjectResolutionFacade(
|
|||||||
packagePartProviderFactory = { IDEPackagePartProvider(it.moduleContentScope) },
|
packagePartProviderFactory = { IDEPackagePartProvider(it.moduleContentScope) },
|
||||||
moduleByJavaClass = { javaClass: JavaClass ->
|
moduleByJavaClass = { javaClass: JavaClass ->
|
||||||
val psiClass = (javaClass as JavaClassImpl).psi
|
val psiClass = (javaClass as JavaClassImpl).psi
|
||||||
psiClass.getPlatformModuleInfo(JvmPlatform)?.platformModule ?: psiClass.getNullableModuleInfo()
|
psiClass.getPlatformModuleInfo(JvmPlatforms.defaultJvmPlatform)?.platformModule ?: psiClass.getNullableModuleInfo()
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -144,9 +145,9 @@ internal class ProjectResolutionFacade(
|
|||||||
platform.idePlatformKind.resolution.resolverForModuleFactory
|
platform.idePlatformKind.resolution.resolverForModuleFactory
|
||||||
},
|
},
|
||||||
platformParameters = { platform ->
|
platformParameters = { platform ->
|
||||||
when (platform) {
|
when {
|
||||||
is JvmPlatform -> jvmPlatformParameters
|
platform.isJvm() -> jvmPlatformParameters
|
||||||
is CommonPlatform -> commonPlatformParameters
|
platform.isCommon() -> commonPlatformParameters
|
||||||
else -> PlatformAnalysisParameters.Empty
|
else -> PlatformAnalysisParameters.Empty
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
+1
-1
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.psi.KtDeclaration
|
|||||||
import org.jetbrains.kotlin.psi.KtElement
|
import org.jetbrains.kotlin.psi.KtElement
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
import org.jetbrains.kotlin.resolve.TargetPlatform
|
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
||||||
import org.jetbrains.kotlin.utils.KotlinExceptionWithAttachments
|
import org.jetbrains.kotlin.utils.KotlinExceptionWithAttachments
|
||||||
|
|
||||||
|
|||||||
@@ -28,14 +28,14 @@ import org.jetbrains.kotlin.idea.caches.project.projectSourceModules
|
|||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.name.isSubpackageOf
|
import org.jetbrains.kotlin.name.isSubpackageOf
|
||||||
import org.jetbrains.kotlin.resolve.jvm.KotlinJavaPsiFacade
|
import org.jetbrains.kotlin.resolve.jvm.KotlinJavaPsiFacade
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
|
import org.jetbrains.kotlin.platform.jvm.isJvm
|
||||||
|
|
||||||
class IdePackageOracleFactory(val project: Project) : PackageOracleFactory {
|
class IdePackageOracleFactory(val project: Project) : PackageOracleFactory {
|
||||||
override fun createOracle(moduleInfo: ModuleInfo): PackageOracle {
|
override fun createOracle(moduleInfo: ModuleInfo): PackageOracle {
|
||||||
if (moduleInfo !is IdeaModuleInfo) return PackageOracle.Optimistic
|
if (moduleInfo !is IdeaModuleInfo) return PackageOracle.Optimistic
|
||||||
|
|
||||||
return when (moduleInfo.platform) {
|
return when {
|
||||||
JvmPlatform -> when (moduleInfo.moduleOrigin) {
|
moduleInfo.platform.isJvm() -> when (moduleInfo.moduleOrigin) {
|
||||||
ModuleOrigin.LIBRARY -> JavaPackagesOracle(moduleInfo, project)
|
ModuleOrigin.LIBRARY -> JavaPackagesOracle(moduleInfo, project)
|
||||||
ModuleOrigin.MODULE -> JvmSourceOracle(moduleInfo, project)
|
ModuleOrigin.MODULE -> JvmSourceOracle(moduleInfo, project)
|
||||||
ModuleOrigin.OTHER -> PackageOracle.Optimistic
|
ModuleOrigin.OTHER -> PackageOracle.Optimistic
|
||||||
|
|||||||
+2
-2
@@ -34,8 +34,8 @@ import org.jetbrains.kotlin.name.Name
|
|||||||
import org.jetbrains.kotlin.psi.KtClassOrObject
|
import org.jetbrains.kotlin.psi.KtClassOrObject
|
||||||
import org.jetbrains.kotlin.psi.KtDeclaration
|
import org.jetbrains.kotlin.psi.KtDeclaration
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.parameterIndex
|
import org.jetbrains.kotlin.psi.psiUtil.parameterIndex
|
||||||
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||||
import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver
|
import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
|
|
||||||
import org.jetbrains.kotlin.resolve.scopes.MemberScope
|
import org.jetbrains.kotlin.resolve.scopes.MemberScope
|
||||||
|
|
||||||
fun PsiMethod.getJavaMethodDescriptor(): FunctionDescriptor? = javaResolutionFacade()?.let { getJavaMethodDescriptor(it) }
|
fun PsiMethod.getJavaMethodDescriptor(): FunctionDescriptor? = javaResolutionFacade()?.let { getJavaMethodDescriptor(it) }
|
||||||
@@ -154,7 +154,7 @@ fun PsiElement.hasJavaResolutionFacade(): Boolean = this.originalElement.contain
|
|||||||
fun PsiElement.javaResolutionFacade() =
|
fun PsiElement.javaResolutionFacade() =
|
||||||
KotlinCacheService.getInstance(project).getResolutionFacadeByFile(
|
KotlinCacheService.getInstance(project).getResolutionFacadeByFile(
|
||||||
this.originalElement.containingFile ?: reportCouldNotCreateJavaFacade(),
|
this.originalElement.containingFile ?: reportCouldNotCreateJavaFacade(),
|
||||||
JvmPlatform
|
JvmPlatforms.defaultJvmPlatform
|
||||||
)
|
)
|
||||||
|
|
||||||
private fun PsiElement.reportCouldNotCreateJavaFacade(): Nothing =
|
private fun PsiElement.reportCouldNotCreateJavaFacade(): Nothing =
|
||||||
|
|||||||
+2
-1
@@ -32,7 +32,7 @@ import org.jetbrains.kotlin.cli.common.messages.MessageCollector
|
|||||||
import org.jetbrains.kotlin.config.JvmTarget
|
import org.jetbrains.kotlin.config.JvmTarget
|
||||||
import org.jetbrains.kotlin.config.KotlinFacetSettingsProvider
|
import org.jetbrains.kotlin.config.KotlinFacetSettingsProvider
|
||||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||||
import org.jetbrains.kotlin.config.TargetPlatformVersion
|
import org.jetbrains.kotlin.platform.TargetPlatformVersion
|
||||||
import org.jetbrains.kotlin.idea.caches.project.*
|
import org.jetbrains.kotlin.idea.caches.project.*
|
||||||
import org.jetbrains.kotlin.idea.project.getLanguageVersionSettings
|
import org.jetbrains.kotlin.idea.project.getLanguageVersionSettings
|
||||||
import org.jetbrains.kotlin.idea.project.languageVersionSettings
|
import org.jetbrains.kotlin.idea.project.languageVersionSettings
|
||||||
@@ -72,6 +72,7 @@ object IDELanguageSettingsProvider : LanguageSettingsProvider {
|
|||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO(dsavvinov): get rid of this method; instead store proper instance of TargetPlatformVersion in platform-instance
|
||||||
override fun getTargetPlatform(moduleInfo: ModuleInfo, project: Project): TargetPlatformVersion =
|
override fun getTargetPlatform(moduleInfo: ModuleInfo, project: Project): TargetPlatformVersion =
|
||||||
when (moduleInfo) {
|
when (moduleInfo) {
|
||||||
is ModuleSourceInfo -> moduleInfo.module.platform?.version ?: TargetPlatformVersion.NoVersion
|
is ModuleSourceInfo -> moduleInfo.module.platform?.version ?: TargetPlatformVersion.NoVersion
|
||||||
|
|||||||
-1
@@ -19,7 +19,6 @@ package org.jetbrains.kotlin.idea.decompiler.builtIns
|
|||||||
import com.intellij.ide.highlighter.JavaClassFileType
|
import com.intellij.ide.highlighter.JavaClassFileType
|
||||||
import com.intellij.openapi.vfs.VirtualFile
|
import com.intellij.openapi.vfs.VirtualFile
|
||||||
import org.jetbrains.annotations.TestOnly
|
import org.jetbrains.annotations.TestOnly
|
||||||
import org.jetbrains.kotlin.analyzer.common.CommonPlatform
|
|
||||||
import org.jetbrains.kotlin.idea.decompiler.common.FileWithMetadata
|
import org.jetbrains.kotlin.idea.decompiler.common.FileWithMetadata
|
||||||
import org.jetbrains.kotlin.idea.decompiler.common.KotlinMetadataDecompiler
|
import org.jetbrains.kotlin.idea.decompiler.common.KotlinMetadataDecompiler
|
||||||
import org.jetbrains.kotlin.metadata.ProtoBuf
|
import org.jetbrains.kotlin.metadata.ProtoBuf
|
||||||
|
|||||||
-2
@@ -35,8 +35,6 @@ import org.jetbrains.kotlin.load.kotlin.KotlinClassFinder.Result.KotlinClass
|
|||||||
import org.jetbrains.kotlin.metadata.jvm.deserialization.JvmProtoBufUtil
|
import org.jetbrains.kotlin.metadata.jvm.deserialization.JvmProtoBufUtil
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.resolve.TargetPlatform
|
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
|
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.ClassData
|
import org.jetbrains.kotlin.serialization.deserialization.ClassData
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.ClassDataFinder
|
import org.jetbrains.kotlin.serialization.deserialization.ClassDataFinder
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.DeserializationComponents
|
import org.jetbrains.kotlin.serialization.deserialization.DeserializationComponents
|
||||||
|
|||||||
-1
@@ -29,7 +29,6 @@ import org.jetbrains.kotlin.metadata.ProtoBuf
|
|||||||
import org.jetbrains.kotlin.metadata.deserialization.BinaryVersion
|
import org.jetbrains.kotlin.metadata.deserialization.BinaryVersion
|
||||||
import org.jetbrains.kotlin.metadata.deserialization.NameResolver
|
import org.jetbrains.kotlin.metadata.deserialization.NameResolver
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.resolve.TargetPlatform
|
|
||||||
import org.jetbrains.kotlin.serialization.SerializerExtensionProtocol
|
import org.jetbrains.kotlin.serialization.SerializerExtensionProtocol
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.*
|
import org.jetbrains.kotlin.serialization.deserialization.*
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedPackageMemberScope
|
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedPackageMemberScope
|
||||||
|
|||||||
-1
@@ -19,7 +19,6 @@ package org.jetbrains.kotlin.idea.decompiler.js
|
|||||||
import com.intellij.openapi.vfs.VirtualFile
|
import com.intellij.openapi.vfs.VirtualFile
|
||||||
import org.jetbrains.kotlin.idea.decompiler.common.FileWithMetadata
|
import org.jetbrains.kotlin.idea.decompiler.common.FileWithMetadata
|
||||||
import org.jetbrains.kotlin.idea.decompiler.common.KotlinMetadataDecompiler
|
import org.jetbrains.kotlin.idea.decompiler.common.KotlinMetadataDecompiler
|
||||||
import org.jetbrains.kotlin.js.resolve.JsPlatform
|
|
||||||
import org.jetbrains.kotlin.metadata.ProtoBuf
|
import org.jetbrains.kotlin.metadata.ProtoBuf
|
||||||
import org.jetbrains.kotlin.metadata.js.JsProtoBuf
|
import org.jetbrains.kotlin.metadata.js.JsProtoBuf
|
||||||
import org.jetbrains.kotlin.psi.stubs.KotlinStubVersions
|
import org.jetbrains.kotlin.psi.stubs.KotlinStubVersions
|
||||||
|
|||||||
+3
-3
@@ -18,7 +18,6 @@ import com.intellij.psi.stubs.StringStubIndexExtension
|
|||||||
import com.intellij.util.containers.ContainerUtil
|
import com.intellij.util.containers.ContainerUtil
|
||||||
import gnu.trove.THashSet
|
import gnu.trove.THashSet
|
||||||
import org.jetbrains.annotations.TestOnly
|
import org.jetbrains.annotations.TestOnly
|
||||||
import org.jetbrains.kotlin.analyzer.common.CommonPlatform
|
|
||||||
import org.jetbrains.kotlin.descriptors.CallableDescriptor
|
import org.jetbrains.kotlin.descriptors.CallableDescriptor
|
||||||
import org.jetbrains.kotlin.idea.caches.project.BinaryModuleInfo
|
import org.jetbrains.kotlin.idea.caches.project.BinaryModuleInfo
|
||||||
import org.jetbrains.kotlin.idea.caches.project.getBinaryLibrariesModuleInfos
|
import org.jetbrains.kotlin.idea.caches.project.getBinaryLibrariesModuleInfos
|
||||||
@@ -35,6 +34,7 @@ import org.jetbrains.kotlin.lexer.KtTokens
|
|||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.psi.debugText.getDebugText
|
import org.jetbrains.kotlin.psi.debugText.getDebugText
|
||||||
|
import org.jetbrains.kotlin.platform.isCommon
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult
|
import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult
|
||||||
|
|
||||||
object SourceNavigationHelper {
|
object SourceNavigationHelper {
|
||||||
@@ -75,10 +75,10 @@ object SourceNavigationHelper {
|
|||||||
|
|
||||||
private fun BinaryModuleInfo.associatedCommonLibraries(): List<BinaryModuleInfo> {
|
private fun BinaryModuleInfo.associatedCommonLibraries(): List<BinaryModuleInfo> {
|
||||||
val platform = platform
|
val platform = platform
|
||||||
if (platform == null || platform is CommonPlatform) return emptyList()
|
if (platform == null || platform.isCommon()) return emptyList()
|
||||||
|
|
||||||
return dependencies().filterIsInstance<BinaryModuleInfo>().filter {
|
return dependencies().filterIsInstance<BinaryModuleInfo>().filter {
|
||||||
it.platform is CommonPlatform
|
it.platform.isCommon()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
-1
@@ -24,7 +24,6 @@ import org.jetbrains.kotlin.descriptors.impl.MutablePackageFragmentDescriptor
|
|||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
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.resolve.TargetPlatform
|
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.DeserializationComponents
|
import org.jetbrains.kotlin.serialization.deserialization.DeserializationComponents
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.LocalClassifierTypeSettings
|
import org.jetbrains.kotlin.serialization.deserialization.LocalClassifierTypeSettings
|
||||||
import org.jetbrains.kotlin.storage.LockBasedStorageManager
|
import org.jetbrains.kotlin.storage.LockBasedStorageManager
|
||||||
|
|||||||
@@ -24,15 +24,14 @@ import com.intellij.openapi.roots.libraries.Library
|
|||||||
import com.intellij.openapi.roots.libraries.PersistentLibraryKind
|
import com.intellij.openapi.roots.libraries.PersistentLibraryKind
|
||||||
import com.intellij.openapi.util.io.JarUtil
|
import com.intellij.openapi.util.io.JarUtil
|
||||||
import com.intellij.openapi.vfs.*
|
import com.intellij.openapi.vfs.*
|
||||||
import org.jetbrains.kotlin.analyzer.common.CommonPlatform
|
|
||||||
import org.jetbrains.kotlin.caches.resolve.IdePlatformKindResolution
|
import org.jetbrains.kotlin.caches.resolve.IdePlatformKindResolution
|
||||||
import org.jetbrains.kotlin.caches.resolve.resolution
|
import org.jetbrains.kotlin.caches.resolve.resolution
|
||||||
import org.jetbrains.kotlin.idea.vfilefinder.KnownLibraryKindForIndex
|
import org.jetbrains.kotlin.idea.vfilefinder.KnownLibraryKindForIndex
|
||||||
import org.jetbrains.kotlin.idea.vfilefinder.getLibraryKindForJar
|
import org.jetbrains.kotlin.idea.vfilefinder.getLibraryKindForJar
|
||||||
import org.jetbrains.kotlin.js.resolve.JsPlatform
|
import org.jetbrains.kotlin.platform.CommonPlatforms
|
||||||
import org.jetbrains.kotlin.platform.DefaultIdeTargetPlatformKindProvider
|
import org.jetbrains.kotlin.platform.DefaultIdeTargetPlatformKindProvider
|
||||||
import org.jetbrains.kotlin.resolve.TargetPlatform
|
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
|
import org.jetbrains.kotlin.platform.js.JsPlatforms
|
||||||
import org.jetbrains.kotlin.utils.PathUtil
|
import org.jetbrains.kotlin.utils.PathUtil
|
||||||
import java.util.jar.Attributes
|
import java.util.jar.Attributes
|
||||||
import java.util.regex.Pattern
|
import java.util.regex.Pattern
|
||||||
@@ -43,14 +42,14 @@ interface KotlinLibraryKind {
|
|||||||
|
|
||||||
object JSLibraryKind : PersistentLibraryKind<DummyLibraryProperties>("kotlin.js"), KotlinLibraryKind {
|
object JSLibraryKind : PersistentLibraryKind<DummyLibraryProperties>("kotlin.js"), KotlinLibraryKind {
|
||||||
override val compilerPlatform: TargetPlatform
|
override val compilerPlatform: TargetPlatform
|
||||||
get() = JsPlatform
|
get() = JsPlatforms.defaultJsPlatform
|
||||||
|
|
||||||
override fun createDefaultProperties() = DummyLibraryProperties.INSTANCE!!
|
override fun createDefaultProperties() = DummyLibraryProperties.INSTANCE!!
|
||||||
}
|
}
|
||||||
|
|
||||||
object CommonLibraryKind : PersistentLibraryKind<DummyLibraryProperties>("kotlin.common"), KotlinLibraryKind {
|
object CommonLibraryKind : PersistentLibraryKind<DummyLibraryProperties>("kotlin.common"), KotlinLibraryKind {
|
||||||
override val compilerPlatform: TargetPlatform
|
override val compilerPlatform: TargetPlatform
|
||||||
get() = CommonPlatform
|
get() = CommonPlatforms.defaultCommonPlatform
|
||||||
|
|
||||||
override fun createDefaultProperties() = DummyLibraryProperties.INSTANCE!!
|
override fun createDefaultProperties() = DummyLibraryProperties.INSTANCE!!
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -26,7 +26,7 @@ import org.jetbrains.kotlin.idea.project.TargetPlatformDetector
|
|||||||
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
|
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
|
||||||
import org.jetbrains.kotlin.psi.KtDeclaration
|
import org.jetbrains.kotlin.psi.KtDeclaration
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
|
import org.jetbrains.kotlin.platform.jvm.isJvm
|
||||||
|
|
||||||
class DuplicateJvmSignatureAnnotator : Annotator {
|
class DuplicateJvmSignatureAnnotator : Annotator {
|
||||||
override fun annotate(element: PsiElement, holder: AnnotationHolder) {
|
override fun annotate(element: PsiElement, holder: AnnotationHolder) {
|
||||||
@@ -34,7 +34,7 @@ class DuplicateJvmSignatureAnnotator : Annotator {
|
|||||||
if (!ProjectRootsUtil.isInProjectSource(element)) return
|
if (!ProjectRootsUtil.isInProjectSource(element)) return
|
||||||
|
|
||||||
val file = element.containingFile
|
val file = element.containingFile
|
||||||
if (file !is KtFile || TargetPlatformDetector.getPlatform(file) !== JvmPlatform) return
|
if (file !is KtFile || !TargetPlatformDetector.getPlatform(file).isJvm()) return
|
||||||
|
|
||||||
val otherDiagnostics = when (element) {
|
val otherDiagnostics = when (element) {
|
||||||
is KtDeclaration -> element.analyzeWithContent()
|
is KtDeclaration -> element.analyzeWithContent()
|
||||||
|
|||||||
@@ -49,7 +49,8 @@ import org.jetbrains.kotlin.platform.impl.isCommon
|
|||||||
import org.jetbrains.kotlin.psi.KtElement
|
import org.jetbrains.kotlin.psi.KtElement
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.psi.UserDataProperty
|
import org.jetbrains.kotlin.psi.UserDataProperty
|
||||||
import org.jetbrains.kotlin.resolve.TargetPlatform
|
import org.jetbrains.kotlin.config.JvmTarget
|
||||||
|
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
import org.jetbrains.kotlin.utils.Jsr305State
|
import org.jetbrains.kotlin.utils.Jsr305State
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
@@ -212,6 +213,7 @@ private fun Module.computeLanguageVersionSettings(): LanguageVersionSettings {
|
|||||||
val Module.platform: IdePlatform<*, *>?
|
val Module.platform: IdePlatform<*, *>?
|
||||||
get() = KotlinFacetSettingsProvider.getInstance(project).getInitializedSettings(this).platform ?: project.platform
|
get() = KotlinFacetSettingsProvider.getInstance(project).getInitializedSettings(this).platform ?: project.platform
|
||||||
|
|
||||||
|
// FIXME(dsavvinov): this logic is clearly wrong in MPP environment; review and fix
|
||||||
val Project.platform: IdePlatform<*, *>?
|
val Project.platform: IdePlatform<*, *>?
|
||||||
get() {
|
get() {
|
||||||
val jvmTarget = Kotlin2JvmCompilerArgumentsHolder.getInstance(this).settings.jvmTarget ?: return null
|
val jvmTarget = Kotlin2JvmCompilerArgumentsHolder.getInstance(this).settings.jvmTarget ?: return null
|
||||||
@@ -265,12 +267,4 @@ val PsiElement.languageVersionSettings: LanguageVersionSettings
|
|||||||
return LanguageVersionSettingsImpl.DEFAULT
|
return LanguageVersionSettingsImpl.DEFAULT
|
||||||
}
|
}
|
||||||
return IDELanguageSettingsProvider.getLanguageVersionSettings(this.getModuleInfo(), project)
|
return IDELanguageSettingsProvider.getLanguageVersionSettings(this.getModuleInfo(), project)
|
||||||
}
|
}
|
||||||
|
|
||||||
val KtElement.jvmTarget: JvmTarget
|
|
||||||
get() {
|
|
||||||
if (ServiceManager.getService(project, ProjectFileIndex::class.java) == null) {
|
|
||||||
return JvmTarget.DEFAULT
|
|
||||||
}
|
|
||||||
return IDELanguageSettingsProvider.getTargetPlatform(this.getModuleInfo(), project) as? JvmTarget ?: JvmTarget.DEFAULT
|
|
||||||
}
|
|
||||||
@@ -25,7 +25,7 @@ import com.intellij.psi.util.CachedValuesManager;
|
|||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.kotlin.platform.IdePlatform;
|
import org.jetbrains.kotlin.platform.IdePlatform;
|
||||||
import org.jetbrains.kotlin.platform.IdePlatformKindUtil;
|
import org.jetbrains.kotlin.platform.IdePlatformKindUtil;
|
||||||
import org.jetbrains.kotlin.resolve.TargetPlatform;
|
import org.jetbrains.kotlin.platform.TargetPlatform;
|
||||||
|
|
||||||
public class ProjectStructureUtil {
|
public class ProjectStructureUtil {
|
||||||
private static final Key<CachedValue<TargetPlatform>> PLATFORM_FOR_MODULE = Key.create("PLATFORM_FOR_MODULE");
|
private static final Key<CachedValue<TargetPlatform>> PLATFORM_FOR_MODULE = Key.create("PLATFORM_FOR_MODULE");
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import com.intellij.psi.util.CachedValueProvider
|
|||||||
import com.intellij.psi.util.CachedValuesManager
|
import com.intellij.psi.util.CachedValuesManager
|
||||||
import com.intellij.psi.util.PsiModificationTracker
|
import com.intellij.psi.util.PsiModificationTracker
|
||||||
import com.intellij.util.containers.ContainerUtil
|
import com.intellij.util.containers.ContainerUtil
|
||||||
|
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
import org.jetbrains.kotlin.cfg.ControlFlowInformationProvider
|
import org.jetbrains.kotlin.cfg.ControlFlowInformationProvider
|
||||||
import org.jetbrains.kotlin.container.get
|
import org.jetbrains.kotlin.container.get
|
||||||
import org.jetbrains.kotlin.context.SimpleGlobalContext
|
import org.jetbrains.kotlin.context.SimpleGlobalContext
|
||||||
@@ -717,7 +718,6 @@ class ResolveElementCache(
|
|||||||
trace,
|
trace,
|
||||||
targetPlatform,
|
targetPlatform,
|
||||||
statementFilter,
|
statementFilter,
|
||||||
file.jvmTarget,
|
|
||||||
targetPlatform.findCompilerServices,
|
targetPlatform.findCompilerServices,
|
||||||
file.languageVersionSettings
|
file.languageVersionSettings
|
||||||
).get()
|
).get()
|
||||||
|
|||||||
+9
-4
@@ -22,15 +22,17 @@ import com.intellij.openapi.roots.ProjectFileIndex;
|
|||||||
import com.intellij.openapi.vfs.VirtualFile;
|
import com.intellij.openapi.vfs.VirtualFile;
|
||||||
import com.intellij.psi.PsiElement;
|
import com.intellij.psi.PsiElement;
|
||||||
import com.intellij.psi.PsiFile;
|
import com.intellij.psi.PsiFile;
|
||||||
|
import kotlin.collections.CollectionsKt;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.kotlin.platform.DefaultIdeTargetPlatformKindProvider;
|
import org.jetbrains.kotlin.platform.DefaultIdeTargetPlatformKindProvider;
|
||||||
import org.jetbrains.kotlin.platform.IdePlatform;
|
import org.jetbrains.kotlin.platform.IdePlatform;
|
||||||
import org.jetbrains.kotlin.platform.IdePlatformKind;
|
import org.jetbrains.kotlin.platform.IdePlatformKind;
|
||||||
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms;
|
||||||
import org.jetbrains.kotlin.psi.KtCodeFragment;
|
import org.jetbrains.kotlin.psi.KtCodeFragment;
|
||||||
import org.jetbrains.kotlin.psi.KtFile;
|
import org.jetbrains.kotlin.psi.KtFile;
|
||||||
import org.jetbrains.kotlin.psi.KtPsiFactoryKt;
|
import org.jetbrains.kotlin.psi.KtPsiFactoryKt;
|
||||||
import org.jetbrains.kotlin.resolve.TargetPlatform;
|
import org.jetbrains.kotlin.platform.TargetPlatform;
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform;
|
import org.jetbrains.kotlin.platform.SimplePlatform;
|
||||||
import org.jetbrains.kotlin.scripting.definitions.DefinitionsKt;
|
import org.jetbrains.kotlin.scripting.definitions.DefinitionsKt;
|
||||||
import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition;
|
import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition;
|
||||||
|
|
||||||
@@ -56,7 +58,8 @@ public class TargetPlatformDetector {
|
|||||||
PsiElement context = KtPsiFactoryKt.getAnalysisContext(file);
|
PsiElement context = KtPsiFactoryKt.getAnalysisContext(file);
|
||||||
if (context != null) {
|
if (context != null) {
|
||||||
PsiFile contextFile = context.getContainingFile();
|
PsiFile contextFile = context.getContainingFile();
|
||||||
return contextFile instanceof KtFile ? getPlatform((KtFile) contextFile) : JvmPlatform.INSTANCE;
|
// TODO(dsavvinov): Get default platform with proper target
|
||||||
|
return contextFile instanceof KtFile ? getPlatform((KtFile) contextFile) : JvmPlatforms.INSTANCE.getDefaultJvmPlatform();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (file.isScript()) {
|
if (file.isScript()) {
|
||||||
@@ -65,7 +68,9 @@ public class TargetPlatformDetector {
|
|||||||
String platformNameFromScriptDefinition = scriptDefinition.getPlatform();
|
String platformNameFromScriptDefinition = scriptDefinition.getPlatform();
|
||||||
for (IdePlatform platform : IdePlatformKind.Companion.getAll_PLATFORMS()) {
|
for (IdePlatform platform : IdePlatformKind.Companion.getAll_PLATFORMS()) {
|
||||||
TargetPlatform compilerPlatform = platform.getKind().getCompilerPlatform();
|
TargetPlatform compilerPlatform = platform.getKind().getCompilerPlatform();
|
||||||
if (compilerPlatform.getPlatformName().equals(platformNameFromScriptDefinition)) {
|
// FIXME(dsavvinov): get rid of matching by name
|
||||||
|
SimplePlatform simplePlatform = CollectionsKt.single(compilerPlatform);
|
||||||
|
if (simplePlatform.getPlatformName().equals(platformNameFromScriptDefinition)) {
|
||||||
return compilerPlatform;
|
return compilerPlatform;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,24 +5,24 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.idea.project
|
package org.jetbrains.kotlin.idea.project
|
||||||
|
|
||||||
import org.jetbrains.kotlin.analyzer.common.CommonPlatform
|
|
||||||
import org.jetbrains.kotlin.analyzer.common.CommonPlatformCompilerServices
|
import org.jetbrains.kotlin.analyzer.common.CommonPlatformCompilerServices
|
||||||
import org.jetbrains.kotlin.js.resolve.JsPlatform
|
|
||||||
import org.jetbrains.kotlin.js.resolve.JsPlatformCompilerServices
|
import org.jetbrains.kotlin.js.resolve.JsPlatformCompilerServices
|
||||||
import org.jetbrains.kotlin.resolve.PlatformDependentCompilerServices
|
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
import org.jetbrains.kotlin.resolve.TargetPlatform
|
import org.jetbrains.kotlin.platform.isCommon
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
|
import org.jetbrains.kotlin.platform.js.isJs
|
||||||
|
import org.jetbrains.kotlin.platform.jvm.isJvm
|
||||||
|
import org.jetbrains.kotlin.platform.konan.isNative
|
||||||
|
import org.jetbrains.kotlin.resolve.*
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformCompilerServices
|
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformCompilerServices
|
||||||
import org.jetbrains.kotlin.resolve.konan.platform.KonanPlatform
|
|
||||||
import org.jetbrains.kotlin.resolve.konan.platform.NativePlatformCompilerServices
|
import org.jetbrains.kotlin.resolve.konan.platform.NativePlatformCompilerServices
|
||||||
import java.lang.IllegalStateException
|
import java.lang.IllegalStateException
|
||||||
|
|
||||||
val TargetPlatform.findCompilerServices: PlatformDependentCompilerServices
|
val TargetPlatform.findCompilerServices: PlatformDependentCompilerServices
|
||||||
get() =
|
get() =
|
||||||
when (this) {
|
when {
|
||||||
is JvmPlatform -> JvmPlatformCompilerServices
|
isJvm() -> JvmPlatformCompilerServices
|
||||||
is JsPlatform -> JsPlatformCompilerServices
|
isJs() -> JsPlatformCompilerServices
|
||||||
is KonanPlatform -> NativePlatformCompilerServices
|
isNative() -> NativePlatformCompilerServices
|
||||||
is CommonPlatform -> CommonPlatformCompilerServices
|
isCommon() -> CommonPlatformCompilerServices
|
||||||
else -> throw IllegalStateException("Unknown platform $this")
|
else -> throw IllegalStateException("Unknown platform $this")
|
||||||
}
|
}
|
||||||
+3
-3
@@ -17,14 +17,14 @@ import org.jetbrains.kotlin.idea.configuration.getBuildSystemType
|
|||||||
import org.jetbrains.kotlin.idea.util.projectStructure.version
|
import org.jetbrains.kotlin.idea.util.projectStructure.version
|
||||||
import org.jetbrains.kotlin.idea.versions.MAVEN_STDLIB_ID_JDK7
|
import org.jetbrains.kotlin.idea.versions.MAVEN_STDLIB_ID_JDK7
|
||||||
import org.jetbrains.kotlin.idea.versions.hasJreSpecificRuntime
|
import org.jetbrains.kotlin.idea.versions.hasJreSpecificRuntime
|
||||||
import org.jetbrains.kotlin.resolve.TargetPlatform
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
|
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
|
|
||||||
class KotlinAndroidGradleModuleConfigurator internal constructor() : KotlinWithGradleConfigurator() {
|
class KotlinAndroidGradleModuleConfigurator internal constructor() : KotlinWithGradleConfigurator() {
|
||||||
|
|
||||||
override val name: String = NAME
|
override val name: String = NAME
|
||||||
|
|
||||||
override val targetPlatform: TargetPlatform = JvmPlatform
|
override val targetPlatform: TargetPlatform = JvmPlatforms.defaultJvmPlatform
|
||||||
|
|
||||||
override val presentableText: String = "Android with Gradle"
|
override val presentableText: String = "Android with Gradle"
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -33,7 +33,7 @@ import org.jetbrains.kotlin.idea.resolve.ResolutionFacade
|
|||||||
import org.jetbrains.kotlin.load.java.JvmAnnotationNames
|
import org.jetbrains.kotlin.load.java.JvmAnnotationNames
|
||||||
import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader
|
import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
|
import org.jetbrains.kotlin.platform.jvm.isJvm
|
||||||
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
|
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
|
||||||
import org.jetbrains.kotlin.resolve.scopes.MemberScope
|
import org.jetbrains.kotlin.resolve.scopes.MemberScope
|
||||||
import org.jetbrains.kotlin.resolve.scopes.getDescriptorsFiltered
|
import org.jetbrains.kotlin.resolve.scopes.getDescriptorsFiltered
|
||||||
@@ -68,7 +68,7 @@ class AllClassesCompletion(private val parameters: CompletionParameters,
|
|||||||
.forEach { classifierDescriptorCollector(it) }
|
.forEach { classifierDescriptorCollector(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
if (TargetPlatformDetector.getPlatform(parameters.originalFile as KtFile) == JvmPlatform) {
|
if (TargetPlatformDetector.getPlatform(parameters.originalFile as KtFile).isJvm()) {
|
||||||
addAdaptedJavaCompletion(javaClassCollector)
|
addAdaptedJavaCompletion(javaClassCollector)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -60,7 +60,7 @@ import org.jetbrains.kotlin.psi.psiUtil.*
|
|||||||
import org.jetbrains.kotlin.renderer.render
|
import org.jetbrains.kotlin.renderer.render
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.*
|
import org.jetbrains.kotlin.resolve.descriptorUtil.*
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
|
import org.jetbrains.kotlin.platform.jvm.isJvm
|
||||||
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
||||||
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindExclude
|
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindExclude
|
||||||
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
|
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
|
||||||
@@ -270,7 +270,7 @@ class BasicCompletionSession(
|
|||||||
val packageNames = PackageIndexUtil.getSubPackageFqNames(FqName.ROOT, searchScope, project, prefixMatcher.asNameFilter())
|
val packageNames = PackageIndexUtil.getSubPackageFqNames(FqName.ROOT, searchScope, project, prefixMatcher.asNameFilter())
|
||||||
.toMutableSet()
|
.toMutableSet()
|
||||||
|
|
||||||
if (TargetPlatformDetector.getPlatform(parameters.originalFile as KtFile) == JvmPlatform) {
|
if (TargetPlatformDetector.getPlatform(parameters.originalFile as KtFile).isJvm()) {
|
||||||
JavaPsiFacade.getInstance(project).findPackage("")?.getSubPackages(searchScope)?.forEach { psiPackage ->
|
JavaPsiFacade.getInstance(project).findPackage("")?.getSubPackages(searchScope)?.forEach { psiPackage ->
|
||||||
val name = psiPackage.name
|
val name = psiPackage.name
|
||||||
if (Name.isValidIdentifier(name!!)) {
|
if (Name.isValidIdentifier(name!!)) {
|
||||||
|
|||||||
@@ -28,7 +28,6 @@ import com.intellij.patterns.PatternCondition
|
|||||||
import com.intellij.patterns.StandardPatterns
|
import com.intellij.patterns.StandardPatterns
|
||||||
import com.intellij.psi.search.GlobalSearchScope
|
import com.intellij.psi.search.GlobalSearchScope
|
||||||
import com.intellij.util.ProcessingContext
|
import com.intellij.util.ProcessingContext
|
||||||
import org.jetbrains.kotlin.config.LanguageFeature
|
|
||||||
import org.jetbrains.kotlin.descriptors.*
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
import org.jetbrains.kotlin.idea.caches.project.ModuleOrigin
|
import org.jetbrains.kotlin.idea.caches.project.ModuleOrigin
|
||||||
import org.jetbrains.kotlin.idea.caches.project.OriginCapability
|
import org.jetbrains.kotlin.idea.caches.project.OriginCapability
|
||||||
@@ -38,15 +37,13 @@ import org.jetbrains.kotlin.idea.codeInsight.ReferenceVariantsHelper
|
|||||||
import org.jetbrains.kotlin.idea.core.*
|
import org.jetbrains.kotlin.idea.core.*
|
||||||
import org.jetbrains.kotlin.idea.imports.importableFqName
|
import org.jetbrains.kotlin.idea.imports.importableFqName
|
||||||
import org.jetbrains.kotlin.idea.project.TargetPlatformDetector
|
import org.jetbrains.kotlin.idea.project.TargetPlatformDetector
|
||||||
import org.jetbrains.kotlin.idea.project.languageVersionSettings
|
|
||||||
import org.jetbrains.kotlin.idea.references.mainReference
|
import org.jetbrains.kotlin.idea.references.mainReference
|
||||||
import org.jetbrains.kotlin.idea.util.*
|
import org.jetbrains.kotlin.idea.util.*
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
import org.jetbrains.kotlin.resolve.MultiTargetPlatform
|
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.module
|
import org.jetbrains.kotlin.resolve.descriptorUtil.module
|
||||||
import org.jetbrains.kotlin.resolve.getMultiTargetPlatform
|
import org.jetbrains.kotlin.platform.isCommon
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
|
import org.jetbrains.kotlin.platform.jvm.isJvm
|
||||||
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
|
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
|
||||||
import org.jetbrains.kotlin.resolve.scopes.receivers.ExpressionReceiver
|
import org.jetbrains.kotlin.resolve.scopes.receivers.ExpressionReceiver
|
||||||
import org.jetbrains.kotlin.types.TypeUtils
|
import org.jetbrains.kotlin.types.TypeUtils
|
||||||
@@ -88,7 +85,7 @@ abstract class CompletionSession(
|
|||||||
protected val resolutionFacade = file.getResolutionFacade()
|
protected val resolutionFacade = file.getResolutionFacade()
|
||||||
protected val moduleDescriptor = resolutionFacade.moduleDescriptor
|
protected val moduleDescriptor = resolutionFacade.moduleDescriptor
|
||||||
protected val project = position.project
|
protected val project = position.project
|
||||||
protected val isJvmModule = TargetPlatformDetector.getPlatform(parameters.originalFile as KtFile) == JvmPlatform
|
protected val isJvmModule = TargetPlatformDetector.getPlatform(parameters.originalFile as KtFile).isJvm()
|
||||||
protected val isDebuggerContext = file is KtCodeFragment
|
protected val isDebuggerContext = file is KtCodeFragment
|
||||||
|
|
||||||
protected val nameExpression: KtSimpleNameExpression?
|
protected val nameExpression: KtSimpleNameExpression?
|
||||||
@@ -149,7 +146,7 @@ abstract class CompletionSession(
|
|||||||
{ CompletionBenchmarkSink.instance.onFlush(this) },
|
{ CompletionBenchmarkSink.instance.onFlush(this) },
|
||||||
prefixMatcher, parameters, resultSet,
|
prefixMatcher, parameters, resultSet,
|
||||||
createSorter(), (file as? KtCodeFragment)?.extraCompletionFilter,
|
createSorter(), (file as? KtCodeFragment)?.extraCompletionFilter,
|
||||||
moduleDescriptor.getMultiTargetPlatform() === MultiTargetPlatform.Common
|
moduleDescriptor.platform.isCommon()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -7,10 +7,10 @@ package org.jetbrains.kotlin.idea.completion.test
|
|||||||
|
|
||||||
import com.intellij.codeInsight.completion.CompletionType
|
import com.intellij.codeInsight.completion.CompletionType
|
||||||
import org.jetbrains.kotlin.idea.test.SdkAndMockLibraryProjectDescriptor
|
import org.jetbrains.kotlin.idea.test.SdkAndMockLibraryProjectDescriptor
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||||
|
|
||||||
abstract class AbstractCompiledKotlinInJavaCompletionTest : KotlinFixtureCompletionBaseTestCase() {
|
abstract class AbstractCompiledKotlinInJavaCompletionTest : KotlinFixtureCompletionBaseTestCase() {
|
||||||
override fun getPlatform() = JvmPlatform
|
override fun getPlatform() = JvmPlatforms.defaultJvmPlatform
|
||||||
|
|
||||||
override fun getProjectDescriptor() =
|
override fun getProjectDescriptor() =
|
||||||
SdkAndMockLibraryProjectDescriptor(COMPLETION_TEST_DATA_BASE_PATH + "/injava/mockLib", false)
|
SdkAndMockLibraryProjectDescriptor(COMPLETION_TEST_DATA_BASE_PATH + "/injava/mockLib", false)
|
||||||
|
|||||||
+2
-2
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.idea.completion.CompletionBindingContextProvider
|
|||||||
import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase
|
import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase
|
||||||
import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor
|
import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor
|
||||||
import org.jetbrains.kotlin.idea.util.application.executeWriteCommand
|
import org.jetbrains.kotlin.idea.util.application.executeWriteCommand
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||||
import org.jetbrains.kotlin.test.InTextDirectivesUtils
|
import org.jetbrains.kotlin.test.InTextDirectivesUtils
|
||||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@@ -82,7 +82,7 @@ abstract class AbstractCompletionIncrementalResolveTest : KotlinLightCodeInsight
|
|||||||
}
|
}
|
||||||
|
|
||||||
testCompletion(FileUtil.loadFile(file, true),
|
testCompletion(FileUtil.loadFile(file, true),
|
||||||
JvmPlatform,
|
JvmPlatforms.defaultJvmPlatform,
|
||||||
{ completionType, count -> myFixture.complete(completionType, count) },
|
{ completionType, count -> myFixture.complete(completionType, count) },
|
||||||
additionalValidDirectives = listOf(TYPE_DIRECTIVE_PREFIX, BACKSPACES_DIRECTIVE_PREFIX))
|
additionalValidDirectives = listOf(TYPE_DIRECTIVE_PREFIX, BACKSPACES_DIRECTIVE_PREFIX))
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -9,8 +9,8 @@ import com.intellij.codeInsight.completion.CompletionType;
|
|||||||
import com.intellij.testFramework.LightProjectDescriptor;
|
import com.intellij.testFramework.LightProjectDescriptor;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.kotlin.idea.test.KotlinStdJSProjectDescriptor;
|
import org.jetbrains.kotlin.idea.test.KotlinStdJSProjectDescriptor;
|
||||||
import org.jetbrains.kotlin.js.resolve.JsPlatform;
|
import org.jetbrains.kotlin.platform.TargetPlatform;
|
||||||
import org.jetbrains.kotlin.resolve.TargetPlatform;
|
import org.jetbrains.kotlin.platform.js.JsPlatforms;
|
||||||
|
|
||||||
public abstract class AbstractJSBasicCompletionTest extends KotlinFixtureCompletionBaseTestCase {
|
public abstract class AbstractJSBasicCompletionTest extends KotlinFixtureCompletionBaseTestCase {
|
||||||
@NotNull
|
@NotNull
|
||||||
@@ -22,7 +22,7 @@ public abstract class AbstractJSBasicCompletionTest extends KotlinFixtureComplet
|
|||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public TargetPlatform getPlatform() {
|
public TargetPlatform getPlatform() {
|
||||||
return JsPlatform.INSTANCE;
|
return JsPlatforms.INSTANCE.getDefaultJsPlatform();
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
+3
-3
@@ -9,8 +9,8 @@ import com.intellij.codeInsight.completion.CompletionType;
|
|||||||
import com.intellij.testFramework.LightProjectDescriptor;
|
import com.intellij.testFramework.LightProjectDescriptor;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor;
|
import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor;
|
||||||
import org.jetbrains.kotlin.resolve.TargetPlatform;
|
import org.jetbrains.kotlin.platform.TargetPlatform;
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform;
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms;
|
||||||
|
|
||||||
public abstract class AbstractJvmBasicCompletionTest extends KotlinFixtureCompletionBaseTestCase {
|
public abstract class AbstractJvmBasicCompletionTest extends KotlinFixtureCompletionBaseTestCase {
|
||||||
@NotNull
|
@NotNull
|
||||||
@@ -22,7 +22,7 @@ public abstract class AbstractJvmBasicCompletionTest extends KotlinFixtureComple
|
|||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public TargetPlatform getPlatform() {
|
public TargetPlatform getPlatform() {
|
||||||
return JvmPlatform.INSTANCE;
|
return JvmPlatforms.INSTANCE.getDefaultJvmPlatform();
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
+3
-3
@@ -9,8 +9,8 @@ import com.intellij.codeInsight.completion.CompletionType;
|
|||||||
import com.intellij.testFramework.LightProjectDescriptor;
|
import com.intellij.testFramework.LightProjectDescriptor;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor;
|
import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor;
|
||||||
import org.jetbrains.kotlin.resolve.TargetPlatform;
|
import org.jetbrains.kotlin.platform.TargetPlatform;
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform;
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms;
|
||||||
|
|
||||||
public abstract class AbstractJvmSmartCompletionTest extends KotlinFixtureCompletionBaseTestCase {
|
public abstract class AbstractJvmSmartCompletionTest extends KotlinFixtureCompletionBaseTestCase {
|
||||||
@NotNull
|
@NotNull
|
||||||
@@ -22,7 +22,7 @@ public abstract class AbstractJvmSmartCompletionTest extends KotlinFixtureComple
|
|||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public TargetPlatform getPlatform() {
|
public TargetPlatform getPlatform() {
|
||||||
return JvmPlatform.INSTANCE;
|
return JvmPlatforms.INSTANCE.getDefaultJvmPlatform();
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
+2
-2
@@ -9,7 +9,7 @@ import com.intellij.codeInsight.completion.CompletionType
|
|||||||
import com.intellij.testFramework.LightProjectDescriptor
|
import com.intellij.testFramework.LightProjectDescriptor
|
||||||
import org.jetbrains.kotlin.idea.test.SdkAndMockLibraryProjectDescriptor
|
import org.jetbrains.kotlin.idea.test.SdkAndMockLibraryProjectDescriptor
|
||||||
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
|
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||||
|
|
||||||
abstract class AbstractJvmWithLibBasicCompletionTest : KotlinFixtureCompletionBaseTestCase() {
|
abstract class AbstractJvmWithLibBasicCompletionTest : KotlinFixtureCompletionBaseTestCase() {
|
||||||
private val TEST_PATH = COMPLETION_TEST_DATA_BASE_PATH + "/basic/withLib"
|
private val TEST_PATH = COMPLETION_TEST_DATA_BASE_PATH + "/basic/withLib"
|
||||||
@@ -21,6 +21,6 @@ abstract class AbstractJvmWithLibBasicCompletionTest : KotlinFixtureCompletionBa
|
|||||||
return SdkAndMockLibraryProjectDescriptor(TEST_PATH + "/" + getTestName(false) + "Src", false)
|
return SdkAndMockLibraryProjectDescriptor(TEST_PATH + "/" + getTestName(false) + "Src", false)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getPlatform() = JvmPlatform
|
override fun getPlatform() = JvmPlatforms.defaultJvmPlatform
|
||||||
override fun defaultCompletionType() = CompletionType.BASIC
|
override fun defaultCompletionType() = CompletionType.BASIC
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -10,10 +10,10 @@ import com.intellij.codeInsight.lookup.LookupElement
|
|||||||
import org.jetbrains.kotlin.idea.completion.KeywordLookupObject
|
import org.jetbrains.kotlin.idea.completion.KeywordLookupObject
|
||||||
import org.jetbrains.kotlin.idea.test.KotlinLightProjectDescriptor
|
import org.jetbrains.kotlin.idea.test.KotlinLightProjectDescriptor
|
||||||
import org.jetbrains.kotlin.idea.test.KotlinProjectDescriptorWithFacet
|
import org.jetbrains.kotlin.idea.test.KotlinProjectDescriptorWithFacet
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||||
|
|
||||||
abstract class AbstractKeywordCompletionTest : KotlinFixtureCompletionBaseTestCase() {
|
abstract class AbstractKeywordCompletionTest : KotlinFixtureCompletionBaseTestCase() {
|
||||||
override fun getPlatform() = JvmPlatform
|
override fun getPlatform() = JvmPlatforms.defaultJvmPlatform
|
||||||
|
|
||||||
override fun defaultCompletionType() = CompletionType.BASIC
|
override fun defaultCompletionType() = CompletionType.BASIC
|
||||||
|
|
||||||
|
|||||||
+2
-4
@@ -7,14 +7,12 @@ package org.jetbrains.kotlin.idea.completion.test
|
|||||||
|
|
||||||
import com.intellij.codeInsight.completion.CompletionType
|
import com.intellij.codeInsight.completion.CompletionType
|
||||||
import com.intellij.openapi.util.io.FileUtil
|
import com.intellij.openapi.util.io.FileUtil
|
||||||
import com.intellij.openapi.vfs.VirtualFile
|
|
||||||
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase
|
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase
|
||||||
import org.apache.commons.io.FileUtils
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
|
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
abstract class AbstractKotlinSourceInJavaCompletionTest : KotlinFixtureCompletionBaseTestCase() {
|
abstract class AbstractKotlinSourceInJavaCompletionTest : KotlinFixtureCompletionBaseTestCase() {
|
||||||
override fun getPlatform() = JvmPlatform
|
override fun getPlatform() = JvmPlatforms.defaultJvmPlatform
|
||||||
|
|
||||||
override fun doTest(testPath: String) {
|
override fun doTest(testPath: String) {
|
||||||
val mockPath = RELATIVE_COMPLETION_TEST_DATA_BASE_PATH + "/injava/mockLib"
|
val mockPath = RELATIVE_COMPLETION_TEST_DATA_BASE_PATH + "/injava/mockLib"
|
||||||
|
|||||||
+2
-2
@@ -7,10 +7,10 @@ package org.jetbrains.kotlin.idea.completion.test
|
|||||||
|
|
||||||
import com.intellij.codeInsight.completion.CompletionType
|
import com.intellij.codeInsight.completion.CompletionType
|
||||||
import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor
|
import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||||
|
|
||||||
abstract class AbstractKotlinStdLibInJavaCompletionTest : KotlinFixtureCompletionBaseTestCase() {
|
abstract class AbstractKotlinStdLibInJavaCompletionTest : KotlinFixtureCompletionBaseTestCase() {
|
||||||
override fun getPlatform() = JvmPlatform
|
override fun getPlatform() = JvmPlatforms.defaultJvmPlatform
|
||||||
override fun getProjectDescriptor() = KotlinWithJdkAndRuntimeLightProjectDescriptor.INSTANCE
|
override fun getProjectDescriptor() = KotlinWithJdkAndRuntimeLightProjectDescriptor.INSTANCE
|
||||||
override fun defaultCompletionType() = CompletionType.BASIC
|
override fun defaultCompletionType() = CompletionType.BASIC
|
||||||
}
|
}
|
||||||
+2
-2
@@ -7,14 +7,14 @@ package org.jetbrains.kotlin.idea.completion.test
|
|||||||
|
|
||||||
import com.intellij.codeInsight.completion.CompletionType
|
import com.intellij.codeInsight.completion.CompletionType
|
||||||
import org.jetbrains.kotlin.idea.test.AstAccessControl
|
import org.jetbrains.kotlin.idea.test.AstAccessControl
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||||
|
|
||||||
abstract class AbstractMultiFileJvmBasicCompletionTest : KotlinCompletionTestCase() {
|
abstract class AbstractMultiFileJvmBasicCompletionTest : KotlinCompletionTestCase() {
|
||||||
protected fun doTest(testPath: String) {
|
protected fun doTest(testPath: String) {
|
||||||
configureByFile(getTestName(false) + ".kt", "")
|
configureByFile(getTestName(false) + ".kt", "")
|
||||||
val shouldFail = testPath.contains("NoSpecifiedType")
|
val shouldFail = testPath.contains("NoSpecifiedType")
|
||||||
AstAccessControl.testWithControlledAccessToAst(shouldFail, getFile().getVirtualFile(), getProject(), getTestRootDisposable(), {
|
AstAccessControl.testWithControlledAccessToAst(shouldFail, getFile().getVirtualFile(), getProject(), getTestRootDisposable(), {
|
||||||
testCompletion(file.text, JvmPlatform, { completionType, invocationCount ->
|
testCompletion(file.text, JvmPlatforms.defaultJvmPlatform, { completionType, invocationCount ->
|
||||||
setType(completionType)
|
setType(completionType)
|
||||||
complete(invocationCount)
|
complete(invocationCount)
|
||||||
myItems
|
myItems
|
||||||
|
|||||||
+2
-2
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.idea.completion.test
|
|||||||
|
|
||||||
import com.intellij.codeInsight.completion.CompletionType
|
import com.intellij.codeInsight.completion.CompletionType
|
||||||
import org.jetbrains.kotlin.idea.test.AstAccessControl
|
import org.jetbrains.kotlin.idea.test.AstAccessControl
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||||
|
|
||||||
abstract class AbstractMultiFileSmartCompletionTest : KotlinCompletionTestCase() {
|
abstract class AbstractMultiFileSmartCompletionTest : KotlinCompletionTestCase() {
|
||||||
override fun setUp() {
|
override fun setUp() {
|
||||||
@@ -18,7 +18,7 @@ abstract class AbstractMultiFileSmartCompletionTest : KotlinCompletionTestCase()
|
|||||||
protected fun doTest(testPath: String) {
|
protected fun doTest(testPath: String) {
|
||||||
configureByFile(getTestName(false) + ".kt", "")
|
configureByFile(getTestName(false) + ".kt", "")
|
||||||
AstAccessControl.testWithControlledAccessToAst(false, getFile().getVirtualFile(), getProject(), getTestRootDisposable(), {
|
AstAccessControl.testWithControlledAccessToAst(false, getFile().getVirtualFile(), getProject(), getTestRootDisposable(), {
|
||||||
testCompletion(file.text, JvmPlatform, { completionType, invocationCount ->
|
testCompletion(file.text, JvmPlatforms.defaultJvmPlatform, { completionType, invocationCount ->
|
||||||
setType(completionType)
|
setType(completionType)
|
||||||
complete(invocationCount)
|
complete(invocationCount)
|
||||||
myItems
|
myItems
|
||||||
|
|||||||
+7
-7
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.idea.completion.test
|
|||||||
import com.intellij.codeInsight.CodeInsightSettings
|
import com.intellij.codeInsight.CodeInsightSettings
|
||||||
import com.intellij.codeInsight.completion.CompletionType
|
import com.intellij.codeInsight.completion.CompletionType
|
||||||
import com.intellij.codeInsight.lookup.LookupElement
|
import com.intellij.codeInsight.lookup.LookupElement
|
||||||
import org.jetbrains.kotlin.resolve.TargetPlatform
|
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||||
import org.junit.Assert
|
import org.junit.Assert
|
||||||
|
|
||||||
@@ -17,12 +17,12 @@ val RELATIVE_COMPLETION_TEST_DATA_BASE_PATH = "idea/idea-completion/testData"
|
|||||||
val COMPLETION_TEST_DATA_BASE_PATH = KotlinTestUtils.getHomeDirectory() + "/" + RELATIVE_COMPLETION_TEST_DATA_BASE_PATH
|
val COMPLETION_TEST_DATA_BASE_PATH = KotlinTestUtils.getHomeDirectory() + "/" + RELATIVE_COMPLETION_TEST_DATA_BASE_PATH
|
||||||
|
|
||||||
fun testCompletion(
|
fun testCompletion(
|
||||||
fileText: String,
|
fileText: String,
|
||||||
platform: TargetPlatform?,
|
platform: TargetPlatform?,
|
||||||
complete: (CompletionType, Int) -> Array<LookupElement>?,
|
complete: (CompletionType, Int) -> Array<LookupElement>?,
|
||||||
defaultCompletionType: CompletionType = CompletionType.BASIC,
|
defaultCompletionType: CompletionType = CompletionType.BASIC,
|
||||||
defaultInvocationCount: Int = 0,
|
defaultInvocationCount: Int = 0,
|
||||||
additionalValidDirectives: Collection<String> = emptyList()
|
additionalValidDirectives: Collection<String> = emptyList()
|
||||||
) {
|
) {
|
||||||
testWithAutoCompleteSetting(fileText) {
|
testWithAutoCompleteSetting(fileText) {
|
||||||
val completionType = ExpectedCompletionUtils.getCompletionType(fileText) ?: defaultCompletionType
|
val completionType = ExpectedCompletionUtils.getCompletionType(fileText) ?: defaultCompletionType
|
||||||
|
|||||||
+18
-16
@@ -19,9 +19,11 @@ import org.jetbrains.kotlin.idea.completion.LookupElementFactory
|
|||||||
import org.jetbrains.kotlin.idea.core.completion.DeclarationLookupObject
|
import org.jetbrains.kotlin.idea.core.completion.DeclarationLookupObject
|
||||||
import org.jetbrains.kotlin.idea.test.AstAccessControl
|
import org.jetbrains.kotlin.idea.test.AstAccessControl
|
||||||
import org.jetbrains.kotlin.idea.util.module
|
import org.jetbrains.kotlin.idea.util.module
|
||||||
import org.jetbrains.kotlin.js.resolve.JsPlatform
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||||
import org.jetbrains.kotlin.resolve.TargetPlatform
|
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
|
import org.jetbrains.kotlin.platform.js.JsPlatforms
|
||||||
|
import org.jetbrains.kotlin.platform.js.isJs
|
||||||
|
import org.jetbrains.kotlin.platform.jvm.isJvm
|
||||||
import org.jetbrains.kotlin.test.InTextDirectivesUtils
|
import org.jetbrains.kotlin.test.InTextDirectivesUtils
|
||||||
import org.junit.Assert
|
import org.junit.Assert
|
||||||
import java.util.*
|
import java.util.*
|
||||||
@@ -87,7 +89,7 @@ object ExpectedCompletionUtils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private val UNSUPPORTED_PLATFORM_MESSAGE = "Only $JvmPlatform and $JsPlatform platforms are supported"
|
private val UNSUPPORTED_PLATFORM_MESSAGE = "Only ${JvmPlatforms.defaultJvmPlatform} and ${JsPlatforms.defaultJsPlatform} platforms are supported"
|
||||||
|
|
||||||
private val EXIST_LINE_PREFIX = "EXIST:"
|
private val EXIST_LINE_PREFIX = "EXIST:"
|
||||||
|
|
||||||
@@ -135,19 +137,19 @@ object ExpectedCompletionUtils {
|
|||||||
AstAccessControl.ALLOW_AST_ACCESS_DIRECTIVE)
|
AstAccessControl.ALLOW_AST_ACCESS_DIRECTIVE)
|
||||||
|
|
||||||
fun itemsShouldExist(fileText: String, platform: TargetPlatform?): Array<CompletionProposal> {
|
fun itemsShouldExist(fileText: String, platform: TargetPlatform?): Array<CompletionProposal> {
|
||||||
return when (platform) {
|
return when {
|
||||||
is JvmPlatform -> processProposalAssertions(fileText, EXIST_LINE_PREFIX, EXIST_JAVA_ONLY_LINE_PREFIX)
|
platform.isJvm() -> processProposalAssertions(fileText, EXIST_LINE_PREFIX, EXIST_JAVA_ONLY_LINE_PREFIX)
|
||||||
JsPlatform -> processProposalAssertions(fileText, EXIST_LINE_PREFIX, EXIST_JS_ONLY_LINE_PREFIX)
|
platform.isJs() -> processProposalAssertions(fileText, EXIST_LINE_PREFIX, EXIST_JS_ONLY_LINE_PREFIX)
|
||||||
null -> processProposalAssertions(fileText, EXIST_LINE_PREFIX)
|
platform == null -> processProposalAssertions(fileText, EXIST_LINE_PREFIX)
|
||||||
else -> throw IllegalArgumentException(UNSUPPORTED_PLATFORM_MESSAGE)
|
else -> throw IllegalArgumentException(UNSUPPORTED_PLATFORM_MESSAGE)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun itemsShouldAbsent(fileText: String, platform: TargetPlatform?): Array<CompletionProposal> {
|
fun itemsShouldAbsent(fileText: String, platform: TargetPlatform?): Array<CompletionProposal> {
|
||||||
return when (platform) {
|
return when {
|
||||||
is JvmPlatform -> processProposalAssertions(fileText, ABSENT_LINE_PREFIX, ABSENT_JAVA_LINE_PREFIX, EXIST_JS_ONLY_LINE_PREFIX)
|
platform.isJvm() -> processProposalAssertions(fileText, ABSENT_LINE_PREFIX, ABSENT_JAVA_LINE_PREFIX, EXIST_JS_ONLY_LINE_PREFIX)
|
||||||
JsPlatform -> processProposalAssertions(fileText, ABSENT_LINE_PREFIX, ABSENT_JS_LINE_PREFIX, EXIST_JAVA_ONLY_LINE_PREFIX)
|
platform.isJs() -> processProposalAssertions(fileText, ABSENT_LINE_PREFIX, ABSENT_JS_LINE_PREFIX, EXIST_JAVA_ONLY_LINE_PREFIX)
|
||||||
null -> processProposalAssertions(fileText, ABSENT_LINE_PREFIX)
|
platform == null -> processProposalAssertions(fileText, ABSENT_LINE_PREFIX)
|
||||||
else -> throw IllegalArgumentException(UNSUPPORTED_PLATFORM_MESSAGE)
|
else -> throw IllegalArgumentException(UNSUPPORTED_PLATFORM_MESSAGE)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -179,10 +181,10 @@ object ExpectedCompletionUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun getExpectedNumber(fileText: String, platform: TargetPlatform?): Int? {
|
fun getExpectedNumber(fileText: String, platform: TargetPlatform?): Int? {
|
||||||
return when (platform) {
|
return when {
|
||||||
null -> InTextDirectivesUtils.getPrefixedInt(fileText, NUMBER_LINE_PREFIX)
|
platform == null -> InTextDirectivesUtils.getPrefixedInt(fileText, NUMBER_LINE_PREFIX)
|
||||||
is JvmPlatform -> getPlatformExpectedNumber(fileText, NUMBER_JAVA_LINE_PREFIX)
|
platform.isJvm() -> getPlatformExpectedNumber(fileText, NUMBER_JAVA_LINE_PREFIX)
|
||||||
JsPlatform -> getPlatformExpectedNumber(fileText, NUMBER_JS_LINE_PREFIX)
|
platform.isJs() -> getPlatformExpectedNumber(fileText, NUMBER_JS_LINE_PREFIX)
|
||||||
else -> throw IllegalArgumentException(UNSUPPORTED_PLATFORM_MESSAGE)
|
else -> throw IllegalArgumentException(UNSUPPORTED_PLATFORM_MESSAGE)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -13,7 +13,7 @@ import org.jetbrains.kotlin.idea.test.CompilerTestDirectives
|
|||||||
import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase
|
import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase
|
||||||
import org.jetbrains.kotlin.idea.test.configureCompilerOptions
|
import org.jetbrains.kotlin.idea.test.configureCompilerOptions
|
||||||
import org.jetbrains.kotlin.idea.test.rollbackCompilerOptions
|
import org.jetbrains.kotlin.idea.test.rollbackCompilerOptions
|
||||||
import org.jetbrains.kotlin.resolve.TargetPlatform
|
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
abstract class KotlinFixtureCompletionBaseTestCase : KotlinLightCodeInsightFixtureTestCase() {
|
abstract class KotlinFixtureCompletionBaseTestCase : KotlinLightCodeInsightFixtureTestCase() {
|
||||||
|
|||||||
+2
-2
@@ -9,7 +9,7 @@ import org.jetbrains.kotlin.ide.konan.hasKotlinNativeRuntimeInScope
|
|||||||
import org.jetbrains.kotlin.idea.configuration.ConfigureKotlinStatus
|
import org.jetbrains.kotlin.idea.configuration.ConfigureKotlinStatus
|
||||||
import org.jetbrains.kotlin.idea.configuration.KotlinWithGradleConfigurator
|
import org.jetbrains.kotlin.idea.configuration.KotlinWithGradleConfigurator
|
||||||
import org.jetbrains.kotlin.idea.configuration.ModuleSourceRootGroup
|
import org.jetbrains.kotlin.idea.configuration.ModuleSourceRootGroup
|
||||||
import org.jetbrains.kotlin.resolve.konan.platform.KonanPlatform
|
import org.jetbrains.kotlin.platform.konan.KonanPlatforms
|
||||||
|
|
||||||
open class KotlinNativeGradleConfigurator : KotlinWithGradleConfigurator() {
|
open class KotlinNativeGradleConfigurator : KotlinWithGradleConfigurator() {
|
||||||
override fun getKotlinPluginExpression(forKotlinDsl: Boolean): String = ""
|
override fun getKotlinPluginExpression(forKotlinDsl: Boolean): String = ""
|
||||||
@@ -28,7 +28,7 @@ open class KotlinNativeGradleConfigurator : KotlinWithGradleConfigurator() {
|
|||||||
|
|
||||||
override val name: String get() = NAME
|
override val name: String get() = NAME
|
||||||
|
|
||||||
override val targetPlatform get() = KonanPlatform
|
override val targetPlatform get() = KonanPlatforms.defaultKonanPlatform
|
||||||
|
|
||||||
override val presentableText get() = PRESENTABLE_TEXT
|
override val presentableText get() = PRESENTABLE_TEXT
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -19,7 +19,7 @@ import org.jetbrains.kotlin.idea.project.platform
|
|||||||
import org.jetbrains.kotlin.idea.util.projectStructure.allModules
|
import org.jetbrains.kotlin.idea.util.projectStructure.allModules
|
||||||
import org.jetbrains.kotlin.konan.library.konanCommonLibraryPath
|
import org.jetbrains.kotlin.konan.library.konanCommonLibraryPath
|
||||||
import org.jetbrains.kotlin.konan.library.konanPlatformLibraryPath
|
import org.jetbrains.kotlin.konan.library.konanPlatformLibraryPath
|
||||||
import org.jetbrains.kotlin.platform.impl.isKotlinNative
|
import org.jetbrains.kotlin.platform.konan.isNative
|
||||||
import org.jetbrains.plugins.gradle.util.GradleConstants
|
import org.jetbrains.plugins.gradle.util.GradleConstants
|
||||||
import org.junit.Assert.*
|
import org.junit.Assert.*
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
@@ -111,7 +111,7 @@ private fun assertValidModule(module: Module, projectRoot: String) {
|
|||||||
detectLibraryKind(library.getFiles(OrderRootType.CLASSES)) == NativeLibraryKind
|
detectLibraryKind(library.getFiles(OrderRootType.CLASSES)) == NativeLibraryKind
|
||||||
}
|
}
|
||||||
|
|
||||||
if (module.platform.isKotlinNative) {
|
if (module.platform.isNative()) {
|
||||||
assertFalse("No Kotlin/Native libraries in $module", nativeLibraries.isEmpty())
|
assertFalse("No Kotlin/Native libraries in $module", nativeLibraries.isEmpty())
|
||||||
nativeLibraries.forEach { assertValidNativeLibrary(it, projectRoot) }
|
nativeLibraries.forEach { assertValidNativeLibrary(it, projectRoot) }
|
||||||
|
|
||||||
|
|||||||
+3
-4
@@ -16,14 +16,13 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.idea.configuration
|
package org.jetbrains.kotlin.idea.configuration
|
||||||
|
|
||||||
import com.intellij.facet.FacetManager
|
|
||||||
import com.intellij.openapi.module.Module
|
import com.intellij.openapi.module.Module
|
||||||
import com.intellij.openapi.projectRoots.Sdk
|
import com.intellij.openapi.projectRoots.Sdk
|
||||||
import com.intellij.psi.PsiFile
|
import com.intellij.psi.PsiFile
|
||||||
import org.jetbrains.kotlin.idea.core.isAndroidModule
|
import org.jetbrains.kotlin.idea.core.isAndroidModule
|
||||||
import org.jetbrains.kotlin.idea.versions.getDefaultJvmTarget
|
import org.jetbrains.kotlin.idea.versions.getDefaultJvmTarget
|
||||||
import org.jetbrains.kotlin.resolve.TargetPlatform
|
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||||
|
|
||||||
class KotlinGradleModuleConfigurator : KotlinWithGradleConfigurator() {
|
class KotlinGradleModuleConfigurator : KotlinWithGradleConfigurator() {
|
||||||
|
|
||||||
@@ -31,7 +30,7 @@ class KotlinGradleModuleConfigurator : KotlinWithGradleConfigurator() {
|
|||||||
get() = NAME
|
get() = NAME
|
||||||
|
|
||||||
override val targetPlatform: TargetPlatform
|
override val targetPlatform: TargetPlatform
|
||||||
get() = JvmPlatform
|
get() = JvmPlatforms.defaultJvmPlatform
|
||||||
|
|
||||||
override val presentableText: String
|
override val presentableText: String
|
||||||
get() = "Java with Gradle"
|
get() = "Java with Gradle"
|
||||||
|
|||||||
+3
-3
@@ -20,13 +20,13 @@ import com.intellij.openapi.projectRoots.Sdk
|
|||||||
import com.intellij.psi.PsiFile
|
import com.intellij.psi.PsiFile
|
||||||
import org.jetbrains.kotlin.idea.util.module
|
import org.jetbrains.kotlin.idea.util.module
|
||||||
import org.jetbrains.kotlin.idea.versions.MAVEN_JS_STDLIB_ID
|
import org.jetbrains.kotlin.idea.versions.MAVEN_JS_STDLIB_ID
|
||||||
import org.jetbrains.kotlin.js.resolve.JsPlatform
|
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
import org.jetbrains.kotlin.resolve.TargetPlatform
|
import org.jetbrains.kotlin.platform.js.JsPlatforms
|
||||||
|
|
||||||
class KotlinJsGradleModuleConfigurator : KotlinWithGradleConfigurator() {
|
class KotlinJsGradleModuleConfigurator : KotlinWithGradleConfigurator() {
|
||||||
override val name: String = "gradle-js"
|
override val name: String = "gradle-js"
|
||||||
override val presentableText: String = "JavaScript with Gradle"
|
override val presentableText: String = "JavaScript with Gradle"
|
||||||
override val targetPlatform: TargetPlatform = JsPlatform
|
override val targetPlatform: TargetPlatform = JsPlatforms.defaultJsPlatform
|
||||||
override val kotlinPluginName: String = KOTLIN_JS
|
override val kotlinPluginName: String = KOTLIN_JS
|
||||||
override fun getKotlinPluginExpression(forKotlinDsl: Boolean): String =
|
override fun getKotlinPluginExpression(forKotlinDsl: Boolean): String =
|
||||||
if (forKotlinDsl) "id(\"kotlin2js\")" else "id 'kotlin2js'"
|
if (forKotlinDsl) "id(\"kotlin2js\")" else "id 'kotlin2js'"
|
||||||
|
|||||||
+7
-7
@@ -47,12 +47,12 @@ import org.jetbrains.kotlin.idea.framework.KotlinSdkType
|
|||||||
import org.jetbrains.kotlin.idea.project.languageVersionSettings
|
import org.jetbrains.kotlin.idea.project.languageVersionSettings
|
||||||
import org.jetbrains.kotlin.idea.util.projectStructure.allModules
|
import org.jetbrains.kotlin.idea.util.projectStructure.allModules
|
||||||
import org.jetbrains.kotlin.idea.util.projectStructure.sdk
|
import org.jetbrains.kotlin.idea.util.projectStructure.sdk
|
||||||
import org.jetbrains.kotlin.js.resolve.JsPlatform
|
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
import org.jetbrains.kotlin.platform.impl.JvmIdePlatformKind
|
import org.jetbrains.kotlin.platform.impl.JvmIdePlatformKind
|
||||||
import org.jetbrains.kotlin.platform.impl.isCommon
|
import org.jetbrains.kotlin.platform.impl.isCommon
|
||||||
import org.jetbrains.kotlin.platform.impl.isJavaScript
|
import org.jetbrains.kotlin.platform.impl.isJavaScript
|
||||||
import org.jetbrains.kotlin.resolve.TargetPlatform
|
import org.jetbrains.kotlin.platform.js.JsPlatforms
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||||
import org.junit.Assert
|
import org.junit.Assert
|
||||||
import org.junit.Ignore
|
import org.junit.Ignore
|
||||||
@@ -933,9 +933,9 @@ class GradleFacetImportTest : GradleImportingTestCase() {
|
|||||||
configureByFiles()
|
configureByFiles()
|
||||||
importProject()
|
importProject()
|
||||||
|
|
||||||
checkStableModuleName("project_main", "project", JsPlatform, isProduction = true)
|
checkStableModuleName("project_main", "project", JsPlatforms.defaultJsPlatform, isProduction = true)
|
||||||
// Note "_test" suffix: this is current behavior of K2JS Compiler
|
// Note "_test" suffix: this is current behavior of K2JS Compiler
|
||||||
checkStableModuleName("project_test", "project_test", JsPlatform, isProduction = false)
|
checkStableModuleName("project_test", "project_test", JsPlatforms.defaultJsPlatform, isProduction = false)
|
||||||
|
|
||||||
assertAllModulesConfigured()
|
assertAllModulesConfigured()
|
||||||
}
|
}
|
||||||
@@ -945,8 +945,8 @@ class GradleFacetImportTest : GradleImportingTestCase() {
|
|||||||
configureByFiles()
|
configureByFiles()
|
||||||
importProject()
|
importProject()
|
||||||
|
|
||||||
checkStableModuleName("project_main", "project", JvmPlatform, isProduction = true)
|
checkStableModuleName("project_main", "project", JvmPlatforms.defaultJvmPlatform, isProduction = true)
|
||||||
checkStableModuleName("project_test", "project", JvmPlatform, isProduction = false)
|
checkStableModuleName("project_test", "project", JvmPlatforms.defaultJvmPlatform, isProduction = false)
|
||||||
|
|
||||||
assertAllModulesConfigured()
|
assertAllModulesConfigured()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import org.jetbrains.kotlin.cli.common.arguments.copyBean
|
|||||||
import org.jetbrains.kotlin.cli.common.arguments.parseCommandLineArguments
|
import org.jetbrains.kotlin.cli.common.arguments.parseCommandLineArguments
|
||||||
import org.jetbrains.kotlin.platform.IdePlatform
|
import org.jetbrains.kotlin.platform.IdePlatform
|
||||||
import org.jetbrains.kotlin.platform.IdePlatformKind
|
import org.jetbrains.kotlin.platform.IdePlatformKind
|
||||||
|
import org.jetbrains.kotlin.platform.TargetPlatformVersion
|
||||||
import org.jetbrains.kotlin.utils.DescriptionAware
|
import org.jetbrains.kotlin.utils.DescriptionAware
|
||||||
|
|
||||||
@Deprecated("Use IdePlatformKind instead.", level = DeprecationLevel.ERROR)
|
@Deprecated("Use IdePlatformKind instead.", level = DeprecationLevel.ERROR)
|
||||||
|
|||||||
-1
@@ -8,7 +8,6 @@ package org.jetbrains.kotlin.platform
|
|||||||
import com.intellij.openapi.components.ServiceManager
|
import com.intellij.openapi.components.ServiceManager
|
||||||
import org.jetbrains.kotlin.config.isJps
|
import org.jetbrains.kotlin.config.isJps
|
||||||
import org.jetbrains.kotlin.platform.impl.JvmIdePlatformKind
|
import org.jetbrains.kotlin.platform.impl.JvmIdePlatformKind
|
||||||
import org.jetbrains.kotlin.resolve.TargetPlatform
|
|
||||||
|
|
||||||
interface DefaultIdeTargetPlatformKindProvider {
|
interface DefaultIdeTargetPlatformKindProvider {
|
||||||
val defaultPlatform: IdePlatform<*, *>
|
val defaultPlatform: IdePlatform<*, *>
|
||||||
|
|||||||
@@ -6,7 +6,6 @@
|
|||||||
package org.jetbrains.kotlin.platform
|
package org.jetbrains.kotlin.platform
|
||||||
|
|
||||||
import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments
|
import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments
|
||||||
import org.jetbrains.kotlin.config.TargetPlatformVersion
|
|
||||||
import org.jetbrains.kotlin.utils.DescriptionAware
|
import org.jetbrains.kotlin.utils.DescriptionAware
|
||||||
|
|
||||||
abstract class IdePlatform<Kind : IdePlatformKind<Kind>, out Arguments : CommonCompilerArguments> : DescriptionAware {
|
abstract class IdePlatform<Kind : IdePlatformKind<Kind>, out Arguments : CommonCompilerArguments> : DescriptionAware {
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ import org.jetbrains.kotlin.platform.impl.CommonIdePlatformKind
|
|||||||
import org.jetbrains.kotlin.platform.impl.JsIdePlatformKind
|
import org.jetbrains.kotlin.platform.impl.JsIdePlatformKind
|
||||||
import org.jetbrains.kotlin.platform.impl.JvmIdePlatformKind
|
import org.jetbrains.kotlin.platform.impl.JvmIdePlatformKind
|
||||||
import org.jetbrains.kotlin.platform.impl.NativeIdePlatformKind
|
import org.jetbrains.kotlin.platform.impl.NativeIdePlatformKind
|
||||||
import org.jetbrains.kotlin.resolve.TargetPlatform
|
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult
|
import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult
|
||||||
|
|
||||||
abstract class IdePlatformKind<Kind : IdePlatformKind<Kind>> {
|
abstract class IdePlatformKind<Kind : IdePlatformKind<Kind>> {
|
||||||
|
|||||||
+3
-3
@@ -6,12 +6,12 @@
|
|||||||
@file:JvmName("CommonIdePlatformUtil")
|
@file:JvmName("CommonIdePlatformUtil")
|
||||||
package org.jetbrains.kotlin.platform.impl
|
package org.jetbrains.kotlin.platform.impl
|
||||||
|
|
||||||
import org.jetbrains.kotlin.analyzer.common.CommonPlatform
|
|
||||||
import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments
|
import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments
|
||||||
import org.jetbrains.kotlin.cli.common.arguments.K2MetadataCompilerArguments
|
import org.jetbrains.kotlin.cli.common.arguments.K2MetadataCompilerArguments
|
||||||
import org.jetbrains.kotlin.config.TargetPlatformVersion
|
import org.jetbrains.kotlin.platform.CommonPlatforms
|
||||||
import org.jetbrains.kotlin.platform.IdePlatform
|
import org.jetbrains.kotlin.platform.IdePlatform
|
||||||
import org.jetbrains.kotlin.platform.IdePlatformKind
|
import org.jetbrains.kotlin.platform.IdePlatformKind
|
||||||
|
import org.jetbrains.kotlin.platform.TargetPlatformVersion
|
||||||
|
|
||||||
object CommonIdePlatformKind : IdePlatformKind<CommonIdePlatformKind>() {
|
object CommonIdePlatformKind : IdePlatformKind<CommonIdePlatformKind>() {
|
||||||
|
|
||||||
@@ -20,7 +20,7 @@ object CommonIdePlatformKind : IdePlatformKind<CommonIdePlatformKind>() {
|
|||||||
else null
|
else null
|
||||||
}
|
}
|
||||||
|
|
||||||
override val compilerPlatform get() = CommonPlatform
|
override val compilerPlatform get() = CommonPlatforms.defaultCommonPlatform
|
||||||
|
|
||||||
override val platforms get() = listOf(Platform)
|
override val platforms get() = listOf(Platform)
|
||||||
override val defaultPlatform get() = Platform
|
override val defaultPlatform get() = Platform
|
||||||
|
|||||||
@@ -8,10 +8,10 @@ package org.jetbrains.kotlin.platform.impl
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments
|
import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments
|
||||||
import org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments
|
import org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments
|
||||||
import org.jetbrains.kotlin.config.TargetPlatformVersion
|
import org.jetbrains.kotlin.platform.TargetPlatformVersion
|
||||||
import org.jetbrains.kotlin.js.resolve.JsPlatform
|
|
||||||
import org.jetbrains.kotlin.platform.IdePlatform
|
import org.jetbrains.kotlin.platform.IdePlatform
|
||||||
import org.jetbrains.kotlin.platform.IdePlatformKind
|
import org.jetbrains.kotlin.platform.IdePlatformKind
|
||||||
|
import org.jetbrains.kotlin.platform.js.JsPlatforms
|
||||||
|
|
||||||
object JsIdePlatformKind : IdePlatformKind<JsIdePlatformKind>() {
|
object JsIdePlatformKind : IdePlatformKind<JsIdePlatformKind>() {
|
||||||
|
|
||||||
@@ -20,7 +20,7 @@ object JsIdePlatformKind : IdePlatformKind<JsIdePlatformKind>() {
|
|||||||
else null
|
else null
|
||||||
}
|
}
|
||||||
|
|
||||||
override val compilerPlatform get() = JsPlatform
|
override val compilerPlatform get() = JsPlatforms.defaultJsPlatform
|
||||||
|
|
||||||
override val platforms get() = listOf(Platform)
|
override val platforms get() = listOf(Platform)
|
||||||
override val defaultPlatform get() = Platform
|
override val defaultPlatform get() = Platform
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments
|
|||||||
import org.jetbrains.kotlin.config.JvmTarget
|
import org.jetbrains.kotlin.config.JvmTarget
|
||||||
import org.jetbrains.kotlin.platform.IdePlatform
|
import org.jetbrains.kotlin.platform.IdePlatform
|
||||||
import org.jetbrains.kotlin.platform.IdePlatformKind
|
import org.jetbrains.kotlin.platform.IdePlatformKind
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||||
|
|
||||||
object JvmIdePlatformKind : IdePlatformKind<JvmIdePlatformKind>() {
|
object JvmIdePlatformKind : IdePlatformKind<JvmIdePlatformKind>() {
|
||||||
|
|
||||||
@@ -26,7 +26,7 @@ object JvmIdePlatformKind : IdePlatformKind<JvmIdePlatformKind>() {
|
|||||||
} else null
|
} else null
|
||||||
}
|
}
|
||||||
|
|
||||||
override val compilerPlatform get() = JvmPlatform
|
override val compilerPlatform get() = JvmPlatforms.defaultJvmPlatform
|
||||||
|
|
||||||
override val platforms = JvmTarget.values().map { ver -> Platform(ver) }
|
override val platforms = JvmTarget.values().map { ver -> Platform(ver) }
|
||||||
override val defaultPlatform get() = Platform(JvmTarget.DEFAULT)
|
override val defaultPlatform get() = Platform(JvmTarget.DEFAULT)
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user