Rollup merge of #99401 - TaKO8Ki:avoid-symbol-to-&str-conversions, r=nnethercote
Avoid `Symbol` to `&str` conversions `Symbol::as_str` is a slowish operation, so this patch removes some usages of it.
This commit is contained in:
commit
4815f94c51
@ -145,7 +145,7 @@ pub(crate) fn lower_inline_asm(
|
||||
InlineAsmRegOrRegClass::Reg(s) => {
|
||||
asm::InlineAsmRegOrRegClass::Reg(if let Some(asm_arch) = asm_arch {
|
||||
asm::InlineAsmReg::parse(asm_arch, s).unwrap_or_else(|e| {
|
||||
let msg = format!("invalid register `{}`: {}", s.as_str(), e);
|
||||
let msg = format!("invalid register `{}`: {}", s, e);
|
||||
sess.struct_span_err(*op_sp, &msg).emit();
|
||||
asm::InlineAsmReg::Err
|
||||
})
|
||||
@ -156,7 +156,7 @@ pub(crate) fn lower_inline_asm(
|
||||
InlineAsmRegOrRegClass::RegClass(s) => {
|
||||
asm::InlineAsmRegOrRegClass::RegClass(if let Some(asm_arch) = asm_arch {
|
||||
asm::InlineAsmRegClass::parse(asm_arch, s).unwrap_or_else(|e| {
|
||||
let msg = format!("invalid register class `{}`: {}", s.as_str(), e);
|
||||
let msg = format!("invalid register class `{}`: {}", s, e);
|
||||
sess.struct_span_err(*op_sp, &msg).emit();
|
||||
asm::InlineAsmRegClass::Err
|
||||
})
|
||||
|
@ -62,9 +62,9 @@ fn check_abi(&self, abi: ast::StrLit, constness: ast::Const) {
|
||||
let ast::StrLit { symbol_unescaped, span, .. } = abi;
|
||||
|
||||
if let ast::Const::Yes(_) = constness {
|
||||
match symbol_unescaped.as_str() {
|
||||
match symbol_unescaped {
|
||||
// Stable
|
||||
"Rust" | "C" => {}
|
||||
sym::Rust | sym::C => {}
|
||||
abi => gate_feature_post!(
|
||||
&self,
|
||||
const_extern_fn,
|
||||
|
@ -55,7 +55,7 @@ pub fn get_or_insert_gdb_debug_scripts_section_global<'ll>(cx: &CodegenCx<'ll, '
|
||||
// The initial byte `4` instructs GDB that the following pretty printer
|
||||
// is defined inline as opposed to in a standalone file.
|
||||
section_contents.extend_from_slice(b"\x04");
|
||||
let vis_name = format!("pretty-printer-{}-{}\n", crate_name.as_str(), index);
|
||||
let vis_name = format!("pretty-printer-{}-{}\n", crate_name, index);
|
||||
section_contents.extend_from_slice(vis_name.as_bytes());
|
||||
section_contents.extend_from_slice(&visualizer.src);
|
||||
|
||||
|
@ -228,7 +228,7 @@ pub fn suggest_adding_lifetime_params<'tcx>(
|
||||
if is_impl {
|
||||
sugg.push_str(" and update trait if needed");
|
||||
}
|
||||
err.multipart_suggestion(sugg.as_str(), suggestions, Applicability::MaybeIncorrect);
|
||||
err.multipart_suggestion(sugg, suggestions, Applicability::MaybeIncorrect);
|
||||
|
||||
true
|
||||
}
|
||||
|
@ -77,7 +77,7 @@ fn err_if_attr_found(ctxt: &EntryContext<'_>, attrs: &[Attribute], sym: Symbol)
|
||||
.sess
|
||||
.struct_span_err(
|
||||
attr.span,
|
||||
&format!("`{}` attribute can only be used on functions", sym.as_str()),
|
||||
&format!("`{}` attribute can only be used on functions", sym),
|
||||
)
|
||||
.emit();
|
||||
}
|
||||
|
@ -1627,7 +1627,7 @@ pub(crate) fn add_typo_suggestion(
|
||||
"{}{} `{}` defined here",
|
||||
prefix,
|
||||
suggestion.res.descr(),
|
||||
suggestion.candidate.as_str(),
|
||||
suggestion.candidate,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
@ -83,7 +83,7 @@ pub(crate) fn descr(&self) -> &'static str {
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn suggestion(&self, sugg: &str) -> String {
|
||||
pub(crate) fn suggestion(&self, sugg: impl std::fmt::Display) -> String {
|
||||
match self {
|
||||
Self::BoundEmpty | Self::TypeEmpty => format!("for<{}> ", sugg),
|
||||
Self::ClosureEmpty => format!("for<{}>", sugg),
|
||||
@ -2313,8 +2313,8 @@ pub(crate) fn add_missing_lifetime_specifiers_label(
|
||||
|
||||
let suggest_existing =
|
||||
|err: &mut Diagnostic,
|
||||
name: &str,
|
||||
formatters: Vec<Option<Box<dyn Fn(&str) -> String>>>| {
|
||||
name: Symbol,
|
||||
formatters: Vec<Option<Box<dyn Fn(Symbol) -> String>>>| {
|
||||
if let Some(MissingLifetimeSpot::HigherRanked { span: for_span, span_type }) =
|
||||
self.missing_named_lifetime_spots.iter().rev().next()
|
||||
{
|
||||
@ -2334,7 +2334,8 @@ pub(crate) fn add_missing_lifetime_specifiers_label(
|
||||
// If all single char lifetime names are present, we wrap around and double the chars.
|
||||
let lt_name = (1..)
|
||||
.flat_map(a_to_z_repeat_n)
|
||||
.find(|lt| !lifetime_names.contains(&Symbol::intern(<)))
|
||||
.map(|lt| Symbol::intern(<))
|
||||
.find(|lt| !lifetime_names.contains(lt))
|
||||
.unwrap();
|
||||
let msg = format!(
|
||||
"consider making the {} lifetime-generic with a new `{}` lifetime",
|
||||
@ -2361,7 +2362,7 @@ pub(crate) fn add_missing_lifetime_specifiers_label(
|
||||
introduce_suggestion.push((*for_span, for_sugg));
|
||||
for ((span, _), formatter) in spans_with_counts.iter().zip(formatters.iter()) {
|
||||
if let Some(formatter) = formatter {
|
||||
introduce_suggestion.push((*span, formatter(<_name)));
|
||||
introduce_suggestion.push((*span, formatter(lt_name)));
|
||||
}
|
||||
}
|
||||
err.multipart_suggestion_verbose(
|
||||
@ -2584,7 +2585,7 @@ fn span_underscore_borrow(&self) -> Span {
|
||||
let lifetime_names: Vec<_> = lifetime_names.iter().collect();
|
||||
match &lifetime_names[..] {
|
||||
[name] => {
|
||||
let mut suggs: Vec<Option<Box<dyn Fn(&str) -> String>>> = Vec::new();
|
||||
let mut suggs: Vec<Option<Box<dyn Fn(Symbol) -> String>>> = Vec::new();
|
||||
for (snippet, (_, count)) in snippets.iter().zip(spans_with_counts.iter().copied())
|
||||
{
|
||||
suggs.push(match snippet.as_deref() {
|
||||
@ -2592,7 +2593,11 @@ fn span_underscore_borrow(&self) -> Span {
|
||||
Some("'_") => Some(Box::new(|n| n.to_string())),
|
||||
Some("") => Some(Box::new(move |n| format!("{}, ", n).repeat(count))),
|
||||
Some("<") => Some(Box::new(move |n| {
|
||||
std::iter::repeat(n).take(count).collect::<Vec<_>>().join(", ")
|
||||
std::iter::repeat(n)
|
||||
.take(count)
|
||||
.map(|n| n.to_string())
|
||||
.collect::<Vec<_>>()
|
||||
.join(", ")
|
||||
})),
|
||||
Some(snippet) if !snippet.ends_with('>') => Some(Box::new(move |name| {
|
||||
format!(
|
||||
@ -2607,7 +2612,7 @@ fn span_underscore_borrow(&self) -> Span {
|
||||
_ => None,
|
||||
});
|
||||
}
|
||||
suggest_existing(err, name.as_str(), suggs);
|
||||
suggest_existing(err, **name, suggs);
|
||||
}
|
||||
[] => {
|
||||
let mut suggs = Vec::new();
|
||||
|
@ -325,7 +325,7 @@ fn check_unused_macros(&mut self) {
|
||||
UNUSED_MACROS,
|
||||
node_id,
|
||||
ident.span,
|
||||
&format!("unused macro definition: `{}`", ident.as_str()),
|
||||
&format!("unused macro definition: `{}`", ident.name),
|
||||
);
|
||||
}
|
||||
for (&(def_id, arm_i), &(ident, rule_span)) in self.unused_macro_rules.iter() {
|
||||
@ -341,7 +341,7 @@ fn check_unused_macros(&mut self) {
|
||||
&format!(
|
||||
"{} rule of macro `{}` is never used",
|
||||
crate::diagnostics::ordinalize(arm_i + 1),
|
||||
ident.as_str()
|
||||
ident.name
|
||||
),
|
||||
);
|
||||
}
|
||||
|
@ -257,6 +257,7 @@
|
||||
Result,
|
||||
Return,
|
||||
Right,
|
||||
Rust,
|
||||
RustcDecodable,
|
||||
RustcEncodable,
|
||||
Send,
|
||||
|
@ -474,7 +474,7 @@ fn report_selection_error(
|
||||
if let Some(ref s) = label {
|
||||
// If it has a custom `#[rustc_on_unimplemented]`
|
||||
// error message, let's display it as the label!
|
||||
err.span_label(span, s.as_str());
|
||||
err.span_label(span, s);
|
||||
if !matches!(trait_ref.skip_binder().self_ty().kind(), ty::Param(_)) {
|
||||
// When the self type is a type param We don't need to "the trait
|
||||
// `std::marker::Sized` is not implemented for `T`" as we will point
|
||||
@ -531,7 +531,7 @@ fn report_selection_error(
|
||||
let enclosing_scope_span =
|
||||
tcx.hir().span_with_body(tcx.hir().local_def_id_to_hir_id(body));
|
||||
|
||||
err.span_label(enclosing_scope_span, s.as_str());
|
||||
err.span_label(enclosing_scope_span, s);
|
||||
}
|
||||
|
||||
self.suggest_floating_point_literal(&obligation, &mut err, &trait_ref);
|
||||
|
@ -259,7 +259,7 @@ pub(super) fn if_fallback_coercion<T>(
|
||||
&cause,
|
||||
&mut |err| {
|
||||
if let Some((span, msg)) = &ret_reason {
|
||||
err.span_label(*span, msg.as_str());
|
||||
err.span_label(*span, msg);
|
||||
} else if let ExprKind::Block(block, _) = &then_expr.kind
|
||||
&& let Some(expr) = &block.expr
|
||||
{
|
||||
|
@ -408,8 +408,7 @@ fn check_overloaded_binop(
|
||||
false,
|
||||
),
|
||||
};
|
||||
let mut err =
|
||||
struct_span_err!(self.tcx.sess, op.span, E0369, "{}", message.as_str());
|
||||
let mut err = struct_span_err!(self.tcx.sess, op.span, E0369, "{message}");
|
||||
if !lhs_expr.span.eq(&rhs_expr.span) {
|
||||
self.add_type_neq_err_label(
|
||||
&mut err,
|
||||
|
Loading…
Reference in New Issue
Block a user