diff --git a/kotlin-native/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2Native.kt b/kotlin-native/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2Native.kt index dbfded60fa2..5a259313814 100644 --- a/kotlin-native/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2Native.kt +++ b/kotlin-native/backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2Native.kt @@ -67,7 +67,6 @@ class K2Native : CLICompiler() { messageCollector.report(ERROR, "You have not specified any compilation arguments. No output has been produced.") } if (configuration.get(KonanConfigKeys.PRODUCE) != CompilerOutputKind.LIBRARY && - configuration.getBoolean(CommonConfigurationKeys.USE_FIR) && configuration.kotlinSourceRoots.isNotEmpty()) { // K2/Native backend cannot produce binary directly from FIR frontend output, since descriptors, deserialized from KLib, are needed // So, such compilation is split to two stages: diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/Frontend.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/Frontend.kt index 87c273837a7..3d7067c0b1a 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/Frontend.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/Frontend.kt @@ -10,13 +10,12 @@ import org.jetbrains.kotlin.backend.konan.* import org.jetbrains.kotlin.backend.konan.TopDownAnalyzerFacadeForKonan import org.jetbrains.kotlin.backend.konan.driver.BasicPhaseContext import org.jetbrains.kotlin.backend.konan.driver.PhaseContext -import org.jetbrains.kotlin.backend.konan.driver.PhaseEngine import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys import org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment -import org.jetbrains.kotlin.config.CommonConfigurationKeys import org.jetbrains.kotlin.config.languageVersionSettings import org.jetbrains.kotlin.descriptors.ModuleDescriptor +import org.jetbrains.kotlin.konan.target.CompilerOutputKind import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly @@ -56,13 +55,10 @@ internal val FrontendPhase = createSimpleNamedCompilerPhase( val sourceFiles = input.getSourceFiles() - if (sourceFiles.isNotEmpty()) { - require (!input.configuration.getBoolean(CommonConfigurationKeys.USE_FIR)) { - "Internal error: For K2 compiler, no source files should have been passed here. " + - "K2Native.doExecute() must transform such compilation into two-stage compilation.\n" - } - } else { - // TODO: we shouldn't be here in this case. + require(context.config.produce == CompilerOutputKind.LIBRARY || sourceFiles.isEmpty()) { + "Internal error: no source files should have been passed here (${sourceFiles.first().virtualFilePath} in particular)\n" + + "to produce binary (e.g. a ${context.config.produce.name.toLowerCaseAsciiOnly()})\n" + + "K2Native.doExecute() must transform such compilation into two-stage compilation. Please report this here: https://kotl.in/issue" } // Build AST and binding info. diff --git a/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/support/group/ExtTestCaseGroupProvider.kt b/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/support/group/ExtTestCaseGroupProvider.kt index 39fc24b6045..31a1d7873bc 100644 --- a/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/support/group/ExtTestCaseGroupProvider.kt +++ b/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/support/group/ExtTestCaseGroupProvider.kt @@ -146,7 +146,6 @@ private class ExtTestDataFile( && structure.directives[API_VERSION_DIRECTIVE] !in INCOMPATIBLE_API_VERSIONS && structure.directives[LANGUAGE_VERSION_DIRECTIVE] !in INCOMPATIBLE_LANGUAGE_VERSIONS && !(testDataFileSettings.languageSettings.contains("+${LanguageFeature.MultiPlatformProjects.name}") - && pipelineType == PipelineType.K2 && testMode == TestMode.ONE_STAGE_MULTI_MODULE) private fun isIgnoredTarget(pipelineType: PipelineType, testDataFile: File, backend: TargetBackend): Boolean {