E4224#
编译器诊断名称:lexscan_catchall_missing。
lexmatch 或 lexscan 表达式中的正则分支并不穷尽,并且该表达式没有兜底分支。
编译器会检查正则分支是否覆盖所有可能的输入,包括空输入,以及流式扫描的输入结束。如果表达式是穷尽的,可以省略兜底分支。否则,请添加最后的兜底分支,定义没有正则分支匹配时的结果。
错误示例#
///|
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"
}
}