Use NameClass::classify to check for ConstReference
This commit is contained in:
parent
75f0701211
commit
7cff930393
@ -1,12 +1,12 @@
|
|||||||
use std::iter::{self, successors};
|
use std::iter::{self, successors};
|
||||||
|
|
||||||
use either::Either;
|
use either::Either;
|
||||||
use ide_db::{ty_filter::TryEnum, RootDatabase};
|
use ide_db::{defs::NameClass, ty_filter::TryEnum, RootDatabase};
|
||||||
use syntax::{
|
use syntax::{
|
||||||
ast::{
|
ast::{
|
||||||
self,
|
self,
|
||||||
edit::{AstNodeEdit, IndentLevel},
|
edit::{AstNodeEdit, IndentLevel},
|
||||||
make,
|
make, NameOwner,
|
||||||
},
|
},
|
||||||
AstNode,
|
AstNode,
|
||||||
};
|
};
|
||||||
@ -237,7 +237,7 @@ fn pick_pattern_and_expr_order(
|
|||||||
(ast::Pat::WildcardPat(_), _) => return None,
|
(ast::Pat::WildcardPat(_), _) => return None,
|
||||||
(pat, _) if is_empty_expr(&expr2) => (pat, expr, expr2),
|
(pat, _) if is_empty_expr(&expr2) => (pat, expr, expr2),
|
||||||
(_, pat) if is_empty_expr(&expr) => (pat, expr2, expr),
|
(_, pat) if is_empty_expr(&expr) => (pat, expr2, expr),
|
||||||
(pat, pat2) => match (binds_name(&pat), binds_name(&pat2)) {
|
(pat, pat2) => match (binds_name(sema, &pat), binds_name(sema, &pat2)) {
|
||||||
(true, true) => return None,
|
(true, true) => return None,
|
||||||
(true, false) => (pat, expr, expr2),
|
(true, false) => (pat, expr, expr2),
|
||||||
(false, true) => (pat2, expr2, expr),
|
(false, true) => (pat2, expr2, expr),
|
||||||
@ -259,11 +259,14 @@ fn is_empty_expr(expr: &ast::Expr) -> bool {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn binds_name(pat: &ast::Pat) -> bool {
|
fn binds_name(sema: &hir::Semantics<RootDatabase>, pat: &ast::Pat) -> bool {
|
||||||
let binds_name_v = |pat| binds_name(&pat);
|
let binds_name_v = |pat| binds_name(&sema, &pat);
|
||||||
match pat {
|
match pat {
|
||||||
ast::Pat::IdentPat(pat) => {
|
ast::Pat::IdentPat(pat) => {
|
||||||
pat.to_string().starts_with(|c: char| c.is_lowercase() && c != '_')
|
match pat.name().and_then(|name| NameClass::classify(sema, &name)) {
|
||||||
|
Some(NameClass::ConstReference(_)) => false,
|
||||||
|
_ => true,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
ast::Pat::MacroPat(_) => true,
|
ast::Pat::MacroPat(_) => true,
|
||||||
ast::Pat::OrPat(pat) => pat.pats().any(binds_name_v),
|
ast::Pat::OrPat(pat) => pat.pats().any(binds_name_v),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user