E4155

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)
}