Я работал с макросами Scala и имел следующий код в макросе:
val fieldMemberType = fieldMember.typeSignatureIn(objectType) match {
case NullaryMethodType(tpe) => tpe
case _ => doesntCompile(s"$propertyName isn't a field, it must be another thing")
}
reify{
new TypeBuilder() {
type fieldType = fieldMemberType.type
}
}
Как вы можете видеть, мне удалось получить c.universe.Type fieldMemberType. Это представляет собой тип определенного поля в объекте. Как только я получу это, я хочу создать новый объект TypeBuilder в reify. TypeBuilder - абстрактный класс с абстрактным параметром. Этот абстрактный параметр fieldType. Я хочу, чтобы этот fieldType был тем типом, который я нашел раньше.
Выполнение приведенного здесь кода возвращает мне fieldMemberType not found. Есть ли способ, которым я могу заставить fieldMemberType работать внутри предложения reify?