オブジェクトをさまざまな定義で強化する scala マクロ アノテーションを開発しています ( cf. play form マクロ)。とりわけ、オブジェクトにタイプエイリアスが含まれていることを望みます
type WFS = FS[_, _, _, _]
さまざまな数のワイルドカード引数用。
私はすでに単一のワイルドカード型の値を抽出しようとしました
q"type WFS = FS[_]" match { q"type WFS = FS[$t]" => t }
抽出された値を型パラメーターのリストで使用することを望んでいました (例: q"type WFS = FS[..$tplist]")。それでも、上記のステートメントはエラーを引き起こします。
scala> q"type WFS = FS[_]" match { case q"type WFS = FS[$t]" => t }
scala.MatchError: type WFS = FS[_$1] forSome {
<synthetic> type _$1 >: _root_.scala.Nothing <: _root_.scala.Any
} (of class scala.reflect.internal.Trees$TypeDef)
at .<init>(<console>:15)
at .<clinit>(<console>)
at .<init>(<console>:7)
at .<clinit>(<console>)
at $print(<console>)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43
必要なツリーを構築するための別の (おそらくもっと簡単な) 方法はありますか?