2013-12-09 48 views
0

在做DSL素材時,我想將多個別名添加到現有的宏註釋,如果可能,我想避免鍵入macroTransform定義。也就是說,我想爲「宏標題」聲明一個別名,而不是宏實現。添加用於宏註釋的別名

我一直在做一些不成功的嘗試。例如,在給定初始註釋頭,

class original extends StaticAnnotation { 
    def macroTransform(annottees: Any*) = macro originalImpl 
} 

我嘗試用一​​個類型別名,使一個別名:

type alias1 = original 
@alias1 trait Whatever 

此外,我部署一個繼承註解版本:

class alias2 extends original 
@alias2 trait Whatever 

但是,沒有人擴大。有沒有方便的方法呢?

回答

1

到目前爲止,這是不可能的,因爲typechecker使用非常有限的名稱解析算法來確定給定的標識符是否引用宏註釋。在這個算法的限制之內,不幸的是,這是不可能的。我在https://github.com/scalamacros/paradise/issues/8上創建了一個錯誤報告。