diff options
| author | bors <bors@rust-lang.org> | 2018-09-09 04:00:21 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2018-09-09 04:00:21 +0000 |
| commit | dac76020a5a33fa723d578043e422455e598620b (patch) | |
| tree | a01edd1737815d8dbf4b27c8c4b818233baa7de4 /src/librustc_resolve | |
| parent | 004bc5a33cd44cd0896cae917a75488579126da5 (diff) | |
| parent | bebecf850ab2a8c9df298bd3ab3b12ca8ea83c41 (diff) | |
| download | rust-dac76020a5a33fa723d578043e422455e598620b.tar.gz rust-dac76020a5a33fa723d578043e422455e598620b.zip | |
Auto merge of #53960 - estebank:issue-51303, r=nagisa
Fix incorrect outer function type parameter message Fix #51303.
Diffstat (limited to 'src/librustc_resolve')
| -rw-r--r-- | src/librustc_resolve/lib.rs | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/src/librustc_resolve/lib.rs b/src/librustc_resolve/lib.rs index 65fe01ff96a..453e7421ff1 100644 --- a/src/librustc_resolve/lib.rs +++ b/src/librustc_resolve/lib.rs @@ -198,12 +198,25 @@ fn resolve_struct_error<'sess, 'a>(resolver: &'sess Resolver, let cm = resolver.session.source_map(); match outer_def { - Def::SelfTy(_, maybe_impl_defid) => { - if let Some(impl_span) = maybe_impl_defid.map_or(None, - |def_id| resolver.definitions.opt_span(def_id)) { - err.span_label(reduce_impl_span_to_impl_keyword(cm, impl_span), - "`Self` type implicitly declared here, on the `impl`"); + Def::SelfTy(maybe_trait_defid, maybe_impl_defid) => { + if let Some(impl_span) = maybe_impl_defid.and_then(|def_id| { + resolver.definitions.opt_span(def_id) + }) { + err.span_label( + reduce_impl_span_to_impl_keyword(cm, impl_span), + "`Self` type implicitly declared here, by this `impl`", + ); + } + match (maybe_trait_defid, maybe_impl_defid) { + (Some(_), None) => { + err.span_label(span, "can't use `Self` here"); + } + (_, Some(_)) => { + err.span_label(span, "use a type here instead"); + } + (None, None) => bug!("`impl` without trait nor type?"), } + return err; }, Def::TyParam(typaram_defid) => { if let Some(typaram_span) = resolver.definitions.opt_span(typaram_defid) { |
