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