E4183#

Compiler diagnostic name: regex_interpolation_is_not_supported.

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

現在の lexmatchlexscan のケースは、正規表現の定数式を使います。実行時の文字列補間は正規表現のケースパターンではありません。

Erroneous example#

///|
pub fn match_text(text : String, part : String) -> Unit {
  lexmatch text with longest {
    ("\{part}", _) => ()
    _ => ()
  }
}

The regex pattern tries to interpolate part.

Suggestion#

正規表現リテラルまたは名前付き正規表現定数を使ってください。動的なマッチには通常の Regex API を使います。

///|
pub fn match_text(text : String) -> Unit {
  lexmatch text with longest {
    (re"^abc", after=_) => ()
    _ => ()
  }
}