E4182#

Compiler diagnostic name: regex_constant_ref_in_lex_is_not_supported.

この診断は以前の字句パターン形式の制限を説明するものであり、現在のコンパイラでは発生しません。

現在の lexmatchlexscan のケースは、名前付き const 値を含む正規表現の定数式を受け付けます。

Erroneous example#

次の過去の例では、古いパターン形式を使っています:

///|
const WORD = re"[A-Za-z]+"

///|
pub fn match_word(input : String) -> Unit {
  lexmatch input with longest {
    (WORD, _) => ()
    _ => ()
  }
}

現在のコードでは、代わりに正規表現定数をケースパターンとして使います。

Suggestion#

正規表現定数をケースパターンとして直接使ってください:

///|
const WORD = re"^[A-Za-z]+$"

///|
pub fn match_word(input : String) -> Unit {
  lexmatch input with longest {
    WORD => ()
    _ => ()
  }
}