Получение аннотаций свойств котлина в Линте?

#kotlin #annotation-processing #android-lint

#котлин #обработка аннотаций #android-линт

Вопрос:

Фон:

У меня есть делегат , которого можно собрать как StateFlow , например, так:

 @Suppress("UNCHECKED_CAST") val lt;Tgt; KProperty0lt;Tgt;.flow: StateFlowlt;Tgt;  get() = getDelegate() as StateFlowlt;Tgt;  class FlowContainer {  val value: Int by flowDelegate(0) }  class Example {  fun foo() {  val container = FlowContainer()  scope.launch {  container::value.flow.collect { /*...*/ }  }  return  } }  

Проблема, очевидно, в том, что это связано с непроверенными приведениями, и нет никаких индикаторов для потребителей, имеет ли свойство эту возможность делегирования. Моя текущая идея состоит в том, чтобы аннотировать любое свойство с помощью:

 @Target(AnnotationTarget.CLASS) @Retention(AnnotationRetention.SOURCE) @MustBeDocumented annotation class FlowObservable  

И убедитесь, что любое использование .flow метода относится к аннотированному свойству.

Вопрос:

Lint, который использует PSI/UAST, похоже, не имеет никакого понятия «свойство», только поля и методы. Кто-нибудь знает, как вы могли бы получить свойства и их аннотации?