如何使用内联精炼返回类型的宏?

时间:2014-08-12 00:37:49

标签: scala macros

我有一个宏:

def f[T]: Any = macro fImpl[T]

 def fImpl[T : context.WeakTypeTag](context: whitebox.Context):
   context.Tree =
 {
   import context.universe._

   q"{ (x: ${weakTypeOf[T]}) => x + 1 }"
 }

当我用它时

f[Int](1)

我看到了

Error:(26, 6) Any does not take parameters
               f[Int](1)
                     ^

如果我分成两个陈述,

val x = f[Int]

x(1)

没有错误。

有没有办法可以将宏f[Int]用作函数,而无需编写辅助语句?

1 个答案:

答案 0 :(得分:2)

这是一个错误,我们在https://issues.scala-lang.org/browse/SI-7914的问题跟踪器中报告了该错误。