781111ef35
Each of `{D,Subd}iagnosticMessage::{Str,Eager}` has a comment: ``` // FIXME(davidtwco): can a `Cow<'static, str>` be used here? ``` This commit answers that question in the affirmative. It's not the most compelling change ever, but it might be worth merging. This requires changing the `impl<'a> From<&'a str>` impls to `impl From<&'static str>`, which involves a bunch of knock-on changes that require/result in call sites being a little more precise about exactly what kind of string they use to create errors, and not just `&str`. This will result in fewer unnecessary allocations, though this will not have any notable perf effects given that these are error paths. Note that I was lazy within Clippy, using `to_string` in a few places to preserve the existing string imprecision. I could have used `impl Into<{D,Subd}iagnosticMessage>` in various places as is done in the compiler, but that would have required changes to *many* call sites (mostly changing `&format("...")` to `format!("...")`) which didn't seem worthwhile.
31 lines
1.3 KiB
Plaintext
31 lines
1.3 KiB
Plaintext
error[E0277]: the trait bound `NotIntoDiagnosticArg: IntoDiagnosticArg` is not satisfied
|
|
--> $DIR/diagnostic-derive-doc-comment-field.rs:37:10
|
|
|
|
|
LL | #[derive(Diagnostic)]
|
|
| ---------- required by a bound introduced by this call
|
|
...
|
|
LL | arg: NotIntoDiagnosticArg,
|
|
| ^^^^^^^^^^^^^^^^^^^^ the trait `IntoDiagnosticArg` is not implemented for `NotIntoDiagnosticArg`
|
|
|
|
|
= help: normalized in stderr
|
|
note: required by a bound in `DiagnosticBuilder::<'a, G>::set_arg`
|
|
--> $COMPILER_DIR/rustc_errors/src/diagnostic_builder.rs:LL:CC
|
|
= note: this error originates in the macro `forward` (in Nightly builds, run with -Z macro-backtrace for more info)
|
|
|
|
error[E0277]: the trait bound `NotIntoDiagnosticArg: IntoDiagnosticArg` is not satisfied
|
|
--> $DIR/diagnostic-derive-doc-comment-field.rs:47:10
|
|
|
|
|
LL | #[derive(Subdiagnostic)]
|
|
| ------------- required by a bound introduced by this call
|
|
...
|
|
LL | arg: NotIntoDiagnosticArg,
|
|
| ^^^^^^^^^^^^^^^^^^^^ the trait `IntoDiagnosticArg` is not implemented for `NotIntoDiagnosticArg`
|
|
|
|
|
= help: normalized in stderr
|
|
note: required by a bound in `Diagnostic::set_arg`
|
|
--> $COMPILER_DIR/rustc_errors/src/diagnostic.rs:960:5
|
|
|
|
error: aborting due to 2 previous errors
|
|
|
|
For more information about this error, try `rustc --explain E0277`.
|