Support "-language-version" CLI option for compatibility with older releases

Introduce LanguageFeatureSettings, instance of which should be injected by the
container and be accessible everywhere during the compilation (front-end and
back-end).

Parameters of LanguageFeatureSettings are unused in this commit, will be used
later
This commit is contained in:
Alexander Udalov
2016-05-10 22:12:35 +03:00
parent ec0f21c887
commit e1ba4480d7
25 changed files with 169 additions and 41 deletions
@@ -20,6 +20,7 @@ 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.LanguageFeatureSettings
import org.jetbrains.kotlin.container.get
import org.jetbrains.kotlin.context.ModuleContext
import org.jetbrains.kotlin.descriptors.PackagePartProvider
@@ -54,7 +55,10 @@ object JsAnalyzerFacade : AnalyzerFacade<PlatformAnalysisParameters>() {
project, moduleContext.storageManager, syntheticFiles, if (moduleInfo.isLibrary) GlobalSearchScope.EMPTY_SCOPE else moduleContentScope
)
val container = createContainerForLazyResolve(moduleContext, declarationProviderFactory, BindingTraceContext(), JsPlatform, targetEnvironment)
val container = createContainerForLazyResolve(
moduleContext, declarationProviderFactory, BindingTraceContext(), JsPlatform, targetEnvironment,
LanguageFeatureSettings.LATEST // TODO: see KT-12410
)
var packageFragmentProvider = container.get<ResolveSession>().packageFragmentProvider
if (moduleInfo is LibraryInfo && KotlinJavaScriptLibraryDetectionUtil.isKotlinJavaScriptLibrary(moduleInfo.library)) {
@@ -23,6 +23,7 @@ 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.LanguageFeatureSettings
import org.jetbrains.kotlin.container.ComponentProvider
import org.jetbrains.kotlin.container.get
import org.jetbrains.kotlin.context.GlobalContext
@@ -170,7 +171,8 @@ private object KotlinResolveDataProvider {
resolveSession,
trace,
targetPlatform,
componentProvider.get<BodyResolveCache>()
componentProvider.get<BodyResolveCache>(),
LanguageFeatureSettings.LATEST // TODO: see KT-12410
).get<LazyTopDownAnalyzerForTopLevel>()
lazyTopDownAnalyzer.analyzeDeclarations(
@@ -40,6 +40,7 @@ import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.TestOnly;
import org.jetbrains.kotlin.builtins.DefaultBuiltIns;
import org.jetbrains.kotlin.codegen.binding.PsiCodegenPredictor;
import org.jetbrains.kotlin.config.LanguageFeatureSettings;
import org.jetbrains.kotlin.context.ContextKt;
import org.jetbrains.kotlin.context.MutableModuleContext;
import org.jetbrains.kotlin.descriptors.CallableDescriptor;
@@ -260,7 +261,8 @@ public class SourceNavigationHelper {
newModuleContext,
providerFactory,
new BindingTraceContext(),
platform
platform,
LanguageFeatureSettings.LATEST // TODO: see KT-12410
);
newModuleContext.initializeModuleContents(resolveSession.getPackageFragmentProvider());
@@ -24,6 +24,7 @@ import com.intellij.psi.util.PsiModificationTracker
import com.intellij.util.containers.ContainerUtil
import org.jetbrains.kotlin.asJava.KotlinCodeBlockModificationListener
import org.jetbrains.kotlin.cfg.ControlFlowInformationProvider
import org.jetbrains.kotlin.config.LanguageFeatureSettings
import org.jetbrains.kotlin.container.get
import org.jetbrains.kotlin.context.SimpleGlobalContext
import org.jetbrains.kotlin.context.withModule
@@ -535,7 +536,8 @@ class ResolveElementCache(
globalContext.withProject(file.project).withModule(module),
trace,
targetPlatform,
statementFilter
statementFilter,
LanguageFeatureSettings.LATEST // TODO: see KT-12410
).get<BodyResolver>()
}