假设我有两个宏注释类,并且在扩展期间定义了它们的字段之后,一个依赖于另一个:
@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首先扩展,因此我的编译失败。
在这种情况下,是什么决定了宏展开的顺序?有没有办法强制执行所需的命令?
感谢您的输入,
朱利安