Макросы Scala Def — как получить элемент параметризованного типа символа?

Я пытаюсь получить параметризованный тип члена символа в контексте MACRO. У меня есть только символ (не могу использовать weakTypeOf[List[Blah]]), потому что я перебираю кучу классов.

val meWantArg = classSymbol.member("paramList": TermName).typeSignature

возвращается...

=> List[IWantThis]

Как получить объект IWantThis Type???

Я пробовал:

meWantArg.typeSymbol.asType.typeParams //returns List(type A)

Я пробовал извлечение:

TypeRef(_,_,args) = meWantArg //returns ()

Имейте в виду, я использую плагин макросов 2.10.2.


person Daniel Macias    schedule 19.08.2013    source источник


Ответы (1)


Из => IWantThis я предполагаю, что paramList - это не val, а метод арности-0 без круглых скобок:

def paramList: List[IWantThis] = ???

Если это так, член является типом метода, и вы должны получить возвращаемый тип метода до извлечения из него аргументов:

val meWantArg = classSymbol.member("paramList": TermName).asMethod.returnType
val TypeRef(_,_,args) = meWantArg
person gourlaysama    schedule 20.08.2013