diff options
| author | Thomas Karpiniec <tk@1.21jiggawatts.net> | 2017-09-23 16:04:03 +1000 |
|---|---|---|
| committer | Thomas Karpiniec <tk@1.21jiggawatts.net> | 2017-09-23 16:04:03 +1000 |
| commit | 8a6636243091e6c490c8b010a6db21fd63bc6a20 (patch) | |
| tree | e407c5778482b6fa5d18137f3ef43f2b1dbe1939 | |
| parent | 14039a42ac6365afc842214989613f9a688c9a66 (diff) | |
| download | rust-8a6636243091e6c490c8b010a6db21fd63bc6a20.tar.gz rust-8a6636243091e6c490c8b010a6db21fd63bc6a20.zip | |
Diagnostic note when matching tuple enum with struct pattern
| -rw-r--r-- | src/librustc_typeck/check/_match.rs | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/librustc_typeck/check/_match.rs b/src/librustc_typeck/check/_match.rs index cbf58209d05..d942b2d1230 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(); } } } |
