Keep SyntaxNodePtr::range private

This commit is contained in:
Igor Aleksanov 2020-10-08 09:27:38 +03:00
parent 66cea8cbaa
commit fb0ab9f745
4 changed files with 17 additions and 9 deletions

View file

@ -267,7 +267,7 @@ impl fmt::Display for CaseType {
#[derive(Debug)]
pub struct IncorrectCase {
pub file: HirFileId,
pub ident: SyntaxNodePtr,
pub ident: AstPtr<ast::Name>,
pub expected_case: CaseType,
pub ident_type: String,
pub ident_text: String,
@ -290,7 +290,7 @@ impl Diagnostic for IncorrectCase {
}
fn display_source(&self) -> InFile<SyntaxNodePtr> {
InFile::new(self.file, self.ident.clone())
InFile::new(self.file, self.ident.clone().into())
}
fn as_any(&self) -> &(dyn Any + Send + 'static) {

View file

@ -213,12 +213,21 @@ impl<'a, 'b> DeclValidator<'a, 'b> {
for param_to_rename in fn_param_replacements {
// We assume that parameters in replacement are in the same order as in the
// actual params list, but just some of them (ones that named correctly) are skipped.
let ast_ptr = loop {
let ast_ptr: ast::Name = loop {
match fn_params_iter.next() {
Some(element)
if pat_equals_to_name(element.pat(), &param_to_rename.current_name) =>
{
break element.pat().unwrap()
if let ast::Pat::IdentPat(pat) = element.pat().unwrap() {
break pat.name().unwrap();
} else {
// This is critical. If we consider this parameter the expected one,
// it **must** have a name.
panic!(
"Pattern {:?} equals to expected replacement {:?}, but has no name",
element, param_to_rename
);
}
}
Some(_) => {}
None => {