在做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
然而,没有一个展开。有没有方便的方法呢?
答案 0 :(得分:1)
到目前为止,这是不可能的,因为类型检查器使用非常有限的名称解析算法来确定给定标识符是否引用宏注释。在这个算法的限制范围内,遗憾的是不可能处理。我在https://github.com/scalamacros/paradise/issues/8创建了一个错误报告。