Kotlin Facet: Use facet configuration to provide language version for IDE analyzer

This commit is contained in:
Alexey Sedunov
2016-10-27 18:35:02 +03:00
parent 6dd950cd5a
commit 30d08c989d
14 changed files with 119 additions and 16 deletions
@@ -19,7 +19,6 @@ package org.jetbrains.kotlin.resolve.jvm
import com.intellij.openapi.diagnostic.Logger
import com.intellij.psi.search.GlobalSearchScope
import org.jetbrains.kotlin.analyzer.*
import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
import org.jetbrains.kotlin.container.get
import org.jetbrains.kotlin.context.ModuleContext
import org.jetbrains.kotlin.descriptors.PackagePartProvider
@@ -88,7 +87,7 @@ object JvmAnalyzerFacade : AnalyzerFacade<JvmPlatformParameters>() {
targetEnvironment,
LookupTracker.DO_NOTHING,
packagePartProvider,
LanguageVersionSettingsImpl.DEFAULT, // TODO: see KT-12410
LanguageVersionSettingsProvider.getInstance(project).getLanguageVersionSettings(moduleInfo),
useBuiltInsProvider = false, // TODO: load built-ins from module dependencies in IDE
useLazyResolve = true
)
@@ -16,9 +16,13 @@
package org.jetbrains.kotlin.analyzer
import com.intellij.openapi.components.ServiceManager
import com.intellij.openapi.project.Project
import com.intellij.psi.search.GlobalSearchScope
import org.jetbrains.kotlin.builtins.DefaultBuiltIns
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.config.LanguageVersionSettings
import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
import org.jetbrains.kotlin.container.ComponentProvider
import org.jetbrains.kotlin.context.ModuleContext
import org.jetbrains.kotlin.context.ProjectContext
@@ -246,3 +250,15 @@ private class DelegatingPackageFragmentProvider(
return delegate().getSubPackagesOf(fqName, nameFilter)
}
}
interface LanguageVersionSettingsProvider {
fun getLanguageVersionSettings(moduleInfo: ModuleInfo): LanguageVersionSettings
object Default : LanguageVersionSettingsProvider {
override fun getLanguageVersionSettings(moduleInfo: ModuleInfo) = LanguageVersionSettingsImpl.DEFAULT
}
companion object {
fun getInstance(project: Project) = ServiceManager.getService(project, LanguageVersionSettingsProvider::class.java) ?: Default
}
}
@@ -16,6 +16,7 @@
package org.jetbrains.kotlin.config
import com.intellij.openapi.module.Module
import org.jetbrains.kotlin.config.LanguageVersion.KOTLIN_1_1
import org.jetbrains.kotlin.utils.DescriptionAware