4

Make `#[diagnostic::on_unimplemented]` format string parsing more robust by weiz...

 1 month ago
source link: https://github.com/rust-lang/rust/pull/122402
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Conversation

Contributor

This commit fixes several issues with the format string parsing of the #[diagnostic::on_unimplemented] attribute that were pointed out by @ehuss.
In detail it fixes:

  • Appearing format specifiers (display, etc). For these we generate a warning that the specifier is unsupported. Otherwise we ignore them
  • Positional arguments. For these we generate a warning that positional arguments are unsupported in that location and replace them with the format string equivalent (so {} or {n} where n is the index of the positional argument)
  • Broken format strings with enclosed }. For these we generate a warning about the broken format string and set the emitted message literally to the provided unformatted string
  • Unknown format specifiers. For these we generate an additional warning about the unknown specifier. Otherwise we emit the literal string as message.

This essentially makes those strings behave like format! with the minor difference that we do not generate hard errors but only warnings. After that we continue trying to do something unsuprising (mostly either ignoring the broken parts or falling back to just giving back the literal string as provided).

Fix #122391

r? @compiler-errors


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK