From de79e3bec36ab223717eef71b4f0a116ea476550 Mon Sep 17 00:00:00 2001 From: Alexander Gorshenev Date: Thu, 25 Jun 2020 00:14:48 +0300 Subject: [PATCH] Added -Xdisable-fake-override-validator --- .../cli/common/arguments/K2JSCompilerArguments.kt | 3 +++ .../org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt | 1 + .../src/org/jetbrains/kotlin/ir/backend/js/klib.kt | 12 ++++++++---- .../kotlin/js/config/JSConfigurationKeys.java | 3 +++ 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2JSCompilerArguments.kt b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2JSCompilerArguments.kt index 4411e41f02b..0309a15bdb4 100644 --- a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2JSCompilerArguments.kt +++ b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2JSCompilerArguments.kt @@ -172,6 +172,9 @@ class K2JSCompilerArguments : CommonCompilerArguments() { @Argument(value = "-Xenable-js-scripting", description = "Enable experimental support of .kts files using K/JS (with -Xir only)") var enableJsScripting: Boolean by FreezableVar(false) + @Argument(value = "-Xdisable-fake-override-validator", description = "Disable IR fake override validator") + var disableFakeOverrideValidator: Boolean by FreezableVar(false) + override fun checkIrSupport(languageVersionSettings: LanguageVersionSettings, collector: MessageCollector) { if (!isIrBackendEnabled()) return diff --git a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt index ef9f587fc6d..afe0d918796 100644 --- a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt +++ b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt @@ -327,6 +327,7 @@ class K2JsIrCompiler : CLICompiler() { } configuration.put(JSConfigurationKeys.PRINT_REACHABILITY_INFO, arguments.irDcePrintReachabilityInfo) + configuration.put(JSConfigurationKeys.DISABLE_FAKE_OVERRIDE_VALIDATOR, arguments.disableFakeOverrideValidator) } override fun executableScriptFileName(): String { diff --git a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt index 3b4751c6711..c2184d79a88 100644 --- a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt +++ b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt @@ -164,8 +164,10 @@ fun generateKLib( val moduleFragment = psi2IrContext.generateModuleFragmentWithPlugins(project, files, irLinker, expectDescriptorToSymbol) moduleFragment.acceptVoid(ManglerChecker(JsManglerIr, Ir2DescriptorManglerAdapter(JsManglerDesc))) - val fakeOverrideChecker = FakeOverrideChecker(JsManglerIr, JsManglerDesc) - irLinker.modules.forEach{ fakeOverrideChecker.check(it) } + if (!configuration.getBoolean(JSConfigurationKeys.DISABLE_FAKE_OVERRIDE_VALIDATOR)) { + val fakeOverrideChecker = FakeOverrideChecker(JsManglerIr, JsManglerDesc) + irLinker.modules.forEach { fakeOverrideChecker.check(it) } + } val moduleName = configuration[CommonConfigurationKeys.MODULE_NAME]!! @@ -236,8 +238,10 @@ fun loadIr( val mangleChecker = ManglerChecker(JsManglerIr, Ir2DescriptorManglerAdapter(JsManglerDesc)) moduleFragment.acceptVoid(mangleChecker) - val fakeOverrideChecker = FakeOverrideChecker(JsManglerIr, JsManglerDesc) - irLinker.modules.forEach{ fakeOverrideChecker.check(it) } + if (!configuration.getBoolean(JSConfigurationKeys.DISABLE_FAKE_OVERRIDE_VALIDATOR)) { + val fakeOverrideChecker = FakeOverrideChecker(JsManglerIr, JsManglerDesc) + irLinker.modules.forEach { fakeOverrideChecker.check(it) } + } irBuiltIns.knownBuiltins.forEach { it.acceptVoid(mangleChecker) } diff --git a/js/js.frontend/src/org/jetbrains/kotlin/js/config/JSConfigurationKeys.java b/js/js.frontend/src/org/jetbrains/kotlin/js/config/JSConfigurationKeys.java index 62e95624d77..72529543c7f 100644 --- a/js/js.frontend/src/org/jetbrains/kotlin/js/config/JSConfigurationKeys.java +++ b/js/js.frontend/src/org/jetbrains/kotlin/js/config/JSConfigurationKeys.java @@ -83,4 +83,7 @@ public class JSConfigurationKeys { public static final CompilerConfigurationKey PRINT_REACHABILITY_INFO = CompilerConfigurationKey.create("print declarations' reachability info during performing DCE"); + + public static final CompilerConfigurationKey DISABLE_FAKE_OVERRIDE_VALIDATOR = + CompilerConfigurationKey.create("disable IR fake override validator"); }