From 8a6636243091e6c490c8b010a6db21fd63bc6a20 Mon Sep 17 00:00:00 2001 From: Thomas Karpiniec Date: Sat, 23 Sep 2017 16:04:03 +1000 Subject: [PATCH] Diagnostic note when matching tuple enum with struct pattern --- src/librustc_typeck/check/_match.rs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/librustc_typeck/check/_match.rs b/src/librustc_typeck/check/_match.rs index cbf58209d056..d942b2d12307 100644 --- a/src/librustc_typeck/check/_match.rs +++ b/src/librustc_typeck/check/_match.rs @@ -787,11 +787,14 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> { for field in variant.fields .iter() .filter(|field| !used_fields.contains_key(&field.name)) { - struct_span_err!(tcx.sess, span, E0027, - "pattern does not mention field `{}`", - field.name) - .span_label(span, format!("missing field `{}`", field.name)) - .emit(); + let mut diag = struct_span_err!(tcx.sess, span, E0027, + "pattern does not mention field `{}`", + field.name); + diag.span_label(span, format!("missing field `{}`", field.name)); + if variant.ctor_kind == CtorKind::Fn { + diag.note("trying to match a tuple variant with a struct variant pattern"); + } + diag.emit(); } } }