2013-04-07 59 views
2

當應用於宏def s時,似乎implicit關鍵字不起作用。隱式宏在Scala 2.10.1中找不到?

例如,採取以下的代碼:

// Compilation unit A: 
case class Foo[A] 
// end A. 

// Compilation unit B: 
implicit def implicitFoo[A]: Foo[A] = macro implicitFoo_impl[A] 

def implicitFoo_impl[A](c: Context): c.Expr[Foo[A]] = 
    c.universe.reify(Foo[A]) 
// end B. 

// Compilation unit C: 
implicitly[Foo[Int]] // Fails with "could not find implicit value for parameter e: Foo[Int] 
// end C. 

implicitly[Foo[Int]]失敗,但它不應該;如果我用implicit def implicitFoo[A]: Foo[A] = ???代替implicit def implicitFoo[A]: Foo[A] = macro implicitFoo_impl[A],編譯成功。

這是錯誤還是用戶錯誤?

回答

4

這是由https://issues.scala-lang.org/browse/SI-5923引起的,它在master(2.11.0-SNAPSHOT)中修復,我計劃將其反向移植到2.10.2。在上述JIRA頁面上查看更多信息(包括可能阻止我及時爲2.10.2做出的潛在問題)。