mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-10-02 22:54:58 +00:00
Minor clippy perf fixes
This commit is contained in:
parent
0d863ccea9
commit
e3ce88f6f2
11 changed files with 22 additions and 21 deletions
|
@ -640,8 +640,7 @@ pub trait HasResolver: Copy {
|
||||||
impl HasResolver for ModuleId {
|
impl HasResolver for ModuleId {
|
||||||
fn resolver(self, db: &dyn DefDatabase) -> Resolver {
|
fn resolver(self, db: &dyn DefDatabase) -> Resolver {
|
||||||
let mut def_map = self.def_map(db);
|
let mut def_map = self.def_map(db);
|
||||||
let mut modules = Vec::new();
|
let mut modules = vec![(def_map.clone(), self.local_id)];
|
||||||
modules.push((def_map.clone(), self.local_id));
|
|
||||||
while let Some(parent) = def_map.parent() {
|
while let Some(parent) = def_map.parent() {
|
||||||
def_map = parent.def_map(db);
|
def_map = parent.def_map(db);
|
||||||
modules.push((def_map.clone(), parent.local_id));
|
modules.push((def_map.clone(), parent.local_id));
|
||||||
|
|
|
@ -202,7 +202,7 @@ fn assert_expand(
|
||||||
|
|
||||||
let arg_tts = args.into_iter().flat_map(|arg| {
|
let arg_tts = args.into_iter().flat_map(|arg| {
|
||||||
quote! { &(#arg), }
|
quote! { &(#arg), }
|
||||||
}.token_trees).collect::<Vec<_>>();
|
}.token_trees);
|
||||||
|
|
||||||
let expanded = quote! {
|
let expanded = quote! {
|
||||||
{ { (##arg_tts); } }
|
{ { (##arg_tts); } }
|
||||||
|
@ -254,7 +254,7 @@ fn format_args_expand(
|
||||||
let _format_string = args.remove(0);
|
let _format_string = args.remove(0);
|
||||||
let arg_tts = args.into_iter().flat_map(|arg| {
|
let arg_tts = args.into_iter().flat_map(|arg| {
|
||||||
quote! { std::fmt::ArgumentV1::new(&(#arg), std::fmt::Display::fmt), }
|
quote! { std::fmt::ArgumentV1::new(&(#arg), std::fmt::Display::fmt), }
|
||||||
}.token_trees).collect::<Vec<_>>();
|
}.token_trees);
|
||||||
let expanded = quote! {
|
let expanded = quote! {
|
||||||
std::fmt::Arguments::new_v1(&[], &[##arg_tts])
|
std::fmt::Arguments::new_v1(&[], &[##arg_tts])
|
||||||
};
|
};
|
||||||
|
|
|
@ -56,7 +56,7 @@ impl BodyValidationDiagnostic {
|
||||||
pub fn collect(db: &dyn HirDatabase, owner: DefWithBodyId) -> Vec<BodyValidationDiagnostic> {
|
pub fn collect(db: &dyn HirDatabase, owner: DefWithBodyId) -> Vec<BodyValidationDiagnostic> {
|
||||||
let _p = profile::span("BodyValidationDiagnostic::collect");
|
let _p = profile::span("BodyValidationDiagnostic::collect");
|
||||||
let infer = db.infer(owner);
|
let infer = db.infer(owner);
|
||||||
let mut validator = ExprValidator::new(owner, infer.clone());
|
let mut validator = ExprValidator::new(owner, infer);
|
||||||
validator.validate_body(db);
|
validator.validate_body(db);
|
||||||
validator.diagnostics
|
validator.diagnostics
|
||||||
}
|
}
|
||||||
|
|
|
@ -367,7 +367,7 @@ impl<'a> InferenceContext<'a> {
|
||||||
Expr::Path(p) => {
|
Expr::Path(p) => {
|
||||||
// FIXME this could be more efficient...
|
// FIXME this could be more efficient...
|
||||||
let resolver = resolver_for_expr(self.db.upcast(), self.owner, tgt_expr);
|
let resolver = resolver_for_expr(self.db.upcast(), self.owner, tgt_expr);
|
||||||
self.infer_path(&resolver, p, tgt_expr.into()).unwrap_or(self.err_ty())
|
self.infer_path(&resolver, p, tgt_expr.into()).unwrap_or_else(|| self.err_ty())
|
||||||
}
|
}
|
||||||
Expr::Continue { .. } => TyKind::Never.intern(&Interner),
|
Expr::Continue { .. } => TyKind::Never.intern(&Interner),
|
||||||
Expr::Break { expr, label } => {
|
Expr::Break { expr, label } => {
|
||||||
|
@ -511,7 +511,7 @@ impl<'a> InferenceContext<'a> {
|
||||||
_ => None,
|
_ => None,
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.unwrap_or(self.err_ty());
|
.unwrap_or_else(|| self.err_ty());
|
||||||
let ty = self.insert_type_vars(ty);
|
let ty = self.insert_type_vars(ty);
|
||||||
self.normalize_associated_types_in(ty)
|
self.normalize_associated_types_in(ty)
|
||||||
}
|
}
|
||||||
|
@ -818,8 +818,10 @@ impl<'a> InferenceContext<'a> {
|
||||||
for stmt in statements {
|
for stmt in statements {
|
||||||
match stmt {
|
match stmt {
|
||||||
Statement::Let { pat, type_ref, initializer } => {
|
Statement::Let { pat, type_ref, initializer } => {
|
||||||
let decl_ty =
|
let decl_ty = type_ref
|
||||||
type_ref.as_ref().map(|tr| self.make_ty(tr)).unwrap_or(self.err_ty());
|
.as_ref()
|
||||||
|
.map(|tr| self.make_ty(tr))
|
||||||
|
.unwrap_or_else(|| self.err_ty());
|
||||||
|
|
||||||
// Always use the declared type when specified
|
// Always use the declared type when specified
|
||||||
let mut ty = decl_ty.clone();
|
let mut ty = decl_ty.clone();
|
||||||
|
|
|
@ -192,7 +192,7 @@ impl<'a> InferenceContext<'a> {
|
||||||
Pat::Path(path) => {
|
Pat::Path(path) => {
|
||||||
// FIXME use correct resolver for the surrounding expression
|
// FIXME use correct resolver for the surrounding expression
|
||||||
let resolver = self.resolver.clone();
|
let resolver = self.resolver.clone();
|
||||||
self.infer_path(&resolver, path, pat.into()).unwrap_or(self.err_ty())
|
self.infer_path(&resolver, path, pat.into()).unwrap_or_else(|| self.err_ty())
|
||||||
}
|
}
|
||||||
Pat::Bind { mode, name: _, subpat } => {
|
Pat::Bind { mode, name: _, subpat } => {
|
||||||
let mode = if mode == &BindingAnnotation::Unannotated {
|
let mode = if mode == &BindingAnnotation::Unannotated {
|
||||||
|
|
|
@ -562,7 +562,7 @@ impl<'a> TyLoweringContext<'a> {
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
ty.unwrap_or(TyKind::Error.intern(&Interner))
|
ty.unwrap_or_else(|| TyKind::Error.intern(&Interner))
|
||||||
} else {
|
} else {
|
||||||
TyKind::Error.intern(&Interner)
|
TyKind::Error.intern(&Interner)
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,7 @@ pub(crate) fn goto_type_definition(
|
||||||
let token: SyntaxToken = pick_best(file.syntax().token_at_offset(position.offset))?;
|
let token: SyntaxToken = pick_best(file.syntax().token_at_offset(position.offset))?;
|
||||||
let token: SyntaxToken = sema.descend_into_macros(token);
|
let token: SyntaxToken = sema.descend_into_macros(token);
|
||||||
|
|
||||||
let (ty, node) = sema.token_ancestors_with_macros(token.clone()).find_map(|node| {
|
let (ty, node) = sema.token_ancestors_with_macros(token).find_map(|node| {
|
||||||
let ty = match_ast! {
|
let ty = match_ast! {
|
||||||
match node {
|
match node {
|
||||||
ast::Expr(it) => sema.type_of_expr(&it)?,
|
ast::Expr(it) => sema.type_of_expr(&it)?,
|
||||||
|
|
|
@ -35,14 +35,14 @@ pub(crate) fn remove_dbg(acc: &mut Assists, ctx: &AssistContext) -> Option<()> {
|
||||||
.prev_sibling_or_token()
|
.prev_sibling_or_token()
|
||||||
.and_then(whitespace_start)
|
.and_then(whitespace_start)
|
||||||
.map(|start| TextRange::new(start, macro_call.syntax().text_range().end()))
|
.map(|start| TextRange::new(start, macro_call.syntax().text_range().end()))
|
||||||
.unwrap_or(macro_call.syntax().text_range())
|
.unwrap_or_else(|| macro_call.syntax().text_range())
|
||||||
},
|
},
|
||||||
ast::ExprStmt(it) => {
|
ast::ExprStmt(it) => {
|
||||||
let start = it
|
let start = it
|
||||||
.syntax()
|
.syntax()
|
||||||
.prev_sibling_or_token()
|
.prev_sibling_or_token()
|
||||||
.and_then(whitespace_start)
|
.and_then(whitespace_start)
|
||||||
.unwrap_or(it.syntax().text_range().start());
|
.unwrap_or_else(|| it.syntax().text_range().start());
|
||||||
let end = it.syntax().text_range().end();
|
let end = it.syntax().text_range().end();
|
||||||
|
|
||||||
TextRange::new(start, end)
|
TextRange::new(start, end)
|
||||||
|
|
|
@ -28,23 +28,23 @@ pub fn read_dylib_info(dylib_path: &Path) -> io::Result<RustCInfo> {
|
||||||
|
|
||||||
let ver_str = read_version(dylib_path)?;
|
let ver_str = read_version(dylib_path)?;
|
||||||
let mut items = ver_str.split_whitespace();
|
let mut items = ver_str.split_whitespace();
|
||||||
let tag = items.next().ok_or(err!("version format error"))?;
|
let tag = items.next().ok_or_else(|| err!("version format error"))?;
|
||||||
if tag != "rustc" {
|
if tag != "rustc" {
|
||||||
return Err(err!("version format error (No rustc tag)"));
|
return Err(err!("version format error (No rustc tag)"));
|
||||||
}
|
}
|
||||||
|
|
||||||
let version_part = items.next().ok_or(err!("no version string"))?;
|
let version_part = items.next().ok_or_else(|| err!("no version string"))?;
|
||||||
let mut version_parts = version_part.split('-');
|
let mut version_parts = version_part.split('-');
|
||||||
let version = version_parts.next().ok_or(err!("no version"))?;
|
let version = version_parts.next().ok_or_else(|| err!("no version"))?;
|
||||||
let channel = version_parts.next().unwrap_or_default().to_string();
|
let channel = version_parts.next().unwrap_or_default().to_string();
|
||||||
|
|
||||||
let commit = items.next().ok_or(err!("no commit info"))?;
|
let commit = items.next().ok_or_else(|| err!("no commit info"))?;
|
||||||
// remove (
|
// remove (
|
||||||
if commit.len() == 0 {
|
if commit.len() == 0 {
|
||||||
return Err(err!("commit format error"));
|
return Err(err!("commit format error"));
|
||||||
}
|
}
|
||||||
let commit = commit[1..].to_string();
|
let commit = commit[1..].to_string();
|
||||||
let date = items.next().ok_or(err!("no date info"))?;
|
let date = items.next().ok_or_else(|| err!("no date info"))?;
|
||||||
// remove )
|
// remove )
|
||||||
if date.len() == 0 {
|
if date.len() == 0 {
|
||||||
return Err(err!("date format error"));
|
return Err(err!("date format error"));
|
||||||
|
|
|
@ -187,7 +187,7 @@ impl WorkspaceBuildData {
|
||||||
let mut deserializer = serde_json::Deserializer::from_str(line);
|
let mut deserializer = serde_json::Deserializer::from_str(line);
|
||||||
deserializer.disable_recursion_limit();
|
deserializer.disable_recursion_limit();
|
||||||
let message = Message::deserialize(&mut deserializer)
|
let message = Message::deserialize(&mut deserializer)
|
||||||
.unwrap_or(Message::TextLine(line.to_string()));
|
.unwrap_or_else(|_| Message::TextLine(line.to_string()));
|
||||||
|
|
||||||
match message {
|
match message {
|
||||||
Message::BuildScriptExecuted(BuildScript {
|
Message::BuildScriptExecuted(BuildScript {
|
||||||
|
|
|
@ -131,7 +131,7 @@ impl Fixture {
|
||||||
res.push(meta)
|
res.push(meta)
|
||||||
} else {
|
} else {
|
||||||
if line.starts_with("// ")
|
if line.starts_with("// ")
|
||||||
&& line.contains(":")
|
&& line.contains(':')
|
||||||
&& !line.contains("::")
|
&& !line.contains("::")
|
||||||
&& line.chars().all(|it| !it.is_uppercase())
|
&& line.chars().all(|it| !it.is_uppercase())
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue