Типы сглаживания в отражении Scala

Как я могу разрешить псевдонимы с Type? Т.е.

import reflect.runtime.universe._

type Alias[A] = Option[Option[A]]
val tpe = typeOf[Alias[_]] 
val ExistentialType(quantified, underlying) = tpe

Как мне получить Option[Option[_$1]] от underlying (или от tpe)? Я знаю, что typeSymbol разрешает псевдонимы, но, похоже, теряет параметры в процессе:

scala> val tT = typeOf[Alias[_]].typeSymbol
tT: reflect.runtime.universe.Symbol = class Option

scala> tT.asType.toType
res3: reflect.runtime.universe.Type = Option[A]

scala> tT.asType.typeParams
res4: List[reflect.runtime.universe.Symbol] = List(type A)

person Alexey Romanov    schedule 28.03.2015    source источник


Ответы (1)


Оказывается, метод называется normalize в 2.10 (устарело и dealias добавлено в 2.11). Не знаю, как мне удалось его пропустить во время первого обыска.

person Alexey Romanov    schedule 28.03.2015