diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/coverage/CoverageManager.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/coverage/CoverageManager.kt index 7cd2ed532c8..916e0920b50 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/coverage/CoverageManager.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/coverage/CoverageManager.kt @@ -65,7 +65,8 @@ internal class CoverageManager(val context: Context) { val coveredUserCode = if (shouldCoverProgram) setOf(context.moduleDescriptor) else emptySet() val coveredLibs = context.irModules.filter { it.key in librariesToCover }.values .map { it.descriptor }.toSet() - coveredLibs + coveredUserCode + val coveredIncludedLibs = if (shouldCoverProgram) context.getIncludedLibraryDescriptors().toSet() else emptySet() + coveredLibs + coveredUserCode + coveredIncludedLibs } private fun fileCoverageFilter(file: IrFile) = diff --git a/backend.native/tests/build.gradle b/backend.native/tests/build.gradle index 2554701da03..b838778f66e 100644 --- a/backend.native/tests/build.gradle +++ b/backend.native/tests/build.gradle @@ -3703,16 +3703,7 @@ standaloneTest("coverage_basic_program") { flags = ["-Xcoverage-file=$coverageFile", "-Xcoverage", "-entry", "coverage.basic.program.main"] source = "$projectDir/coverage/basic/program/main.kt" - doFirst { file(coverageFile).delete() } - doLast { - if (twoStageEnabled) { - // If two-stage compilation is enabled, no sources are passed to the compiler when a final binary is generated. - // So according to -Xcoverage flag semantics it must provide no coverage info. - assert !file(coverageFile).exists() - return - } - execLlvm("llvm-profdata") { args "merge" args "$dir/program.profraw"