rust/compiler/rustc_builtin_macros/src
bors 70e04bd88d Auto merge of #111748 - nnethercote:Cow-DiagnosticMessage, r=WaffleLapkin
Use `Cow` in `{D,Subd}iagnosticMessage`.

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.

r? `@WaffleLapkin`
2023-05-29 07:10:44 +00:00
..
assert [RFC-2011] Expand more expressions 2023-05-24 21:15:50 -03:00
deriving Avoid some unnecessary local attr variables. 2023-05-26 07:00:26 +10:00
format_foreign
alloc_error_handler.rs
asm.rs Avoid &format("...") calls in error message code. 2023-05-16 17:59:56 +10:00
assert.rs
cfg_accessible.rs
cfg_eval.rs Use Option::is_some_and and Result::is_ok_and in the compiler 2023-05-24 14:20:41 +00:00
cfg.rs
cmdline_attrs.rs
compile_error.rs Use Cow in {D,Subd}iagnosticMessage. 2023-05-29 09:23:43 +10:00
concat_bytes.rs fix TODO comments 2023-05-02 10:32:07 +00:00
concat_idents.rs refactor: use by-ref TokenTree iterator to avoid a few clones 2023-05-11 21:59:38 -05:00
concat.rs initial step towards implementing C string literals 2023-05-02 10:30:09 +00:00
derive.rs
edition_panic.rs
env.rs Better diagnostics for env! where variable contains escape 2023-05-11 21:41:07 +01:00
errors.rs Use Cow in {D,Subd}iagnosticMessage. 2023-05-29 09:23:43 +10:00
format_foreign.rs Remove useless drop of copy type 2023-05-10 19:36:01 +02:00
format.rs Avoid &format("...") calls in error message code. 2023-05-16 17:59:56 +10:00
global_allocator.rs Split AllocatorKind::fn_name in global_fn_name and default_fn_name 2023-05-11 14:35:08 +00:00
lib.rs Add derive for core::marker::ConstParamTy 2023-05-16 20:09:25 +02:00
log_syntax.rs
proc_macro_harness.rs Restrict From<S> for {D,Subd}iagnosticMessage. 2023-05-03 08:44:39 +10:00
source_util.rs Avoid &format("...") calls in error message code. 2023-05-16 17:59:56 +10:00
standard_library_imports.rs
test_harness.rs
test.rs
trace_macros.rs refactor: use by-ref TokenTree iterator to avoid a few clones 2023-05-11 21:59:38 -05:00
type_ascribe.rs
util.rs