mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-23 07:14:28 +00:00
5568c569c0
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
72 lines
3.8 KiB
Plaintext
72 lines
3.8 KiB
Plaintext
trait_selection_adjust_signature_borrow = consider adjusting the signature so it borrows its {$len ->
|
|
[one] argument
|
|
*[other] arguments
|
|
}
|
|
|
|
trait_selection_adjust_signature_remove_borrow = consider adjusting the signature so it does not borrow its {$len ->
|
|
[one] argument
|
|
*[other] arguments
|
|
}
|
|
|
|
trait_selection_async_closure_not_fn = async closure does not implement `{$kind}` because it captures state from its environment
|
|
|
|
trait_selection_closure_fn_mut_label = closure is `{$trait_prefix}FnMut` because it mutates the variable `{$place}` here
|
|
|
|
trait_selection_closure_fn_once_label = closure is `{$trait_prefix}FnOnce` because it moves the variable `{$place}` out of its environment
|
|
|
|
trait_selection_closure_kind_mismatch = expected a closure that implements the `{$trait_prefix}{$expected}` trait, but this closure only implements `{$trait_prefix}{$found}`
|
|
.label = this closure implements `{$trait_prefix}{$found}`, not `{$trait_prefix}{$expected}`
|
|
|
|
trait_selection_closure_kind_requirement = the requirement to implement `{$trait_prefix}{$expected}` derives from here
|
|
|
|
trait_selection_disallowed_positional_argument = positional format arguments are not allowed here
|
|
.help = only named format arguments with the name of one of the generic types are allowed in this context
|
|
|
|
trait_selection_dump_vtable_entries = vtable entries for `{$trait_ref}`: {$entries}
|
|
|
|
trait_selection_empty_on_clause_in_rustc_on_unimplemented = empty `on`-clause in `#[rustc_on_unimplemented]`
|
|
.label = empty on-clause here
|
|
|
|
trait_selection_ignored_diagnostic_option = `{$option_name}` is ignored due to previous definition of `{$option_name}`
|
|
.other_label = `{$option_name}` is first declared here
|
|
.label = `{$option_name}` is already declared here
|
|
|
|
trait_selection_inherent_projection_normalization_overflow = overflow evaluating associated type `{$ty}`
|
|
|
|
trait_selection_invalid_format_specifier = invalid format specifier
|
|
.help = no format specifier are supported in this position
|
|
|
|
trait_selection_invalid_on_clause_in_rustc_on_unimplemented = invalid `on`-clause in `#[rustc_on_unimplemented]`
|
|
.label = invalid on-clause here
|
|
|
|
trait_selection_malformed_on_unimplemented_attr = malformed `on_unimplemented` attribute
|
|
.help = only `message`, `note` and `label` are allowed as options
|
|
.label = invalid option found here
|
|
|
|
trait_selection_missing_options_for_on_unimplemented_attr = missing options for `on_unimplemented` attribute
|
|
.help = at least one of the `message`, `note` and `label` options are expected
|
|
|
|
trait_selection_negative_positive_conflict = found both positive and negative implementation of trait `{$trait_desc}`{$self_desc ->
|
|
[none] {""}
|
|
*[default] {" "}for type `{$self_desc}`
|
|
}:
|
|
.negative_implementation_here = negative implementation here
|
|
.negative_implementation_in_crate = negative implementation in crate `{$negative_impl_cname}`
|
|
.positive_implementation_here = positive implementation here
|
|
.positive_implementation_in_crate = positive implementation in crate `{$positive_impl_cname}`
|
|
|
|
trait_selection_no_value_in_rustc_on_unimplemented = this attribute must have a valid value
|
|
.label = expected value here
|
|
.note = eg `#[rustc_on_unimplemented(message="foo")]`
|
|
|
|
trait_selection_trait_has_no_impls = this trait has no implementations, consider adding one
|
|
|
|
trait_selection_ty_alias_overflow = in case this is a recursive type alias, consider using a struct, enum, or union instead
|
|
trait_selection_unable_to_construct_constant_value = unable to construct a constant value for the unevaluated constant {$unevaluated}
|
|
|
|
trait_selection_unknown_format_parameter_for_on_unimplemented_attr = there is no parameter `{$argument_name}` on trait `{$trait_name}`
|
|
.help = expect either a generic argument name or {"`{Self}`"} as format argument
|
|
|
|
trait_selection_wrapped_parser_error = {$description}
|
|
.label = {$label}
|