E4222

E4222#

コンパイラ診断名:invalid_lexscan_target

字句マッチの対象が不正です。

lexmatch はメモリ内の String または StringView を受け付けます。lexscan はメモリ内の @lexbuf.StringScanner、同期ストリーミングの @lexbuf.Lexbuf、または非同期ストリーミングの @lexbuf.AsyncLexbuf を受け付けます。String または StringView の値は有効な lexscan 対象ではありません。メモリ内で 1 回だけ照合する場合は lexmatch を使い、複数回のスキャンでカーソルを維持する場合は StringScanner を作成してください。数値やユーザー定義の字句バッファ類似型など、その他の値はこれらの式では照合できません。

誤った例#

///|
pub fn scan_text(text : String) -> Unit {
  lexscan text with longest {
    _ => ()
  }
}

提案#

文字列相当の値には lexmatch を使うか、lexscan 用に StringScannerLexbuf、または AsyncLexbuf を作成してください。

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