E4185#
Compiler diagnostic name: invalid_lex_pattern.
この診断は以前の文字列断片形式の lexmatch パターンを説明するものであり、現在のコンパイラでは発生しません。
現在の字句ケースには 1 つの正規表現定数式を記述し、選択したマッチモードでサポートされる as、before=、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")
}