Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make #[diagnostic::on_unimplemented] format string parsing more robust #122402

Merged
merged 1 commit into from
Mar 21, 2024

Commits on Mar 21, 2024

  1. Make #[diagnostic::on_unimplemented] format string parsing more robust

    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 rust-lang#122391
    weiznich committed Mar 21, 2024
    Configuration menu
    Copy the full SHA
    5568c56 View commit details
    Browse the repository at this point in the history