假设我有两个宏注释类,并且在扩展期间定义了它们的字段之后,一个依赖于另一个:
@Annotation
case class A(i: Int)
@Annotation
case class B(a: A)
我需要A
先扩展B
,但它们的定义顺序并不能保证。
例如,B
在不相关的编译单元中将引用作为类型参数引用,例如:
class X{val b = B(A(1))}
在一个文件和class Y{Z[B]}
另一个文件中,
导致B
首先扩展,因此我的编译失败。
在这种情况下,是什么决定了宏展开的顺序?有没有办法强制执行所需的命令?
感谢您的输入,
朱利安