Kotlin Facet: Use facet configuration to provide language version for IDE analyzer
This commit is contained in:
@@ -32,5 +32,6 @@
|
||||
<orderEntry type="module" module-name="ide-common" exported="" />
|
||||
<orderEntry type="module" module-name="util" />
|
||||
<orderEntry type="module" module-name="idea-core" />
|
||||
<orderEntry type="module" module-name="idea-jps-common" />
|
||||
</component>
|
||||
</module>
|
||||
@@ -20,7 +20,6 @@ import com.intellij.openapi.roots.OrderRootType
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
import com.intellij.util.PathUtil
|
||||
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
|
||||
@@ -57,8 +56,12 @@ object JsAnalyzerFacade : AnalyzerFacade<PlatformAnalysisParameters>() {
|
||||
)
|
||||
|
||||
val container = createContainerForLazyResolve(
|
||||
moduleContext, declarationProviderFactory, BindingTraceContext(), JsPlatform, targetEnvironment,
|
||||
LanguageVersionSettingsImpl.DEFAULT // TODO: see KT-12410
|
||||
moduleContext,
|
||||
declarationProviderFactory,
|
||||
BindingTraceContext(),
|
||||
JsPlatform,
|
||||
targetEnvironment,
|
||||
LanguageVersionSettingsProvider.getInstance(project).getLanguageVersionSettings(moduleInfo)
|
||||
)
|
||||
var packageFragmentProvider = container.get<ResolveSession>().packageFragmentProvider
|
||||
|
||||
|
||||
+2
-2
@@ -23,7 +23,6 @@ import com.intellij.openapi.project.Project
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.util.PsiTreeUtil
|
||||
import org.jetbrains.kotlin.analyzer.AnalysisResult
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
|
||||
import org.jetbrains.kotlin.container.ComponentProvider
|
||||
import org.jetbrains.kotlin.container.get
|
||||
import org.jetbrains.kotlin.context.GlobalContext
|
||||
@@ -33,6 +32,7 @@ import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticUtils
|
||||
import org.jetbrains.kotlin.frontend.di.createContainerForLazyBodyResolve
|
||||
import org.jetbrains.kotlin.idea.project.TargetPlatformDetector
|
||||
import org.jetbrains.kotlin.idea.project.languageVersionSettings
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.parentsWithSelf
|
||||
import org.jetbrains.kotlin.resolve.*
|
||||
@@ -173,7 +173,7 @@ private object KotlinResolveDataProvider {
|
||||
trace,
|
||||
targetPlatform,
|
||||
componentProvider.get<BodyResolveCache>(),
|
||||
LanguageVersionSettingsImpl.DEFAULT // TODO: see KT-12410
|
||||
analyzableElement.languageVersionSettings
|
||||
).get<LazyTopDownAnalyzer>()
|
||||
|
||||
lazyTopDownAnalyzer.analyzeDeclarations(TopDownAnalysisMode.TopLevelDeclarations, listOf(analyzableElement))
|
||||
|
||||
+1
-1
@@ -251,7 +251,7 @@ public class SourceNavigationHelper {
|
||||
providerFactory,
|
||||
new BindingTraceContext(),
|
||||
TargetPlatform.Default.INSTANCE,
|
||||
LanguageVersionSettingsImpl.DEFAULT // TODO: see KT-12410
|
||||
LanguageVersionSettingsImpl.DEFAULT
|
||||
);
|
||||
|
||||
newModuleContext.initializeModuleContents(resolveSession.getPackageFragmentProvider());
|
||||
|
||||
@@ -16,7 +16,10 @@
|
||||
|
||||
package org.jetbrains.kotlin.idea.project
|
||||
|
||||
import com.intellij.openapi.module.Module
|
||||
import com.intellij.openapi.module.ModuleUtilCore
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.config.*
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade
|
||||
import org.jetbrains.kotlin.psi.KtElement
|
||||
import org.jetbrains.kotlin.resolve.TargetPlatform
|
||||
@@ -26,3 +29,14 @@ val KtElement.platform: TargetPlatform
|
||||
|
||||
val KtElement.builtIns: KotlinBuiltIns
|
||||
get() = getResolutionFacade().moduleDescriptor.builtIns
|
||||
|
||||
val Module.languageVersionSettings: LanguageVersionSettings
|
||||
get() {
|
||||
val versionInfo = KotlinFacetSettingsProvider.getInstance(project).getSettings(this).versionInfo
|
||||
val languageVersion = versionInfo.languageLevel ?: LanguageVersion.LATEST
|
||||
val apiVersion = versionInfo.apiLevel ?: languageVersion
|
||||
return LanguageVersionSettingsImpl(languageVersion, ApiVersion.createByLanguageVersion(apiVersion))
|
||||
}
|
||||
|
||||
val KtElement.languageVersionSettings: LanguageVersionSettings
|
||||
get() = ModuleUtilCore.findModuleForPsiElement(this)?.languageVersionSettings ?: LanguageVersionSettingsImpl.DEFAULT
|
||||
@@ -23,7 +23,6 @@ import com.intellij.psi.util.CachedValuesManager
|
||||
import com.intellij.psi.util.PsiModificationTracker
|
||||
import com.intellij.util.containers.ContainerUtil
|
||||
import org.jetbrains.kotlin.cfg.ControlFlowInformationProvider
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
|
||||
import org.jetbrains.kotlin.container.get
|
||||
import org.jetbrains.kotlin.context.SimpleGlobalContext
|
||||
import org.jetbrains.kotlin.context.withModule
|
||||
@@ -588,7 +587,7 @@ class ResolveElementCache(
|
||||
trace,
|
||||
targetPlatform,
|
||||
statementFilter,
|
||||
LanguageVersionSettingsImpl.DEFAULT // TODO: see KT-12410
|
||||
file.languageVersionSettings
|
||||
).get<BodyResolver>()
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user