E4224

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"
  }
}