CLI: add -Xuse-ir-fake-override-builder
To be able to test IR fake override builder (KT-61514) outside of compiler tests.
This commit is contained in:
+2
-1
@@ -144,7 +144,8 @@ internal class KtFirCompilerFacility(
|
|||||||
linkViaSignatures = false,
|
linkViaSignatures = false,
|
||||||
effectiveConfiguration[CommonConfigurationKeys.EVALUATED_CONST_TRACKER] ?: EvaluatedConstTracker.create(),
|
effectiveConfiguration[CommonConfigurationKeys.EVALUATED_CONST_TRACKER] ?: EvaluatedConstTracker.create(),
|
||||||
effectiveConfiguration[CommonConfigurationKeys.INLINE_CONST_TRACKER],
|
effectiveConfiguration[CommonConfigurationKeys.INLINE_CONST_TRACKER],
|
||||||
allowNonCachedDeclarations = true
|
allowNonCachedDeclarations = true,
|
||||||
|
useIrFakeOverrideBuilder = effectiveConfiguration.getBoolean(CommonConfigurationKeys.USE_IR_FAKE_OVERRIDE_BUILDER),
|
||||||
)
|
)
|
||||||
|
|
||||||
val fir2IrResult = Fir2IrConverter.createIrModuleFragment(
|
val fir2IrResult = Fir2IrConverter.createIrModuleFragment(
|
||||||
|
|||||||
+1
@@ -82,6 +82,7 @@ fun copyCommonCompilerArguments(from: CommonCompilerArguments, to: CommonCompile
|
|||||||
to.useFirExtendedCheckers = from.useFirExtendedCheckers
|
to.useFirExtendedCheckers = from.useFirExtendedCheckers
|
||||||
to.useFirIC = from.useFirIC
|
to.useFirIC = from.useFirIC
|
||||||
to.useFirLT = from.useFirLT
|
to.useFirLT = from.useFirLT
|
||||||
|
to.useIrFakeOverrideBuilder = from.useIrFakeOverrideBuilder
|
||||||
to.useK2 = from.useK2
|
to.useK2 = from.useK2
|
||||||
to.useMixedNamedArguments = from.useMixedNamedArguments
|
to.useMixedNamedArguments = from.useMixedNamedArguments
|
||||||
to.verbosePhases = from.verbosePhases?.copyOf()
|
to.verbosePhases = from.verbosePhases?.copyOf()
|
||||||
|
|||||||
+10
@@ -542,6 +542,16 @@ abstract class CommonCompilerArguments : CommonToolArguments() {
|
|||||||
field = value
|
field = value
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Argument(
|
||||||
|
value = "-Xuse-ir-fake-override-builder",
|
||||||
|
description = "Generate fake overrides via IR. See KT-61514"
|
||||||
|
)
|
||||||
|
var useIrFakeOverrideBuilder = false
|
||||||
|
set(value) {
|
||||||
|
checkFrozen()
|
||||||
|
field = value
|
||||||
|
}
|
||||||
|
|
||||||
@Argument(
|
@Argument(
|
||||||
value = "-Xdisable-ultra-light-classes",
|
value = "-Xdisable-ultra-light-classes",
|
||||||
description = "Do not use the ultra light classes implementation"
|
description = "Do not use the ultra light classes implementation"
|
||||||
|
|||||||
@@ -241,6 +241,8 @@ fun transformFirToIr(
|
|||||||
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
||||||
inlineConstTracker = null,
|
inlineConstTracker = null,
|
||||||
allowNonCachedDeclarations = false,
|
allowNonCachedDeclarations = false,
|
||||||
|
useIrFakeOverrideBuilder =
|
||||||
|
moduleStructure.compilerConfiguration.getBoolean(CommonConfigurationKeys.USE_IR_FAKE_OVERRIDE_BUILDER),
|
||||||
),
|
),
|
||||||
IrGenerationExtension.getInstances(moduleStructure.project),
|
IrGenerationExtension.getInstances(moduleStructure.project),
|
||||||
signatureComposer = DescriptorSignatureComposerStub(JsManglerDesc),
|
signatureComposer = DescriptorSignatureComposerStub(JsManglerDesc),
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ fun CompilerConfiguration.setupCommonArguments(
|
|||||||
put(CommonConfigurationKeys.INCREMENTAL_COMPILATION, incrementalCompilationIsEnabled(arguments))
|
put(CommonConfigurationKeys.INCREMENTAL_COMPILATION, incrementalCompilationIsEnabled(arguments))
|
||||||
put(CommonConfigurationKeys.ALLOW_ANY_SCRIPTS_IN_SOURCE_ROOTS, arguments.allowAnyScriptsInSourceRoots)
|
put(CommonConfigurationKeys.ALLOW_ANY_SCRIPTS_IN_SOURCE_ROOTS, arguments.allowAnyScriptsInSourceRoots)
|
||||||
put(CommonConfigurationKeys.IGNORE_CONST_OPTIMIZATION_ERRORS, arguments.ignoreConstOptimizationErrors)
|
put(CommonConfigurationKeys.IGNORE_CONST_OPTIMIZATION_ERRORS, arguments.ignoreConstOptimizationErrors)
|
||||||
|
put(CommonConfigurationKeys.USE_IR_FAKE_OVERRIDE_BUILDER, arguments.useIrFakeOverrideBuilder)
|
||||||
|
|
||||||
val metadataVersionString = arguments.metadataVersion
|
val metadataVersionString = arguments.metadataVersion
|
||||||
if (metadataVersionString != null) {
|
if (metadataVersionString != null) {
|
||||||
|
|||||||
+13
-5
@@ -21,20 +21,27 @@ import org.jetbrains.kotlin.cli.jvm.compiler.pipeline.generateCodeFromIr
|
|||||||
import org.jetbrains.kotlin.codegen.state.GenerationState
|
import org.jetbrains.kotlin.codegen.state.GenerationState
|
||||||
import org.jetbrains.kotlin.compiler.plugin.CompilerPluginRegistrar
|
import org.jetbrains.kotlin.compiler.plugin.CompilerPluginRegistrar
|
||||||
import org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar
|
import org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar
|
||||||
import org.jetbrains.kotlin.config.*
|
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
||||||
|
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||||
|
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
||||||
|
import org.jetbrains.kotlin.config.languageVersionSettings
|
||||||
import org.jetbrains.kotlin.constant.EvaluatedConstTracker
|
import org.jetbrains.kotlin.constant.EvaluatedConstTracker
|
||||||
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
||||||
import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory
|
import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory
|
||||||
import org.jetbrains.kotlin.diagnostics.impl.BaseDiagnosticsCollector
|
import org.jetbrains.kotlin.diagnostics.impl.BaseDiagnosticsCollector
|
||||||
import org.jetbrains.kotlin.diagnostics.impl.PendingDiagnosticsCollectorWithSuppress
|
import org.jetbrains.kotlin.diagnostics.impl.PendingDiagnosticsCollectorWithSuppress
|
||||||
import org.jetbrains.kotlin.fir.*
|
import org.jetbrains.kotlin.fir.FirElement
|
||||||
import org.jetbrains.kotlin.fir.backend.*
|
import org.jetbrains.kotlin.fir.backend.Fir2IrConfiguration
|
||||||
import org.jetbrains.kotlin.fir.backend.jvm.*
|
import org.jetbrains.kotlin.fir.backend.jvm.JvmFir2IrExtensions
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
|
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
|
||||||
import org.jetbrains.kotlin.fir.extensions.FirAnalysisHandlerExtension
|
import org.jetbrains.kotlin.fir.extensions.FirAnalysisHandlerExtension
|
||||||
import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar
|
import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar
|
||||||
import org.jetbrains.kotlin.fir.pipeline.*
|
import org.jetbrains.kotlin.fir.packageFqName
|
||||||
|
import org.jetbrains.kotlin.fir.pipeline.Fir2IrActualizedResult
|
||||||
|
import org.jetbrains.kotlin.fir.pipeline.FirResult
|
||||||
|
import org.jetbrains.kotlin.fir.pipeline.buildResolveAndCheckFirFromKtFiles
|
||||||
|
import org.jetbrains.kotlin.fir.pipeline.convertToIrAndActualizeForJvm
|
||||||
import org.jetbrains.kotlin.fir.types.arrayElementType
|
import org.jetbrains.kotlin.fir.types.arrayElementType
|
||||||
import org.jetbrains.kotlin.fir.types.coneType
|
import org.jetbrains.kotlin.fir.types.coneType
|
||||||
import org.jetbrains.kotlin.fir.types.isArrayType
|
import org.jetbrains.kotlin.fir.types.isArrayType
|
||||||
@@ -237,6 +244,7 @@ object FirKotlinToJvmBytecodeCompiler {
|
|||||||
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
||||||
inlineConstTracker = configuration[CommonConfigurationKeys.INLINE_CONST_TRACKER],
|
inlineConstTracker = configuration[CommonConfigurationKeys.INLINE_CONST_TRACKER],
|
||||||
allowNonCachedDeclarations = false,
|
allowNonCachedDeclarations = false,
|
||||||
|
useIrFakeOverrideBuilder = configuration.getBoolean(CommonConfigurationKeys.USE_IR_FAKE_OVERRIDE_BUILDER),
|
||||||
)
|
)
|
||||||
return firResult.convertToIrAndActualizeForJvm(
|
return firResult.convertToIrAndActualizeForJvm(
|
||||||
fir2IrExtensions,
|
fir2IrExtensions,
|
||||||
|
|||||||
@@ -185,6 +185,7 @@ fun convertAnalyzedFirToIr(
|
|||||||
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
||||||
inlineConstTracker = input.configuration[CommonConfigurationKeys.INLINE_CONST_TRACKER],
|
inlineConstTracker = input.configuration[CommonConfigurationKeys.INLINE_CONST_TRACKER],
|
||||||
allowNonCachedDeclarations = false,
|
allowNonCachedDeclarations = false,
|
||||||
|
useIrFakeOverrideBuilder = input.configuration.getBoolean(CommonConfigurationKeys.USE_IR_FAKE_OVERRIDE_BUILDER),
|
||||||
)
|
)
|
||||||
val (moduleFragment, components, pluginContext, irActualizedResult) =
|
val (moduleFragment, components, pluginContext, irActualizedResult) =
|
||||||
analysisResults.convertToIrAndActualizeForJvm(
|
analysisResults.convertToIrAndActualizeForJvm(
|
||||||
|
|||||||
@@ -96,6 +96,10 @@ object CommonConfigurationKeys {
|
|||||||
@JvmField
|
@JvmField
|
||||||
val EVALUATED_CONST_TRACKER =
|
val EVALUATED_CONST_TRACKER =
|
||||||
CompilerConfigurationKey.create<EvaluatedConstTracker>("Keeps track of all evaluated by IrInterpreter constants")
|
CompilerConfigurationKey.create<EvaluatedConstTracker>("Keeps track of all evaluated by IrInterpreter constants")
|
||||||
|
|
||||||
|
@JvmField
|
||||||
|
val USE_IR_FAKE_OVERRIDE_BUILDER =
|
||||||
|
CompilerConfigurationKey.create<Boolean>("Generate fake overrides via IR. See KT-61514")
|
||||||
}
|
}
|
||||||
|
|
||||||
var CompilerConfiguration.languageVersionSettings: LanguageVersionSettings
|
var CompilerConfiguration.languageVersionSettings: LanguageVersionSettings
|
||||||
|
|||||||
@@ -37,5 +37,5 @@ data class Fir2IrConfiguration(
|
|||||||
val evaluatedConstTracker: EvaluatedConstTracker,
|
val evaluatedConstTracker: EvaluatedConstTracker,
|
||||||
val inlineConstTracker: InlineConstTracker?,
|
val inlineConstTracker: InlineConstTracker?,
|
||||||
val allowNonCachedDeclarations: Boolean,
|
val allowNonCachedDeclarations: Boolean,
|
||||||
val useIrFakeOverrideBuilder: Boolean = false
|
val useIrFakeOverrideBuilder: Boolean,
|
||||||
)
|
)
|
||||||
|
|||||||
+1
@@ -279,6 +279,7 @@ open class IncrementalFirJvmCompilerRunner(
|
|||||||
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
||||||
inlineConstTracker = configuration[CommonConfigurationKeys.INLINE_CONST_TRACKER],
|
inlineConstTracker = configuration[CommonConfigurationKeys.INLINE_CONST_TRACKER],
|
||||||
allowNonCachedDeclarations = false,
|
allowNonCachedDeclarations = false,
|
||||||
|
useIrFakeOverrideBuilder = configuration.getBoolean(CommonConfigurationKeys.USE_IR_FAKE_OVERRIDE_BUILDER),
|
||||||
)
|
)
|
||||||
val irGenerationExtensions =
|
val irGenerationExtensions =
|
||||||
(projectEnvironment as? VfsBasedProjectEnvironment)?.project?.let { IrGenerationExtension.getInstances(it) }.orEmpty()
|
(projectEnvironment as? VfsBasedProjectEnvironment)?.project?.let { IrGenerationExtension.getInstances(it) }.orEmpty()
|
||||||
|
|||||||
+1
@@ -141,6 +141,7 @@ where advanced options include:
|
|||||||
-Xuse-fir-extended-checkers Use extended analysis mode based on Front-end IR. Warning: this feature is far from being production-ready
|
-Xuse-fir-extended-checkers Use extended analysis mode based on Front-end IR. Warning: this feature is far from being production-ready
|
||||||
-Xuse-fir-ic Compile using Front-end IR internal incremental compilation cycle. Warning: this feature is far from being production-ready
|
-Xuse-fir-ic Compile using Front-end IR internal incremental compilation cycle. Warning: this feature is far from being production-ready
|
||||||
-Xuse-fir-lt Compile using LightTree parser with Front-end IR
|
-Xuse-fir-lt Compile using LightTree parser with Front-end IR
|
||||||
|
-Xuse-ir-fake-override-builder Generate fake overrides via IR. See KT-61514
|
||||||
-Xuse-k2 Compile using experimental K2. K2 is a new compiler pipeline, no compatibility guarantees are yet provided
|
-Xuse-k2 Compile using experimental K2. K2 is a new compiler pipeline, no compatibility guarantees are yet provided
|
||||||
-Xuse-mixed-named-arguments Enable Support named arguments in their own position even if the result appears as mixed
|
-Xuse-mixed-named-arguments Enable Support named arguments in their own position even if the result appears as mixed
|
||||||
-Xverbose-phases Be verbose while performing these backend phases
|
-Xverbose-phases Be verbose while performing these backend phases
|
||||||
|
|||||||
+1
@@ -232,6 +232,7 @@ where advanced options include:
|
|||||||
-Xuse-fir-extended-checkers Use extended analysis mode based on Front-end IR. Warning: this feature is far from being production-ready
|
-Xuse-fir-extended-checkers Use extended analysis mode based on Front-end IR. Warning: this feature is far from being production-ready
|
||||||
-Xuse-fir-ic Compile using Front-end IR internal incremental compilation cycle. Warning: this feature is far from being production-ready
|
-Xuse-fir-ic Compile using Front-end IR internal incremental compilation cycle. Warning: this feature is far from being production-ready
|
||||||
-Xuse-fir-lt Compile using LightTree parser with Front-end IR
|
-Xuse-fir-lt Compile using LightTree parser with Front-end IR
|
||||||
|
-Xuse-ir-fake-override-builder Generate fake overrides via IR. See KT-61514
|
||||||
-Xuse-k2 Compile using experimental K2. K2 is a new compiler pipeline, no compatibility guarantees are yet provided
|
-Xuse-k2 Compile using experimental K2. K2 is a new compiler pipeline, no compatibility guarantees are yet provided
|
||||||
-Xuse-mixed-named-arguments Enable Support named arguments in their own position even if the result appears as mixed
|
-Xuse-mixed-named-arguments Enable Support named arguments in their own position even if the result appears as mixed
|
||||||
-Xverbose-phases Be verbose while performing these backend phases
|
-Xverbose-phases Be verbose while performing these backend phases
|
||||||
|
|||||||
@@ -137,7 +137,8 @@ object GenerationUtils {
|
|||||||
evaluatedConstTracker = configuration
|
evaluatedConstTracker = configuration
|
||||||
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
||||||
inlineConstTracker = configuration[CommonConfigurationKeys.INLINE_CONST_TRACKER],
|
inlineConstTracker = configuration[CommonConfigurationKeys.INLINE_CONST_TRACKER],
|
||||||
allowNonCachedDeclarations = false
|
allowNonCachedDeclarations = false,
|
||||||
|
useIrFakeOverrideBuilder = configuration.getBoolean(CommonConfigurationKeys.USE_IR_FAKE_OVERRIDE_BUILDER),
|
||||||
)
|
)
|
||||||
|
|
||||||
val commonMemberStorage = Fir2IrCommonMemberStorage(signatureComposerForJvmFir2Ir(linkViaSignatures), FirJvmKotlinMangler())
|
val commonMemberStorage = Fir2IrCommonMemberStorage(signatureComposerForJvmFir2Ir(linkViaSignatures), FirJvmKotlinMangler())
|
||||||
|
|||||||
+1
@@ -81,6 +81,7 @@ internal fun PhaseContext.fir2Ir(
|
|||||||
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
.putIfAbsent(CommonConfigurationKeys.EVALUATED_CONST_TRACKER, EvaluatedConstTracker.create()),
|
||||||
inlineConstTracker = null,
|
inlineConstTracker = null,
|
||||||
allowNonCachedDeclarations = false,
|
allowNonCachedDeclarations = false,
|
||||||
|
useIrFakeOverrideBuilder = configuration.getBoolean(CommonConfigurationKeys.USE_IR_FAKE_OVERRIDE_BUILDER),
|
||||||
)
|
)
|
||||||
val (irModuleFragment, components, pluginContext, irActualizedResult) = input.firResult.convertToIrAndActualize(
|
val (irModuleFragment, components, pluginContext, irActualizedResult) = input.firResult.convertToIrAndActualize(
|
||||||
fir2IrExtensions,
|
fir2IrExtensions,
|
||||||
|
|||||||
Reference in New Issue
Block a user