From 5d5582d201282e1174eab8420e3a4ca1a8a58e27 Mon Sep 17 00:00:00 2001 From: Ivan Kylchik Date: Mon, 6 Feb 2023 14:46:28 +0100 Subject: [PATCH] Move `ignoreConstOptimizationErrors` compiler key from jvm to common #KT-56023 --- .../src/org/jetbrains/kotlin/build/JvmBuildMetaInfo.kt | 1 - .../cli/common/arguments/CommonCompilerArguments.kt | 10 ++++++++++ .../cli/common/arguments/K2JVMCompilerArguments.kt | 10 ---------- .../src/org/jetbrains/kotlin/cli/common/arguments.kt | 1 + .../src/org/jetbrains/kotlin/cli/jvm/jvmArguments.kt | 1 - .../jetbrains/kotlin/config/JVMConfigurationKeys.java | 3 --- .../jetbrains/kotlin/config/CommonConfigurationKeys.kt | 3 +++ .../backend/common/lower/ConstEvaluationLowering.kt | 3 ++- .../src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt | 5 ++--- compiler/testData/cli/js/jsExtraHelp.out | 2 ++ compiler/testData/cli/jvm/extraHelp.out | 4 ++-- 11 files changed, 22 insertions(+), 21 deletions(-) diff --git a/build-common/src/org/jetbrains/kotlin/build/JvmBuildMetaInfo.kt b/build-common/src/org/jetbrains/kotlin/build/JvmBuildMetaInfo.kt index 138bb535f3c..34f49496106 100644 --- a/build-common/src/org/jetbrains/kotlin/build/JvmBuildMetaInfo.kt +++ b/build-common/src/org/jetbrains/kotlin/build/JvmBuildMetaInfo.kt @@ -71,7 +71,6 @@ class JvmBuildMetaInfo : BuildMetaInfo() { "allowNoSourceFiles", "allowUnstableDependencies", "enableJvmPreview", - "ignoreConstOptimizationErrors", "suppressMissingBuiltinsError", ) } diff --git a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArguments.kt b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArguments.kt index 67114033c6a..d245665f3b9 100644 --- a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArguments.kt +++ b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArguments.kt @@ -753,6 +753,16 @@ abstract class CommonCompilerArguments : CommonToolArguments() { field = value } + @Argument( + value = "-Xignore-const-optimization-errors", + description = "Ignore all compilation exceptions while optimizing some constant expressions." + ) + var ignoreConstOptimizationErrors = false + set(value) { + checkFrozen() + field = value + } + @OptIn(IDEAPluginsCompatibilityAPI::class) open fun configureAnalysisFlags(collector: MessageCollector, languageVersion: LanguageVersion): MutableMap, Any> { return HashMap, Any>().apply { diff --git a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2JVMCompilerArguments.kt b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2JVMCompilerArguments.kt index 3bf95ac4ee2..266aa8a8dbb 100644 --- a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2JVMCompilerArguments.kt +++ b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2JVMCompilerArguments.kt @@ -820,16 +820,6 @@ Also sets `-jvm-target` value equal to the selected JDK version""" field = value } - @Argument( - value = "-Xignore-const-optimization-errors", - description = "Ignore all compilation exceptions while optimizing some constant expressions." - ) - var ignoreConstOptimizationErrors = false - set(value) { - checkFrozen() - field = value - } - @Argument( value = "-Xno-new-java-annotation-targets", description = "Do not generate Java 1.8+ targets for Kotlin annotation classes" diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/common/arguments.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/common/arguments.kt index 58bfd8d1a12..5d746879c9d 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/common/arguments.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/common/arguments.kt @@ -30,6 +30,7 @@ fun CompilerConfiguration.setupCommonArguments( put(CommonConfigurationKeys.REPORT_OUTPUT_FILES, arguments.reportOutputFiles) put(CommonConfigurationKeys.INCREMENTAL_COMPILATION, incrementalCompilationIsEnabled(arguments)) put(CommonConfigurationKeys.ALLOW_ANY_SCRIPTS_IN_SOURCE_ROOTS, arguments.allowAnyScriptsInSourceRoots) + put(CommonConfigurationKeys.IGNORE_CONST_OPTIMIZATION_ERRORS, arguments.ignoreConstOptimizationErrors) val metadataVersionString = arguments.metadataVersion if (metadataVersionString != null) { diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/jvmArguments.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/jvmArguments.kt index 5c6cca3e829..9f521787714 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/jvmArguments.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/jvmArguments.kt @@ -305,7 +305,6 @@ fun CompilerConfiguration.configureAdvancedJvmOptions(arguments: K2JVMCompilerAr put(JVMConfigurationKeys.LINK_VIA_SIGNATURES, arguments.linkViaSignatures) put(JVMConfigurationKeys.ENABLE_DEBUG_MODE, arguments.enableDebugMode) - put(JVMConfigurationKeys.IGNORE_CONST_OPTIMIZATION_ERRORS, arguments.ignoreConstOptimizationErrors) put(JVMConfigurationKeys.NO_NEW_JAVA_ANNOTATION_TARGETS, arguments.noNewJavaAnnotationTargets) put(JVMConfigurationKeys.OLD_INNER_CLASSES_LOGIC, arguments.oldInnerClassesLogic) put(JVMConfigurationKeys.ENABLE_IR_INLINER, arguments.enableIrInliner) diff --git a/compiler/config.jvm/src/org/jetbrains/kotlin/config/JVMConfigurationKeys.java b/compiler/config.jvm/src/org/jetbrains/kotlin/config/JVMConfigurationKeys.java index bc418bb8758..132c2827f4e 100644 --- a/compiler/config.jvm/src/org/jetbrains/kotlin/config/JVMConfigurationKeys.java +++ b/compiler/config.jvm/src/org/jetbrains/kotlin/config/JVMConfigurationKeys.java @@ -160,9 +160,6 @@ public class JVMConfigurationKeys { public static final CompilerConfigurationKey ENABLE_DEBUG_MODE = CompilerConfigurationKey.create("Enable debug mode"); - public static final CompilerConfigurationKey IGNORE_CONST_OPTIMIZATION_ERRORS = - CompilerConfigurationKey.create("Ignore errors from IrConstTransformer"); - public static final CompilerConfigurationKey NO_NEW_JAVA_ANNOTATION_TARGETS = CompilerConfigurationKey.create("Do not generate Java 1.8+ targets for Kotlin annotation classes"); diff --git a/compiler/config/src/org/jetbrains/kotlin/config/CommonConfigurationKeys.kt b/compiler/config/src/org/jetbrains/kotlin/config/CommonConfigurationKeys.kt index bcac3b0fac1..894433fa172 100644 --- a/compiler/config/src/org/jetbrains/kotlin/config/CommonConfigurationKeys.kt +++ b/compiler/config/src/org/jetbrains/kotlin/config/CommonConfigurationKeys.kt @@ -88,6 +88,9 @@ object CommonConfigurationKeys { @JvmField val ALLOW_ANY_SCRIPTS_IN_SOURCE_ROOTS = CompilerConfigurationKey.create("Allow to compile any scripts along with regular Kotlin sources") + + @JvmField + val IGNORE_CONST_OPTIMIZATION_ERRORS = CompilerConfigurationKey.create("Ignore errors from IrConstTransformer") } var CompilerConfiguration.languageVersionSettings: LanguageVersionSettings diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/ConstEvaluationLowering.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/ConstEvaluationLowering.kt index 62434ede57a..901c9d703da 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/ConstEvaluationLowering.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/ConstEvaluationLowering.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.backend.common.lower import org.jetbrains.kotlin.backend.common.CommonBackendContext import org.jetbrains.kotlin.backend.common.FileLoweringPass +import org.jetbrains.kotlin.config.CommonConfigurationKeys import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.declarations.IrFile import org.jetbrains.kotlin.ir.expressions.IrErrorExpression @@ -18,7 +19,7 @@ import org.jetbrains.kotlin.ir.interpreter.checker.IrConstTransformer class ConstEvaluationLowering( val context: CommonBackendContext, - private val suppressErrors: Boolean = false, + private val suppressErrors: Boolean = context.configuration.getBoolean(CommonConfigurationKeys.IGNORE_CONST_OPTIMIZATION_ERRORS), private val onWarning: (IrFile, IrElement, IrErrorExpression) -> Unit = { _, _, _ -> }, private val onError: (IrFile, IrElement, IrErrorExpression) -> Unit = { _, _, _ -> }, ) : FileLoweringPass { diff --git a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt index 467cd464072..775e02f6c35 100644 --- a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt +++ b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt @@ -320,12 +320,11 @@ val constEvaluationPhase = makeIrModulePhase( { ConstEvaluationLowering( it, - it.configuration.getBoolean(JVMConfigurationKeys.IGNORE_CONST_OPTIMIZATION_ERRORS), - { irFile, element, warning -> + onWarning = { irFile, element, warning -> it.ktDiagnosticReporter.at(element, irFile) .report(JvmBackendErrors.EXCEPTION_IN_CONST_EXPRESSION, warning.description) }, - { irFile, element, error -> + onError = { irFile, element, error -> it.ktDiagnosticReporter.at(element, irFile) .report(JvmBackendErrors.EXCEPTION_IN_CONST_VAL_INITIALIZER, error.description) } diff --git a/compiler/testData/cli/js/jsExtraHelp.out b/compiler/testData/cli/js/jsExtraHelp.out index 9c53e6d9563..56e71e5e0c8 100644 --- a/compiler/testData/cli/js/jsExtraHelp.out +++ b/compiler/testData/cli/js/jsExtraHelp.out @@ -85,6 +85,8 @@ where advanced options include: -Xfragment-sources=: Adds sources to a specific fragment of a multiplatform compilation -Xfragments= Declares all known fragments of a multiplatform compilation + -Xignore-const-optimization-errors + Ignore all compilation exceptions while optimizing some constant expressions. -Xenable-incremental-compilation Enable incremental compilation -Xinference-compatibility Enable compatibility changes for generic type inference algorithm diff --git a/compiler/testData/cli/jvm/extraHelp.out b/compiler/testData/cli/jvm/extraHelp.out index de7ac887e2c..edb52e9cfca 100644 --- a/compiler/testData/cli/jvm/extraHelp.out +++ b/compiler/testData/cli/jvm/extraHelp.out @@ -36,8 +36,6 @@ where advanced options include: -Xenhance-type-parameter-types-to-def-not-null Enhance not null annotated type parameter's types to definitely not null types (@NotNull T => T & Any) -Xfriend-paths= Paths to output directories for friend modules (whose internals should be visible) - -Xignore-const-optimization-errors - Ignore all compilation exceptions while optimizing some constant expressions. -Xmultifile-parts-inherit Compile multifile classes as a hierarchy of parts and facade -Xmodule-path= Paths where to find Java 9+ modules -Xjava-package-prefix Package prefix for Java files @@ -193,6 +191,8 @@ where advanced options include: -Xfragment-sources=: Adds sources to a specific fragment of a multiplatform compilation -Xfragments= Declares all known fragments of a multiplatform compilation + -Xignore-const-optimization-errors + Ignore all compilation exceptions while optimizing some constant expressions. -Xenable-incremental-compilation Enable incremental compilation -Xinference-compatibility Enable compatibility changes for generic type inference algorithm