Я пытаюсь создать плагин компилятора 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. В конце концов, любая идея или запрос на получение ответа будут оценены.