diff options
| author | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2016-11-20 15:00:04 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-11-20 15:00:04 +0100 |
| commit | e8673ffa75c302365a2646e93327416fe342f2ab (patch) | |
| tree | 53df9390931cb7a76d6b62d093cd8efc2883170e | |
| parent | 224f2cec9cfe1b735b6b1d9a77959aaa7e66af92 (diff) | |
| parent | 92abce2addffb8394406fda764e83e81ebd29d08 (diff) | |
| download | rust-e8673ffa75c302365a2646e93327416fe342f2ab.tar.gz rust-e8673ffa75c302365a2646e93327416fe342f2ab.zip | |
Rollup merge of #37835 - ojsheikh:E0088, r=jonathandturner
Update E0088 to new error format Fixes #35226 which is part of #35233. Is based on #36208 from @yossi-k. r? @jonathandturner
| -rw-r--r-- | src/librustc_typeck/check/mod.rs | 23 | ||||
| -rw-r--r-- | src/test/compile-fail/E0088.rs | 5 |
2 files changed, 17 insertions, 11 deletions
diff --git a/src/librustc_typeck/check/mod.rs b/src/librustc_typeck/check/mod.rs index f08178e49fb..093a023291a 100644 --- a/src/librustc_typeck/check/mod.rs +++ b/src/librustc_typeck/check/mod.rs @@ -4436,19 +4436,20 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> { let lifetime_defs = segment.map_or(&[][..], |(_, generics)| &generics.regions); if lifetimes.len() > lifetime_defs.len() { let span = lifetimes[lifetime_defs.len()].span; - span_err!(self.tcx.sess, span, E0088, - "too many lifetime parameters provided: \ - expected {}, found {}", - count(lifetime_defs.len()), - count(lifetimes.len())); - } else if lifetimes.len() > 0 && lifetimes.len() < lifetime_defs.len() { - span_err!(self.tcx.sess, span, E0090, - "too few lifetime parameters provided: \ - expected {}, found {}", - count(lifetime_defs.len()), - count(lifetimes.len())); + struct_span_err!(self.tcx.sess, span, E0088, + "too many lifetime parameters provided: \ + expected {}, found {}", + count(lifetime_defs.len()), + count(lifetimes.len())) + .span_label(span, &format!("unexpected lifetime parameter{}", + match lifetimes.len() { 1 => "", _ => "s" })) + .emit(); } + // The case where there is not enough lifetime parameters is not checked, + // because this is not possible - a function never takes lifetime parameters. + // See discussion for Pull Request 36208. + // Check provided type parameters. let type_defs = segment.map_or(&[][..], |(_, generics)| { if generics.parent.is_none() { diff --git a/src/test/compile-fail/E0088.rs b/src/test/compile-fail/E0088.rs index 0b235aa240c..9ec09603224 100644 --- a/src/test/compile-fail/E0088.rs +++ b/src/test/compile-fail/E0088.rs @@ -9,7 +9,12 @@ // except according to those terms. fn f() {} +fn g<'a>() {} fn main() { f::<'static>(); //~ ERROR E0088 + //~^ unexpected lifetime parameter + + g::<'static, 'static>(); //~ ERROR E0088 + //~^ unexpected lifetime parameters } |
