From 2bfb65db93e48d8f9e8ecac0b2ea837c081a4db5 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 9 Apr 2020 18:40:43 +0200 Subject: Be consistent about token accesors --- .../src/handlers/inline_local_variable.rs | 2 +- .../ra_assists/src/handlers/introduce_variable.rs | 2 +- crates/ra_hir_def/src/body/lower.rs | 7 +- crates/ra_hir_def/src/data.rs | 6 +- crates/ra_hir_def/src/generics.rs | 2 +- crates/ra_hir_def/src/nameres/raw.rs | 2 +- crates/ra_hir_def/src/type_ref.rs | 4 +- crates/ra_ide/src/completion/completion_context.rs | 5 +- crates/ra_ide/src/references.rs | 2 +- crates/ra_ide/src/typing.rs | 2 +- crates/ra_syntax/src/ast/edit.rs | 4 +- crates/ra_syntax/src/ast/extensions.rs | 104 ++------------------- crates/ra_syntax/src/ast/generated/nodes.rs | 3 + 13 files changed, 33 insertions(+), 112 deletions(-) (limited to 'crates') diff --git a/crates/ra_assists/src/handlers/inline_local_variable.rs b/crates/ra_assists/src/handlers/inline_local_variable.rs index 3bfcba8ff..b9eb09676 100644 --- a/crates/ra_assists/src/handlers/inline_local_variable.rs +++ b/crates/ra_assists/src/handlers/inline_local_variable.rs @@ -29,7 +29,7 @@ pub(crate) fn inline_local_variable(ctx: AssistCtx) -> Option { ast::Pat::BindPat(pat) => pat, _ => return None, }; - if bind_pat.is_mutable() { + if bind_pat.mut_kw_token().is_some() { tested_by!(test_not_inline_mut_variable); return None; } diff --git a/crates/ra_assists/src/handlers/introduce_variable.rs b/crates/ra_assists/src/handlers/introduce_variable.rs index 8a02f1a32..ab6bdf6bb 100644 --- a/crates/ra_assists/src/handlers/introduce_variable.rs +++ b/crates/ra_assists/src/handlers/introduce_variable.rs @@ -61,7 +61,7 @@ pub(crate) fn introduce_variable(ctx: AssistCtx) -> Option { }; if is_full_stmt { tested_by!(test_introduce_var_expr_stmt); - if !full_stmt.unwrap().has_semi() { + if full_stmt.unwrap().semi_token().is_none() { buf.push_str(";"); } edit.replace(expr.syntax().text_range(), buf); diff --git a/crates/ra_hir_def/src/body/lower.rs b/crates/ra_hir_def/src/body/lower.rs index b02de5d67..c4a5ec59c 100644 --- a/crates/ra_hir_def/src/body/lower.rs +++ b/crates/ra_hir_def/src/body/lower.rs @@ -572,7 +572,10 @@ impl ExprCollector<'_> { let pattern = match &pat { ast::Pat::BindPat(bp) => { let name = bp.name().map(|nr| nr.as_name()).unwrap_or_else(Name::missing); - let annotation = BindingAnnotation::new(bp.is_mutable(), bp.is_ref()); + let annotation = BindingAnnotation::new( + bp.mut_kw_token().is_some(), + bp.ref_kw_token().is_some(), + ); let subpat = bp.pat().map(|subpat| self.collect_pat(subpat)); if annotation == BindingAnnotation::Unannotated && subpat.is_none() { // This could also be a single-segment path pattern. To @@ -613,7 +616,7 @@ impl ExprCollector<'_> { } ast::Pat::RefPat(p) => { let pat = self.collect_pat_opt(p.pat()); - let mutability = Mutability::from_mutable(p.is_mut()); + let mutability = Mutability::from_mutable(p.mut_kw_token().is_some()); Pat::Ref { pat, mutability } } ast::Pat::PathPat(p) => { diff --git a/crates/ra_hir_def/src/data.rs b/crates/ra_hir_def/src/data.rs index 606ec48b0..689bb6c5c 100644 --- a/crates/ra_hir_def/src/data.rs +++ b/crates/ra_hir_def/src/data.rs @@ -75,7 +75,7 @@ impl FunctionData { TypeRef::unit() }; - let ret_type = if src.value.is_async() { + let ret_type = if src.value.async_kw_token().is_some() { let future_impl = desugar_future_path(ret_type); let ty_bound = TypeBound::Path(future_impl); TypeRef::ImplTrait(vec![ty_bound]) @@ -136,7 +136,7 @@ impl TraitData { pub(crate) fn trait_data_query(db: &dyn DefDatabase, tr: TraitId) -> Arc { let src = tr.lookup(db).source(db); let name = src.value.name().map_or_else(Name::missing, |n| n.as_name()); - let auto = src.value.is_auto(); + let auto = src.value.auto_kw_token().is_some(); let ast_id_map = db.ast_id_map(src.file_id); let container = AssocContainerId::TraitId(tr); @@ -213,7 +213,7 @@ impl ImplData { let target_trait = src.value.target_trait().map(TypeRef::from_ast); let target_type = TypeRef::from_ast_opt(src.value.target_type()); - let is_negative = src.value.is_negative(); + let is_negative = src.value.excl_token().is_some(); let module_id = impl_loc.container.module(db); let mut items = Vec::new(); diff --git a/crates/ra_hir_def/src/generics.rs b/crates/ra_hir_def/src/generics.rs index b687ce2b2..d850244c4 100644 --- a/crates/ra_hir_def/src/generics.rs +++ b/crates/ra_hir_def/src/generics.rs @@ -194,7 +194,7 @@ impl GenericParams { } fn add_where_predicate_from_bound(&mut self, bound: ast::TypeBound, type_ref: TypeRef) { - if bound.has_question_mark() { + if bound.question_token().is_some() { // FIXME: remove this bound return; } diff --git a/crates/ra_hir_def/src/nameres/raw.rs b/crates/ra_hir_def/src/nameres/raw.rs index a9dff3a5d..e72ba52cf 100644 --- a/crates/ra_hir_def/src/nameres/raw.rs +++ b/crates/ra_hir_def/src/nameres/raw.rs @@ -287,7 +287,7 @@ impl RawItemsCollector { let visibility = RawVisibility::from_ast_with_hygiene(module.visibility(), &self.hygiene); let ast_id = self.source_ast_id_map.ast_id(&module); - if module.has_semi() { + if module.semi_token().is_some() { let item = self.raw_items.modules.alloc(ModuleData::Declaration { name, visibility, ast_id }); self.push_item(current_module, attrs, RawItemKind::Module(item)); diff --git a/crates/ra_hir_def/src/type_ref.rs b/crates/ra_hir_def/src/type_ref.rs index 01cc392db..7a8338937 100644 --- a/crates/ra_hir_def/src/type_ref.rs +++ b/crates/ra_hir_def/src/type_ref.rs @@ -77,7 +77,7 @@ impl TypeRef { } ast::TypeRef::PointerType(inner) => { let inner_ty = TypeRef::from_ast_opt(inner.type_ref()); - let mutability = Mutability::from_mutable(inner.is_mut()); + let mutability = Mutability::from_mutable(inner.mut_kw_token().is_some()); TypeRef::RawPtr(Box::new(inner_ty), mutability) } ast::TypeRef::ArrayType(inner) => { @@ -88,7 +88,7 @@ impl TypeRef { } ast::TypeRef::ReferenceType(inner) => { let inner_ty = TypeRef::from_ast_opt(inner.type_ref()); - let mutability = Mutability::from_mutable(inner.is_mut()); + let mutability = Mutability::from_mutable(inner.mut_kw_token().is_some()); TypeRef::Reference(Box::new(inner_ty), mutability) } ast::TypeRef::PlaceholderType(_inner) => TypeRef::Placeholder, diff --git a/crates/ra_ide/src/completion/completion_context.rs b/crates/ra_ide/src/completion/completion_context.rs index f833d2a9a..0e34d85db 100644 --- a/crates/ra_ide/src/completion/completion_context.rs +++ b/crates/ra_ide/src/completion/completion_context.rs @@ -190,7 +190,10 @@ impl<'a> CompletionContext<'a> { if let Some(name) = find_node_at_offset::(&file_with_fake_ident, offset) { if let Some(bind_pat) = name.syntax().ancestors().find_map(ast::BindPat::cast) { self.is_pat_binding_or_const = true; - if bind_pat.has_at() || bind_pat.is_ref() || bind_pat.is_mutable() { + if bind_pat.at_token().is_some() + || bind_pat.ref_kw_token().is_some() + || bind_pat.mut_kw_token().is_some() + { self.is_pat_binding_or_const = false; } if bind_pat.syntax().parent().and_then(ast::RecordFieldPatList::cast).is_some() { diff --git a/crates/ra_ide/src/references.rs b/crates/ra_ide/src/references.rs index 746cc86ba..ad6fd50aa 100644 --- a/crates/ra_ide/src/references.rs +++ b/crates/ra_ide/src/references.rs @@ -152,7 +152,7 @@ fn decl_access(def: &Definition, syntax: &SyntaxNode, range: TextRange) -> Optio if stmt.initializer().is_some() { let pat = stmt.pat()?; if let ast::Pat::BindPat(it) = pat { - if it.is_mutable() { + if it.mut_kw_token().is_some() { return Some(ReferenceAccess::Write); } } diff --git a/crates/ra_ide/src/typing.rs b/crates/ra_ide/src/typing.rs index cb2cd2479..71d2bcb04 100644 --- a/crates/ra_ide/src/typing.rs +++ b/crates/ra_ide/src/typing.rs @@ -63,7 +63,7 @@ fn on_char_typed_inner( fn on_eq_typed(file: &SourceFile, offset: TextUnit) -> Option { assert_eq!(file.syntax().text().char_at(offset), Some('=')); let let_stmt: ast::LetStmt = find_node_at_offset(file.syntax(), offset)?; - if let_stmt.has_semi() { + if let_stmt.semi_token().is_some() { return None; } if let Some(expr) = let_stmt.initializer() { diff --git a/crates/ra_syntax/src/ast/edit.rs b/crates/ra_syntax/src/ast/edit.rs index 62153f199..069c6ee82 100644 --- a/crates/ra_syntax/src/ast/edit.rs +++ b/crates/ra_syntax/src/ast/edit.rs @@ -33,9 +33,9 @@ impl ast::FnDef { let mut to_insert: ArrayVec<[SyntaxElement; 2]> = ArrayVec::new(); let old_body_or_semi: SyntaxElement = if let Some(old_body) = self.body() { old_body.syntax().clone().into() - } else if let Some(semi) = self.semicolon_token() { + } else if let Some(semi) = self.semi_token() { to_insert.push(make::tokens::single_space().into()); - semi.into() + semi.syntax.clone().into() } else { to_insert.push(make::tokens::single_space().into()); to_insert.push(body.syntax().clone().into()); diff --git a/crates/ra_syntax/src/ast/extensions.rs b/crates/ra_syntax/src/ast/extensions.rs index ff3525c84..b50a89864 100644 --- a/crates/ra_syntax/src/ast/extensions.rs +++ b/crates/ra_syntax/src/ast/extensions.rs @@ -136,12 +136,6 @@ impl ast::Path { } } -impl ast::Module { - pub fn has_semi(&self) -> bool { - self.semi_token().is_some() - } -} - impl ast::UseTreeList { pub fn parent_use_tree(&self) -> ast::UseTree { self.syntax() @@ -172,10 +166,6 @@ impl ast::ImplDef { let second = types.next(); (first, second) } - - pub fn is_negative(&self) -> bool { - self.excl_token().is_some() - } } #[derive(Debug, Clone, PartialEq, Eq)] @@ -216,31 +206,6 @@ impl ast::EnumVariant { } } -impl ast::FnDef { - pub fn semicolon_token(&self) -> Option { - Some(self.semi_token()?.syntax().clone()) - } - - pub fn is_async(&self) -> bool { - self.async_kw_token().is_some() - } -} - -impl ast::LetStmt { - pub fn has_semi(&self) -> bool { - match self.syntax().last_child_or_token() { - None => false, - Some(node) => node.kind() == T![;], - } - } -} - -impl ast::ExprStmt { - pub fn has_semi(&self) -> bool { - self.semi_token().is_some() - } -} - #[derive(Debug, Clone, PartialEq, Eq)] pub enum FieldKind { Name(ast::NameRef), @@ -269,25 +234,6 @@ impl ast::FieldExpr { } } -impl ast::RefPat { - pub fn is_mut(&self) -> bool { - self.syntax().children_with_tokens().any(|n| n.kind() == T![mut]) - } -} - -impl ast::BindPat { - pub fn is_mutable(&self) -> bool { - self.syntax().children_with_tokens().any(|n| n.kind() == T![mut]) - } - - pub fn is_ref(&self) -> bool { - self.syntax().children_with_tokens().any(|n| n.kind() == T![ref]) - } - pub fn has_at(&self) -> bool { - self.syntax().children_with_tokens().any(|it| it.kind() == T![@]) - } -} - pub struct SlicePatComponents { pub prefix: Vec, pub slice: Option, @@ -322,18 +268,6 @@ impl ast::SlicePat { } } -impl ast::PointerType { - pub fn is_mut(&self) -> bool { - self.syntax().children_with_tokens().any(|n| n.kind() == T![mut]) - } -} - -impl ast::ReferenceType { - pub fn is_mut(&self) -> bool { - self.syntax().children_with_tokens().any(|n| n.kind() == T![mut]) - } -} - #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)] pub enum SelfParamKind { /// self @@ -347,7 +281,7 @@ pub enum SelfParamKind { impl ast::SelfParam { pub fn kind(&self) -> SelfParamKind { if self.amp_token().is_some() { - if self.amp_mut_kw().is_some() { + if self.amp_mut_kw_token().is_some() { SelfParamKind::MutRef } else { SelfParamKind::Ref @@ -358,7 +292,7 @@ impl ast::SelfParam { } /// the "mut" in "mut self", not the one in "&mut self" - pub fn mut_kw(&self) -> Option { + pub fn mut_kw_token(&self) -> Option { self.syntax() .children_with_tokens() .filter_map(|it| it.into_token()) @@ -367,7 +301,7 @@ impl ast::SelfParam { } /// the "mut" in "&mut self", not the one in "mut self" - pub fn amp_mut_kw(&self) -> Option { + pub fn amp_mut_kw_token(&self) -> Option { self.syntax() .children_with_tokens() .filter_map(|it| it.into_token()) @@ -399,11 +333,7 @@ impl ast::TypeBound { } } - pub fn has_question_mark(&self) -> bool { - self.question().is_some() - } - - pub fn const_question(&self) -> Option { + pub fn const_question_token(&self) -> Option { self.syntax() .children_with_tokens() .filter_map(|it| it.into_token()) @@ -411,7 +341,7 @@ impl ast::TypeBound { .find_map(ast::Question::cast) } - pub fn question(&self) -> Option { + pub fn question_token(&self) -> Option { if self.const_kw_token().is_some() { self.syntax() .children_with_tokens() @@ -424,12 +354,6 @@ impl ast::TypeBound { } } -impl ast::TraitDef { - pub fn is_auto(&self) -> bool { - self.syntax().children_with_tokens().any(|t| t.kind() == T![auto]) - } -} - pub enum VisibilityKind { In(ast::Path), PubCrate, @@ -442,28 +366,16 @@ impl ast::Visibility { pub fn kind(&self) -> VisibilityKind { if let Some(path) = children(self).next() { VisibilityKind::In(path) - } else if self.is_pub_crate() { + } else if self.crate_kw_token().is_some() { VisibilityKind::PubCrate - } else if self.is_pub_super() { + } else if self.super_kw_token().is_some() { VisibilityKind::PubSuper - } else if self.is_pub_self() { + } else if self.self_kw_token().is_some() { VisibilityKind::PubSuper } else { VisibilityKind::Pub } } - - fn is_pub_crate(&self) -> bool { - self.syntax().children_with_tokens().any(|it| it.kind() == T![crate]) - } - - fn is_pub_super(&self) -> bool { - self.syntax().children_with_tokens().any(|it| it.kind() == T![super]) - } - - fn is_pub_self(&self) -> bool { - self.syntax().children_with_tokens().any(|it| it.kind() == T![self]) - } } impl ast::MacroCall { diff --git a/crates/ra_syntax/src/ast/generated/nodes.rs b/crates/ra_syntax/src/ast/generated/nodes.rs index 0bcb7fe61..bcbfd1129 100644 --- a/crates/ra_syntax/src/ast/generated/nodes.rs +++ b/crates/ra_syntax/src/ast/generated/nodes.rs @@ -555,6 +555,7 @@ impl AstNode for PointerType { impl PointerType { pub fn star_token(&self) -> Option { support::token(&self.syntax) } pub fn const_kw_token(&self) -> Option { support::token(&self.syntax) } + pub fn mut_kw_token(&self) -> Option { support::token(&self.syntax) } pub fn type_ref(&self) -> Option { support::child(&self.syntax) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] @@ -1532,6 +1533,7 @@ impl ast::NameOwner for BindPat {} impl BindPat { pub fn ref_kw_token(&self) -> Option { support::token(&self.syntax) } pub fn mut_kw_token(&self) -> Option { support::token(&self.syntax) } + pub fn at_token(&self) -> Option { support::token(&self.syntax) } pub fn pat(&self) -> Option { support::child(&self.syntax) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] @@ -2114,6 +2116,7 @@ impl LetStmt { pub fn pat(&self) -> Option { support::child(&self.syntax) } pub fn eq_token(&self) -> Option { support::token(&self.syntax) } pub fn initializer(&self) -> Option { support::child(&self.syntax) } + pub fn semi_token(&self) -> Option { support::token(&self.syntax) } } #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub struct Condition { -- cgit v1.2.3