diff options
| author | Kevyn Grasso <kevgrasso@gmail.com> | 2018-11-12 15:50:27 -0500 |
|---|---|---|
| committer | Kevyn Grasso <kevgrasso@gmail.com> | 2018-12-13 20:16:03 -0500 |
| commit | 9de6beeae28841d7a8b6bc06d6b66a30c723939d (patch) | |
| tree | e8b3eda32b8e2dc2ea07edc119ff4fc1ed321c63 /src/librustc_resolve | |
| parent | 286dc37d1bd30ecd419e889c7f3888575deac5fc (diff) | |
| download | rust-9de6beeae28841d7a8b6bc06d6b66a30c723939d.tar.gz rust-9de6beeae28841d7a8b6bc06d6b66a30c723939d.zip | |
debug logging, added conditional error message, tests updated
Diffstat (limited to 'src/librustc_resolve')
| -rw-r--r-- | src/librustc_resolve/lib.rs | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/src/librustc_resolve/lib.rs b/src/librustc_resolve/lib.rs index ebd2c87fa46..e449fece6b4 100644 --- a/src/librustc_resolve/lib.rs +++ b/src/librustc_resolve/lib.rs @@ -3010,6 +3010,7 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> { // Visit all direct subpatterns of this pattern. let outer_pat_id = pat.id; pat.walk(&mut |pat| { + debug!("resolve_pattern pat={:?} node={:?}", pat, pat.node); match pat.node { PatKind::Ident(bmode, ident, ref opt_pat) => { // First try to resolve the identifier as some existing @@ -3166,6 +3167,7 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> { format!("not found in {}", mod_str), item_span) }; + let code = DiagnosticId::Error(code.into()); let mut err = this.session.struct_span_err_with_code(base_span, &base_msg, code); @@ -3189,11 +3191,22 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> { return (err, Vec::new()); } if is_self_value(path, ns) { + debug!("smart_resolve_path_fragment E0424 source:{:?}", source); + __diagnostic_used!(E0424); err.code(DiagnosticId::Error("E0424".into())); - err.span_label(span, format!("`self` value is a keyword \ - only available in \ - methods with `self` parameter")); + err.span_label(span, match source { + PathSource::Pat => { + format!("`self` value is a keyword \ + and may not be bound to \ + variables or shadowed") + } + _ => { + format!("`self` value is a keyword \ + only available in methods \ + with `self` parameter") + } + }); return (err, Vec::new()); } |
