E0090

E0090#

警告名:unused_lexcase

lexmatch または lexscan の分岐が決して選択されません。

先行する分岐が後続の分岐にマッチするすべての入力に対して優先される場合、またはその分岐の正規表現がどの入力にもマッチしない場合に、この警告が発生します。網羅的な正規表現ケースの後に不要なキャッチオールを置いた場合も、同じ警告が発生します。

エラー例#

///|
pub fn classify(text : String) -> String {
  lexmatch text {
    re"^a.*$" => "starts with a"
    re"^ab.*$" => "starts with ab"
    _ => "other"
  }
}

最初の分岐が "ab" で始まるすべての文字列をすでに処理するため、先頭一致の意味論では 2 番目の分岐に到達できません。

修正案#

到達不能な分岐を削除するか、より具体的な正規表現を、それを覆い隠している分岐より前へ移動してください。

///|
pub fn classify(text : String) -> String {
  lexmatch text {
    re"^ab.*$" => "starts with ab"
    re"^a.*$" => "starts with a"
    _ => "other"
  }
}