E4185#

Compiler diagnostic name: invalid_lex_pattern.

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

現在の字句ケースには 1 つの正規表現定数式を記述し、選択したマッチモードでサポートされる asbefore=after= の束縛を必要に応じて追加します。

Erroneous example#

The following pattern has too many top-level pieces:

///|
fn classify(input : String) -> String {
  lexmatch input with longest {
    ("a", before, "b", after) => before.to_owned() + after.to_owned()
    _ => "none"
  }
}

///|
test {
  ignore(classify)
}

現在のコードでは、代わりに正規表現ケース構文を使います。

Suggestion#

現在の lexmatch のケースパターンを使ってください。真偽値の結果だけが必要な場合は、正規表現マッチ式を使います:

///|
fn classify(input : String) -> String {
  if input =~ (re"a" + re"b", before~, after~) {
    before.to_owned() + after.to_owned()
  } else {
    "none"
  }
}

///|
test {
  inspect(classify("xabz"), content="xz")
}