E4204

E4204#

编译器诊断名称:loop_nobreak_not_supported

loop 表达式不支持 nobreak 块。nobreak 适用于可能正常结束的循环形式,而 loop 是一种显式的函数式循环,需要在循环体中 continuebreak

错误示例#

///|
fn count_down(n : Int) -> Int {
  loop n {
    0 => break 0
    i => continue i - 1
  } nobreak {
    -1
  }
}

///|
test {
  ignore(count_down)
}

建议#

当你需要循环状态和显式结果时,将代码改写为 for 循环。

///|
fn count_down(n : Int) -> Int {
  for i = n {
    if i == 0 {
      break 0
    }
    continue i - 1
  }
}

///|
test {
  inspect(count_down(3), content="0")
}