E4224

E4224#

编译器诊断名称:lexscan_catchall_missing

lexmatchlexscan 表达式中的正则分支并不穷尽,并且该表达式没有兜底分支。

编译器会检查正则分支是否覆盖所有可能的输入,包括空输入,以及流式扫描的输入结束。如果表达式是穷尽的,可以省略兜底分支。否则,请添加最后的兜底分支,定义没有正则分支匹配时的结果。

错误示例#

///|
pub fn classify(text : String) -> String {
  lexmatch text with longest {
    re"^[a-z]+$" => "word"
  }
}

建议#

使正则分支穷尽,或添加最后的兜底分支。lexmatch 的兜底分支可以绑定未匹配的输入;流式 lexscan 的兜底分支必须写成 _。如果存在兜底分支但它不在最后,请参见 E4171

///|
pub fn classify(text : String) -> String {
  lexmatch text with longest {
    re"^.*$" => "text"
  }
}