将 `by lazy` 和 `object` 结合使用会导致编译器错误 "cannot find symbol"

Combining `by lazy` and `object` results in compiler-error "cannot find symbol"

我在更新到 Kotlin 1.3.0 后无法再编译(在 1.2.71 中工作)尝试使用 by lazy object。这似乎只发生在我的项目上。演示项目运行良好。

我想为给定的 class 添加一个接口并延迟加载它的值。

我创建了一个小示例,它在我的项目中不起作用在任何其他项目中都可以正常工作:

open class Foo

interface Bar {
    val lazyLoadedString : String
}

class Test {
    private val foo by lazy {
        object : Foo(), Bar {
            override val lazyLoadedString  = "Demo"
        }
    }
}

一旦我组合了objectby lazy,它就无法再编译并显示以下错误。每一个单独使用都有效。

Test.java:9: error: cannot find symbol
private final my.package.Test$foo getFoo()

symbol: class Test$foo
location: package my.package

仔细观察,您会发现生成的 java 文件 显示此错误而不是 kotlin 代码。

对此有什么想法吗?

对于这种特殊类型的代码,Kotlin 1.3.0 中的 kapt 似乎已损坏。

在上面的代码中,触发它的是Realm注册的注解处理器,但任何其他注解处理器都会导致同样的错误。

正在此处跟踪问题:https://youtrack.jetbrains.net/issue/KT-28053