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,
|
||||
LookupTracker.DO_NOTHING,
|
||||
packagePartProvider,
|
||||
languageSettingsProvider.getLanguageVersionSettings(moduleInfo),
|
||||
languageSettingsProvider.getLanguageVersionSettings(moduleInfo, project),
|
||||
useBuiltInsProvider = false, // TODO: load built-ins from module dependencies in IDE
|
||||
useLazyResolve = true,
|
||||
compilerConfiguration = compilerConfiguration
|
||||
|
||||
@@ -259,12 +259,12 @@ private class DelegatingPackageFragmentProvider(
|
||||
}
|
||||
|
||||
interface LanguageSettingsProvider {
|
||||
fun getLanguageVersionSettings(moduleInfo: ModuleInfo): LanguageVersionSettings
|
||||
fun getLanguageVersionSettings(moduleInfo: ModuleInfo, project: Project): LanguageVersionSettings
|
||||
|
||||
fun getTargetPlatform(moduleInfo: ModuleInfo): DescriptionAware
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
@@ -24,9 +24,9 @@ import org.jetbrains.kotlin.analyzer.ModuleInfo
|
||||
import org.jetbrains.kotlin.builtins.DefaultBuiltIns
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.config.LanguageFeature
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
|
||||
import org.jetbrains.kotlin.context.GlobalContextImpl
|
||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||
import org.jetbrains.kotlin.idea.project.languageVersionSettings
|
||||
import org.jetbrains.kotlin.js.resolve.JsPlatform
|
||||
import org.jetbrains.kotlin.platform.JvmBuiltIns
|
||||
import org.jetbrains.kotlin.resolve.TargetPlatform
|
||||
@@ -52,7 +52,7 @@ class BuiltInsCache private constructor(
|
||||
}
|
||||
|
||||
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))
|
||||
}
|
||||
|
||||
@@ -74,7 +74,7 @@ class BuiltInsCache private constructor(
|
||||
val builtInsCache = BuiltInsCache(project, platform, sdk, sdkModuleDescriptor, sdkContext)
|
||||
|
||||
if (sdkBuiltIns is JvmBuiltIns) {
|
||||
val isAdditionalBuiltInsFeatureSupported = LanguageVersionSettingsImpl.DEFAULT.supportsFeature(LanguageFeature.AdditionalBuiltInsMembers)
|
||||
val isAdditionalBuiltInsFeatureSupported = project.languageVersionSettings.supportsFeature(LanguageFeature.AdditionalBuiltInsMembers)
|
||||
sdkBuiltIns.initialize(
|
||||
sdkModuleDescriptor!!, // sdk is not null for JvmBuiltIns because of calculateBuiltIns
|
||||
isAdditionalBuiltInsFeatureSupported)
|
||||
|
||||
@@ -61,7 +61,7 @@ object JsAnalyzerFacade : AnalyzerFacade<PlatformAnalysisParameters>() {
|
||||
BindingTraceContext(),
|
||||
JsPlatform,
|
||||
targetEnvironment,
|
||||
LanguageSettingsProvider.getInstance(project).getLanguageVersionSettings(moduleInfo)
|
||||
LanguageSettingsProvider.getInstance(project).getLanguageVersionSettings(moduleInfo, project)
|
||||
)
|
||||
var packageFragmentProvider = container.get<ResolveSession>().packageFragmentProvider
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.idea.compiler
|
||||
|
||||
import com.intellij.openapi.project.Project
|
||||
import org.jetbrains.kotlin.analyzer.LanguageSettingsProvider
|
||||
import org.jetbrains.kotlin.analyzer.ModuleInfo
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||
@@ -26,8 +27,8 @@ import org.jetbrains.kotlin.idea.project.targetPlatform
|
||||
import org.jetbrains.kotlin.utils.DescriptionAware
|
||||
|
||||
class LanguageVersionSettingsProviderImpl : LanguageSettingsProvider {
|
||||
override fun getLanguageVersionSettings(moduleInfo: ModuleInfo): LanguageVersionSettings {
|
||||
return (moduleInfo as? ModuleSourceInfo)?.module?.languageVersionSettings ?: LanguageVersionSettingsImpl.DEFAULT
|
||||
override fun getLanguageVersionSettings(moduleInfo: ModuleInfo, project: Project): LanguageVersionSettings {
|
||||
return (moduleInfo as? ModuleSourceInfo)?.module?.languageVersionSettings ?: project.languageVersionSettings
|
||||
}
|
||||
|
||||
override fun getTargetPlatform(moduleInfo: ModuleInfo): DescriptionAware {
|
||||
|
||||
Reference in New Issue
Block a user