Невозможно получить доступ к членам родителей при работе с аннотациями макросов

Я вроде заблокирован со следующим (макроаннотация) ситуация. Предположим, у меня есть аннотация под названием@factory которая направлена на созданиеapply метод для аннотированной черты в соответствующем сопутствующем объекте. Например, учитываяtrait A:

@factory
trait A {
  val a1: Int
}

ожидаемый код, который будет сгенерирован, следующий:

object A extends Factory[A] {
  def apply(_a1: Int) = new A {
    val a1 = _a1
  }
}

Теперь предположим, что у нас есть чертаB который наследует отA:

@factory
trait B extends A {
  val b1: String
}

который должен генерировать:

object B extends Factory[B] {
  def apply(_a1: Int, _b1: String) = new B {
    val a1 = _a1
    val b1 = _b1
  }
}

В последнем случае мне нужно знать, какие атрибуты существуют вA, но я не знаю, как получить информацию о них, При работе с макроаннотациями у меня есть доступ только кB черта АСТ (какClassDef). Хотя егоtemplate содержит ссылки на родителей (какTypeTrees), оба поляtpe а такжеsymbol пусты

Было бы здорово получить доступ кA АСТ. Тем не менее, я думаю, что это невозможно. Следовательно, любой символ или тип (указывающий на родительский или текущий тип) будет достаточно хорошим.

Если вы хотите увидеть больше деталей реализации, я загрузил проект вhttps://github.com/jesuslopez-gonzalez/cool-factory, Это может генерироватьapply для местных ценностей.

Ответы на вопрос(1)

Ваш ответ на вопрос