From 37adc99b9af073200fcb82bc301cd375cfe32cb3 Mon Sep 17 00:00:00 2001 From: Vladimir Sukharev Date: Mon, 5 Jun 2023 17:59:16 +0000 Subject: [PATCH] [K/N] Don't pass -language_version to the second stage of new test system. ^KT-56182 Merge-request: KT-MR-10414 Merged-by: Vladimir Sukharev --- .../konan/cexport/CAdapterGenerator.kt | 23 +++++++++---------- .../plugin/konan/tasks/KonanCompileTask.kt | 4 ++-- .../support/compilation/TestCompilation.kt | 10 ++++++-- 3 files changed, 21 insertions(+), 16 deletions(-) diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/cexport/CAdapterGenerator.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/cexport/CAdapterGenerator.kt index f9acbc46677..7bc93c60115 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/cexport/CAdapterGenerator.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/cexport/CAdapterGenerator.kt @@ -485,19 +485,18 @@ internal class CAdapterGenerator( it.module in moduleDescriptors } visitChildren(fragments) - if (configuration.get(USE_FIR) == true) { - // K2 does not serialize empty package fragments, thus breaking the scope chain. - // The following traverse definitely reaches every subpackage fragment. - scopes.push(getPackageScope(FqName.ROOT)) - val subfragments = descriptor.module.getSubPackagesOf(FqName.ROOT) { true } - .flatMap { - descriptor.module.getPackage(it).fragments.filter { - it.module in moduleDescriptors - } + // K2 does not serialize empty package fragments, thus breaking the scope chain. + // The following traverse definitely reaches every subpackage fragment. + scopes.push(getPackageScope(FqName.ROOT)) + val subfragments = descriptor.module.getSubPackagesOf(FqName.ROOT) { true } + .flatMap { + descriptor.module.getPackage(it).fragments.filter { + it.module in moduleDescriptors } - visitChildren(subfragments) - scopes.pop() - } + } + visitChildren(subfragments) + scopes.pop() + return true } diff --git a/kotlin-native/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/tasks/KonanCompileTask.kt b/kotlin-native/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/tasks/KonanCompileTask.kt index 30a3a3e8b81..26122ae166b 100644 --- a/kotlin-native/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/tasks/KonanCompileTask.kt +++ b/kotlin-native/tools/kotlin-native-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/konan/tasks/KonanCompileTask.kt @@ -149,10 +149,10 @@ abstract class KonanCompileTask: KonanBuildingTask(), KonanCompileSpec { .excludeFlags("-Xcoverage") .excludeArguments("-Xcoverage-file", "-Xlibrary-to-cover", "-Xpartial-linkage", "-Xpartial-linkage-loglevel") - // Don't include the -Xemit-lazy-objc-header flag into + // Don't include the -Xemit-lazy-objc-header and -language-version flags into // the second stage because this stage have no sources. private fun secondStageExtraOpts() = extraOpts - .excludeArguments("-Xemit-lazy-objc-header") + .excludeArguments("-Xemit-lazy-objc-header", "-language-version") /** Args passed to the compiler at the first stage of two-stage compilation (klib building). */ protected fun buildFirstStageArgs(klibPath: String) = mutableListOf().apply { diff --git a/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/support/compilation/TestCompilation.kt b/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/support/compilation/TestCompilation.kt index 78ef2891080..bb20fb16b38 100644 --- a/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/support/compilation/TestCompilation.kt +++ b/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/support/compilation/TestCompilation.kt @@ -226,7 +226,7 @@ internal class ObjCFrameworkCompilation( sanitizer = settings.get(), gcType = settings.get(), gcScheduler = settings.get(), - pipelineType = settings.get(), + pipelineType = settings.getStageDependentPipelineType(), freeCompilerArgs = freeCompilerArgs, sourceModules = sourceModules, dependencies = CategorizedDependencies(dependencies), @@ -310,7 +310,7 @@ internal class ExecutableCompilation( sanitizer = settings.get(), gcType = settings.get(), gcScheduler = settings.get(), - pipelineType = settings.get(), + pipelineType = settings.getStageDependentPipelineType(), freeCompilerArgs = freeCompilerArgs, sourceModules = sourceModules, dependencies = CategorizedDependencies(dependencies), @@ -506,3 +506,9 @@ private object BinaryOptions { fun chooseFor(cacheMode: CacheMode) = if (cacheMode.useStaticCacheForDistributionLibraries) forUseWithCache else defaultForTesting } } + +internal fun Settings.getStageDependentPipelineType(): PipelineType = + when (get()) { + TestMode.ONE_STAGE_MULTI_MODULE -> get() + TestMode.TWO_STAGE_MULTI_MODULE -> PipelineType.K1 // Don't pass "-language_version 2.0" to the second stage + }