У меня есть следующий макрос, определяющий класс и возвращающий экземпляр этого класса (с Scala 2.10.2 и плагин макроса):
def test[T] = macro testImpl[T]
def testImpl[T : c.WeakTypeTag](c: Context): c.Expr[Any] = {
import c.universe._
val className = newTypeName("Test")
c.Expr { q"""
class $className {
def method = 1
}
new $className
"""}
}
Когда я вызываю макрос:
case class Cat(name: String)
val t = test[Cat].method
Я получаю следующую ошибку:
method method in class Test cannot be accessed in Test
val t = test[Cat].method
^
Моя общая цель - использовать методы вампиров и использовать квазициты для описания сгенерированного класса. Как я могу решить эту ошибку?