E4224#
コンパイラ診断名:lexscan_catchall_missing。
lexmatch または lexscan 式の正規表現ケースは網羅的ではなく、その式にはキャッチオールケースがありません。
コンパイラは、正規表現ケースが空の入力、およびストリーミングスキャンにおける入力の終端を含む、可能な入力をすべて網羅しているかを確認します。網羅的な式ではキャッチオールを省略できます。そうでない場合は、どの正規表現ケースにもマッチしないときの結果を定義するため、最後にキャッチオール分岐を追加してください。
誤った例#
///|
pub fn classify(text : String) -> String {
lexmatch text with longest {
re"^[a-z]+$" => "word"
}
}
提案#
正規表現ケースを網羅的にするか、最後にキャッチオールケースを追加してください。lexmatch のキャッチオールはマッチしなかった入力を束縛できますが、lexscan のキャッチオールは、対象が StringScanner である場合も含め _ と記述する必要があります。キャッチオールが存在しても最後にない場合は、E4171 を参照してください。
///|
pub fn classify(text : String) -> String {
lexmatch text with longest {
re"^.*$" => "text"
}
}