Disable New Inference in JS backend

See #KT-37163 for details
This commit is contained in:
Mikhail Zarechenskiy
2020-03-02 15:23:17 +03:00
parent e6885323da
commit d1a8f57740
18 changed files with 153 additions and 43 deletions
@@ -0,0 +1,38 @@
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.cli.js
import org.jetbrains.kotlin.config.*
class JSLanguageVersionSettings(private val delegate: LanguageVersionSettings) : LanguageVersionSettings {
companion object {
private val disabledFeatures = setOf(
LanguageFeature.NewInference,
LanguageFeature.FunctionalInterfaceConversion,
LanguageFeature.SamConversionForKotlinFunctions,
LanguageFeature.SamConversionPerArgument,
LanguageFeature.FunctionReferenceWithDefaultValueAsOtherType,
LanguageFeature.NonStrictOnlyInputTypesChecks
)
}
override fun getFeatureSupport(feature: LanguageFeature): LanguageFeature.State {
return if (feature in disabledFeatures)
LanguageFeature.State.DISABLED
else
delegate.getFeatureSupport(feature)
}
override fun isPreRelease(): Boolean = delegate.isPreRelease()
override fun <T> getFlag(flag: AnalysisFlag<T>): T = delegate.getFlag(flag)
override val apiVersion: ApiVersion
get() = delegate.apiVersion
override val languageVersion: LanguageVersion
get() = delegate.languageVersion
}
@@ -246,6 +246,13 @@ public class K2JSCompiler extends CLICompiler<K2JSCompilerArguments> {
configuration.put(CommonConfigurationKeys.MODULE_NAME, FileUtil.getNameWithoutExtension(outputFile));
if (!arguments.getNewInference()) {
CommonConfigurationKeysKt.setLanguageVersionSettings(
configuration,
new JSLanguageVersionSettings(CommonConfigurationKeysKt.getLanguageVersionSettings(configuration))
);
}
JsConfig config = new JsConfig(project, configuration);
JsConfig.Reporter reporter = new JsConfig.Reporter() {
@Override
@@ -24,10 +24,7 @@ import org.jetbrains.kotlin.cli.common.messages.MessageUtil
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.cli.jvm.plugins.PluginCliParser
import org.jetbrains.kotlin.config.CommonConfigurationKeys
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.IncrementalCompilation
import org.jetbrains.kotlin.config.Services
import org.jetbrains.kotlin.config.*
import org.jetbrains.kotlin.incremental.components.ExpectActualTracker
import org.jetbrains.kotlin.incremental.components.LookupTracker
import org.jetbrains.kotlin.incremental.js.IncrementalDataProvider