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.
This commit is contained in:
parent
1c53407e8c
commit
781111ef35
45 changed files with 308 additions and 287 deletions
|
@ -827,7 +827,7 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
|
|||
if !is_allowed(feature) && !allowed_by_implication {
|
||||
let lint_buffer = &mut self.lint_buffer;
|
||||
let soft_handler =
|
||||
|lint, span, msg: &_| lint_buffer.buffer_lint(lint, node_id, span, msg);
|
||||
|lint, span, msg: String| lint_buffer.buffer_lint(lint, node_id, span, msg);
|
||||
stability::report_unstable(
|
||||
self.tcx.sess,
|
||||
feature,
|
||||
|
@ -846,7 +846,7 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
|
|||
let (message, lint) = stability::deprecation_message_and_lint(depr, "macro", &path);
|
||||
stability::early_report_deprecation(
|
||||
&mut self.lint_buffer,
|
||||
&message,
|
||||
message,
|
||||
depr.suggestion,
|
||||
lint,
|
||||
span,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue