[Coverage] Record function body region

This commit is contained in:
Anastasiya Shadrina
2019-10-30 17:11:47 +07:00
committed by Sergey Bogolepov
parent 091de1b8bc
commit 7359775daf
2 changed files with 12 additions and 9 deletions
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.expressions.*
import org.jetbrains.kotlin.ir.util.nameForIrSerialization
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
import org.jetbrains.kotlin.ir.visitors.acceptVoid
@@ -39,12 +40,10 @@ internal class CoverageRegionCollector(private val fileFilter: (IrFile) -> Boole
override fun visitFunction(declaration: IrFunction) {
if (!declaration.isInline && !declaration.isExternal && !declaration.isGeneratedByCompiler) {
declaration.body?.let {
val regionsCollector = IrFunctionRegionsCollector(fileFilter, file)
regionsCollector.visitBody(it)
if (regionsCollector.regions.isNotEmpty()) {
functionRegions += FunctionRegions(declaration, regionsCollector.regions)
}
val regionsCollector = IrFunctionRegionsCollector(fileFilter, file)
regionsCollector.visitFunction(declaration)
if (regionsCollector.regions.isNotEmpty()) {
functionRegions += FunctionRegions(declaration, regionsCollector.regions)
}
}
// TODO: Decide how to work with local functions. Should they be process separately?
@@ -57,7 +56,7 @@ internal class CoverageRegionCollector(private val fileFilter: (IrFile) -> Boole
// So lets filter them.
private val IrDeclaration.isGeneratedByCompiler: Boolean
get() {
return origin != IrDeclarationOrigin.DEFINED
return origin != IrDeclarationOrigin.DEFINED || nameForIrSerialization.asString() == "Konan_start"
}
/**
@@ -83,6 +82,10 @@ private class IrFunctionRegionsCollector(
}
override fun visitFunction(declaration: IrFunction) {
declaration.body?.let {
recordRegion(it)
visitBody(it)
}
}
override fun visitExpression(expression: IrExpression) {
+2 -2
View File
@@ -3855,7 +3855,7 @@ if (UtilsKt.testTargetSupportsCodeCoverage(project)) {
binaryName = "CoverageBasic"
numberOfCoveredFunctions = 1
numberOfCoveredLines = 1
numberOfCoveredLines = 3
konanArtifacts {
program(binaryName, targets: [ target ]) {
@@ -3892,7 +3892,7 @@ if (UtilsKt.testTargetSupportsCodeCoverage(project)) {
task coverage_smoke0(type: CoverageTest) {
binaryName = "CoverageSmoke0"
numberOfCoveredFunctions = 2
numberOfCoveredLines = 3
numberOfCoveredLines = 5
konanArtifacts {
program(binaryName, targets: [ target ]) {