E4155#
const 或类型别名声明中存在循环。
常量和类型别名可以引用同一个包中的其他声明,但这些引用不能形成循环。
错误示例#
///|
const A : Int = B + 1
///|
const B : Int = A + 1
///|
type T1 = T2
///|
type T2 = T1
建议#
打破循环,使每个常量和类型别名最终都能解析为具体的值或类型。
///|
const A : Int = 1
///|
const B : Int = A + 1
///|
type T1 = Int
///|
type T2 = T1
///|
fn use_declarations(value : T2) -> Int {
value + B
}
///|
test {
assert_eq(use_declarations(A), 3)
}