Я работал с макросами 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?