Use LanguageVersionSettings from project instead of LanguageVersionSettingsImpl.DEFAULT for sdk and library resolver.
General effect will be the following: - all member scopes for libraries and JDK will be constructed with -language-version/-api-version specified in project settings - for modules with another (not like in project settings) -api-version or -language-version we will have not correct member scope -- for example we will see typealiases from such libraries. #KT-15979 Fixed (cherry picked from commit 0001865)
This commit is contained in:
committed by
Stanislav Erokhin
parent
ac4be88627
commit
382122470f
@@ -99,7 +99,7 @@ object JvmAnalyzerFacade : AnalyzerFacade<JvmPlatformParameters>() {
|
|||||||
targetEnvironment,
|
targetEnvironment,
|
||||||
LookupTracker.DO_NOTHING,
|
LookupTracker.DO_NOTHING,
|
||||||
packagePartProvider,
|
packagePartProvider,
|
||||||
languageSettingsProvider.getLanguageVersionSettings(moduleInfo),
|
languageSettingsProvider.getLanguageVersionSettings(moduleInfo, project),
|
||||||
useBuiltInsProvider = false, // TODO: load built-ins from module dependencies in IDE
|
useBuiltInsProvider = false, // TODO: load built-ins from module dependencies in IDE
|
||||||
useLazyResolve = true,
|
useLazyResolve = true,
|
||||||
compilerConfiguration = compilerConfiguration
|
compilerConfiguration = compilerConfiguration
|
||||||
|
|||||||
@@ -259,12 +259,12 @@ private class DelegatingPackageFragmentProvider(
|
|||||||
}
|
}
|
||||||
|
|
||||||
interface LanguageSettingsProvider {
|
interface LanguageSettingsProvider {
|
||||||
fun getLanguageVersionSettings(moduleInfo: ModuleInfo): LanguageVersionSettings
|
fun getLanguageVersionSettings(moduleInfo: ModuleInfo, project: Project): LanguageVersionSettings
|
||||||
|
|
||||||
fun getTargetPlatform(moduleInfo: ModuleInfo): DescriptionAware
|
fun getTargetPlatform(moduleInfo: ModuleInfo): DescriptionAware
|
||||||
|
|
||||||
object Default : LanguageSettingsProvider {
|
object Default : LanguageSettingsProvider {
|
||||||
override fun getLanguageVersionSettings(moduleInfo: ModuleInfo) = LanguageVersionSettingsImpl.DEFAULT
|
override fun getLanguageVersionSettings(moduleInfo: ModuleInfo, project: Project) = LanguageVersionSettingsImpl.DEFAULT
|
||||||
|
|
||||||
override fun getTargetPlatform(moduleInfo: ModuleInfo): DescriptionAware = DescriptionAware.NoVersion
|
override fun getTargetPlatform(moduleInfo: ModuleInfo): DescriptionAware = DescriptionAware.NoVersion
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,9 +24,9 @@ import org.jetbrains.kotlin.analyzer.ModuleInfo
|
|||||||
import org.jetbrains.kotlin.builtins.DefaultBuiltIns
|
import org.jetbrains.kotlin.builtins.DefaultBuiltIns
|
||||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||||
import org.jetbrains.kotlin.config.LanguageFeature
|
import org.jetbrains.kotlin.config.LanguageFeature
|
||||||
import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
|
|
||||||
import org.jetbrains.kotlin.context.GlobalContextImpl
|
import org.jetbrains.kotlin.context.GlobalContextImpl
|
||||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||||
|
import org.jetbrains.kotlin.idea.project.languageVersionSettings
|
||||||
import org.jetbrains.kotlin.js.resolve.JsPlatform
|
import org.jetbrains.kotlin.js.resolve.JsPlatform
|
||||||
import org.jetbrains.kotlin.platform.JvmBuiltIns
|
import org.jetbrains.kotlin.platform.JvmBuiltIns
|
||||||
import org.jetbrains.kotlin.resolve.TargetPlatform
|
import org.jetbrains.kotlin.resolve.TargetPlatform
|
||||||
@@ -52,7 +52,7 @@ class BuiltInsCache private constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun getBuiltIns(moduleInfo: ModuleInfo): KotlinBuiltIns {
|
fun getBuiltIns(moduleInfo: ModuleInfo): KotlinBuiltIns {
|
||||||
val languageFeatureSettings = LanguageSettingsProvider.getInstance(project).getLanguageVersionSettings(moduleInfo)
|
val languageFeatureSettings = LanguageSettingsProvider.getInstance(project).getLanguageVersionSettings(moduleInfo, project)
|
||||||
return cache.get(languageFeatureSettings.supportsFeature(LanguageFeature.AdditionalBuiltInsMembers))
|
return cache.get(languageFeatureSettings.supportsFeature(LanguageFeature.AdditionalBuiltInsMembers))
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -74,7 +74,7 @@ class BuiltInsCache private constructor(
|
|||||||
val builtInsCache = BuiltInsCache(project, platform, sdk, sdkModuleDescriptor, sdkContext)
|
val builtInsCache = BuiltInsCache(project, platform, sdk, sdkModuleDescriptor, sdkContext)
|
||||||
|
|
||||||
if (sdkBuiltIns is JvmBuiltIns) {
|
if (sdkBuiltIns is JvmBuiltIns) {
|
||||||
val isAdditionalBuiltInsFeatureSupported = LanguageVersionSettingsImpl.DEFAULT.supportsFeature(LanguageFeature.AdditionalBuiltInsMembers)
|
val isAdditionalBuiltInsFeatureSupported = project.languageVersionSettings.supportsFeature(LanguageFeature.AdditionalBuiltInsMembers)
|
||||||
sdkBuiltIns.initialize(
|
sdkBuiltIns.initialize(
|
||||||
sdkModuleDescriptor!!, // sdk is not null for JvmBuiltIns because of calculateBuiltIns
|
sdkModuleDescriptor!!, // sdk is not null for JvmBuiltIns because of calculateBuiltIns
|
||||||
isAdditionalBuiltInsFeatureSupported)
|
isAdditionalBuiltInsFeatureSupported)
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ object JsAnalyzerFacade : AnalyzerFacade<PlatformAnalysisParameters>() {
|
|||||||
BindingTraceContext(),
|
BindingTraceContext(),
|
||||||
JsPlatform,
|
JsPlatform,
|
||||||
targetEnvironment,
|
targetEnvironment,
|
||||||
LanguageSettingsProvider.getInstance(project).getLanguageVersionSettings(moduleInfo)
|
LanguageSettingsProvider.getInstance(project).getLanguageVersionSettings(moduleInfo, project)
|
||||||
)
|
)
|
||||||
var packageFragmentProvider = container.get<ResolveSession>().packageFragmentProvider
|
var packageFragmentProvider = container.get<ResolveSession>().packageFragmentProvider
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.idea.compiler
|
package org.jetbrains.kotlin.idea.compiler
|
||||||
|
|
||||||
|
import com.intellij.openapi.project.Project
|
||||||
import org.jetbrains.kotlin.analyzer.LanguageSettingsProvider
|
import org.jetbrains.kotlin.analyzer.LanguageSettingsProvider
|
||||||
import org.jetbrains.kotlin.analyzer.ModuleInfo
|
import org.jetbrains.kotlin.analyzer.ModuleInfo
|
||||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||||
@@ -26,8 +27,8 @@ import org.jetbrains.kotlin.idea.project.targetPlatform
|
|||||||
import org.jetbrains.kotlin.utils.DescriptionAware
|
import org.jetbrains.kotlin.utils.DescriptionAware
|
||||||
|
|
||||||
class LanguageVersionSettingsProviderImpl : LanguageSettingsProvider {
|
class LanguageVersionSettingsProviderImpl : LanguageSettingsProvider {
|
||||||
override fun getLanguageVersionSettings(moduleInfo: ModuleInfo): LanguageVersionSettings {
|
override fun getLanguageVersionSettings(moduleInfo: ModuleInfo, project: Project): LanguageVersionSettings {
|
||||||
return (moduleInfo as? ModuleSourceInfo)?.module?.languageVersionSettings ?: LanguageVersionSettingsImpl.DEFAULT
|
return (moduleInfo as? ModuleSourceInfo)?.module?.languageVersionSettings ?: project.languageVersionSettings
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getTargetPlatform(moduleInfo: ModuleInfo): DescriptionAware {
|
override fun getTargetPlatform(moduleInfo: ModuleInfo): DescriptionAware {
|
||||||
|
|||||||
Reference in New Issue
Block a user