E4171

E4171#

Compiler diagnostic name: last_regex_case_must_be_catchall.

lexmatch 表达式的最后一个分支必须是兜底模式。

MoonBit 会检查 lexmatch 表达式的穷尽性。当之前所有正则模式都匹配失败时,表达式仍然需要一个可以处理剩余输入的最终分支。

错误示例#

///|
pub fn match_text(text : String) -> Unit {
  lexmatch text with longest {
    "abc" => ()
  }
}

唯一的分支匹配 "abc",因此其他输入没有可执行的分支。

修改建议#

添加最终的 _ 分支,或者用其他方式让最后一个分支匹配所有剩余输入。

///|
pub fn match_text(text : String) -> Unit {
  lexmatch text with longest {
    "abc" => ()
    _ => ()
  }
}