diff options
author | Igor Aleksanov <[email protected]> | 2020-10-08 07:27:38 +0100 |
---|---|---|
committer | Igor Aleksanov <[email protected]> | 2020-10-12 09:05:00 +0100 |
commit | fb0ab9f7456018ff0bac628e05366f976c5af1a7 (patch) | |
tree | 681abdb0ab856c42a586d8851c9708a7ec6f8b88 /crates/hir_ty/src/diagnostics | |
parent | 66cea8cbaa3320653e760e7b4ce839e055976acf (diff) |
Keep SyntaxNodePtr::range private
Diffstat (limited to 'crates/hir_ty/src/diagnostics')
-rw-r--r-- | crates/hir_ty/src/diagnostics/decl_check.rs | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/crates/hir_ty/src/diagnostics/decl_check.rs b/crates/hir_ty/src/diagnostics/decl_check.rs index 1f9386b75..f987636fe 100644 --- a/crates/hir_ty/src/diagnostics/decl_check.rs +++ b/crates/hir_ty/src/diagnostics/decl_check.rs | |||
@@ -213,12 +213,21 @@ impl<'a, 'b> DeclValidator<'a, 'b> { | |||
213 | for param_to_rename in fn_param_replacements { | 213 | for param_to_rename in fn_param_replacements { |
214 | // We assume that parameters in replacement are in the same order as in the | 214 | // We assume that parameters in replacement are in the same order as in the |
215 | // actual params list, but just some of them (ones that named correctly) are skipped. | 215 | // actual params list, but just some of them (ones that named correctly) are skipped. |
216 | let ast_ptr = loop { | 216 | let ast_ptr: ast::Name = loop { |
217 | match fn_params_iter.next() { | 217 | match fn_params_iter.next() { |
218 | Some(element) | 218 | Some(element) |
219 | if pat_equals_to_name(element.pat(), ¶m_to_rename.current_name) => | 219 | if pat_equals_to_name(element.pat(), ¶m_to_rename.current_name) => |
220 | { | 220 | { |
221 | break element.pat().unwrap() | 221 | if let ast::Pat::IdentPat(pat) = element.pat().unwrap() { |
222 | break pat.name().unwrap(); | ||
223 | } else { | ||
224 | // This is critical. If we consider this parameter the expected one, | ||
225 | // it **must** have a name. | ||
226 | panic!( | ||
227 | "Pattern {:?} equals to expected replacement {:?}, but has no name", | ||
228 | element, param_to_rename | ||
229 | ); | ||
230 | } | ||
222 | } | 231 | } |
223 | Some(_) => {} | 232 | Some(_) => {} |
224 | None => { | 233 | None => { |