Ответ 1
В моем посте о методах вампиров я упоминаю этот обходной путь для эту ошибку, По какой-то причине вы в настоящее время не можете увидеть методы анонимного класса в экземпляре, возвращенном из макроса, если вы не создаете класс-оболочку, который расширяет класс с помощью методов и вместо этого возвращает экземпляр этого.
Вы видите ту же ошибку с немного другого угла. Вы назвали класс с методами, которые вы хотите увидеть на возвращаемом экземпляре типа структуры, но вам все равно нужна оболочка. Будет работать следующее:
c.Expr { q"""
class $className {
def method = 1
}
new $className {}
"""}
Обратите внимание, что все, что я сделал, это добавить пару скобок к строке, создающей экземпляр, так что я получаю экземпляр анонимного класса, расширяющий $className
, а не только $className
.
Я понятия не имею, что за этой ошибкой, и я не уверен, знает ли Евгений больше. Недавно я подтвердил, что он все еще находится в последней версии 2.11.