如果安装了JaCoCo,Kotlin导入包级别的“val”对象将从Android库模块中失败

我发现我认为是Kotlin和JaCoCo覆盖工具之间的交互错误。

在库中UsefulObjects.kt

 package com.example.library object Turtles { val allTheWayDown = "Yertle" } val canYouHearTheDrums: Boolean get() = Turtles.allTheWayDown == "Yertle" 

在主应用程序MainActivity.kt

 package com.example.importobjectfails import android.support.v7.app.AppCompatActivity import android.os.Bundle import android.util.Log import com.example.library.Turtles import com.example.library.canYouHearTheDrums class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) Log.d("THIS", canYouHearTheDrums.toString()) Log.d("THAT", Turtles.allTheWayDown) } } 

JaCoCo测试覆盖被禁用,上面的代码编译和运行,写预期的消息到Android控制台。 JaCoCo启用代码甚至不编译,它失败了:

 e: ImportObjectFails/app/src/main/java/com/example/importobjectfails/MainActivity.kt: (7, 28): Unresolved reference: canYouHearTheDrums e: ImportObjectFails/app/src/main/java/com/example/importobjectfails/MainActivity.kt: (19, 23): Unresolved reference: canYouHearTheDrums 

已导入的Turtles对象没有问题,但是无法找到包级别的val声明对象。

这似乎是一个善意的错误。

我已经创建了一个示例项目来说明这一点: https : //github.com/gefilte/KotlinImportObjectFails

该项目将无法按照提交进行编译,但是如果从library/build.gradle文件中除去testCoverageEnabled true ,则它将编译并正常运行。