Неразрешенная ссылка в сгенерированном методе Kotlin плагином компилятора - PullRequest
0 голосов
/ 04 марта 2020

Я пытаюсь создать плагин компилятора Kotlin для генерации некоторых кодов для меня. До сих пор я придумал этот код . Я хочу сгенерировать свойство track, чтобы ниже проходил тест SmokeTest.kt (я прокомментировал этот тест для прохождения других, что показывает, что сгенерированный код существует как тесты с работой отражения).

@Test
fun trackable() {
    assertThat(TrackableClass().track).isEqualTo("TrackableClass")
}

, но в настоящее время он не работает с

SmokeTest.kt: (24, 37): Unresolved reference: track

С другой стороны, если вы проверите тесты в самом модуле плагина, вы можете увидеть похожий код, который находится в TrackablePluginTest. kt class, компилируется и работает в том виде, в каком должен быть, без исключения «Unresolved reference».

@Test
fun `generate and use the getTrack method run`() {
    val result = compile(givenTrackableClass(), givenTrackableClassTestToRun())
    assertThat(result.exitCode).isEqualTo(KotlinCompilation.ExitCode.OK)
    val directory =
        result.generatedFiles.first { it.exists() && it.parentFile.name == "META-INF" }.parentFile.parentFile
    val output = runFiles(directory, "$trackablePackage.TrackableClassTestKt")
    assertThat(output).isEqualTo("TrackableClass\n")
}

Я не уверен, является ли это ошибкой в ​​моем коде, или я ожидал слишком многого генерации кода плагина компилятора, или это ошибка в компиляторе, или плагин gradle неправильно устанавливает плагин компилятора! Однако я должен упомянуть, что большую часть кода я позаимствовал у самого кода redacted-compiler-plugin и Kotlin. В конце концов, любая идея или запрос на получение ответа будут оценены.

...