mirror of
https://github.com/rust-lang/rust-clippy
synced 2024-11-27 23:20:39 +00:00
inconsistent_struct_constructor
: Check HIR tree first.
This commit is contained in:
parent
3869e93408
commit
b58b491d16
1 changed files with 3 additions and 3 deletions
|
@ -65,13 +65,13 @@ declare_lint_pass!(InconsistentStructConstructor => [INCONSISTENT_STRUCT_CONSTRU
|
||||||
|
|
||||||
impl<'tcx> LateLintPass<'tcx> for InconsistentStructConstructor {
|
impl<'tcx> LateLintPass<'tcx> for InconsistentStructConstructor {
|
||||||
fn check_expr(&mut self, cx: &LateContext<'tcx>, expr: &'tcx hir::Expr<'_>) {
|
fn check_expr(&mut self, cx: &LateContext<'tcx>, expr: &'tcx hir::Expr<'_>) {
|
||||||
if !expr.span.from_expansion()
|
if let ExprKind::Struct(qpath, fields, base) = expr.kind
|
||||||
&& let ExprKind::Struct(qpath, fields, base) = expr.kind
|
&& fields.iter().all(|f| f.is_shorthand)
|
||||||
|
&& !expr.span.from_expansion()
|
||||||
&& let ty = cx.typeck_results().expr_ty(expr)
|
&& let ty = cx.typeck_results().expr_ty(expr)
|
||||||
&& let Some(adt_def) = ty.ty_adt_def()
|
&& let Some(adt_def) = ty.ty_adt_def()
|
||||||
&& adt_def.is_struct()
|
&& adt_def.is_struct()
|
||||||
&& let Some(variant) = adt_def.variants().iter().next()
|
&& let Some(variant) = adt_def.variants().iter().next()
|
||||||
&& fields.iter().all(|f| f.is_shorthand)
|
|
||||||
{
|
{
|
||||||
let mut def_order_map = FxHashMap::default();
|
let mut def_order_map = FxHashMap::default();
|
||||||
for (idx, field) in variant.fields.iter().enumerate() {
|
for (idx, field) in variant.fields.iter().enumerate() {
|
||||||
|
|
Loading…
Reference in a new issue