mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-27 05:23:24 +00:00
Add static semantic token modifier for associated functions with no &self
refactor logic into code_model.rs address comments
This commit is contained in:
parent
90031a267a
commit
6b950d24d4
2 changed files with 3 additions and 16 deletions
|
@ -41,7 +41,7 @@ use rustc_hash::FxHashSet;
|
|||
use stdx::impl_from;
|
||||
use syntax::{
|
||||
ast::{self, AttrsOwner, NameOwner},
|
||||
AstNode, SmolStr, SyntaxKind,
|
||||
AstNode, SmolStr,
|
||||
};
|
||||
use tt::{Ident, Leaf, Literal, TokenTree};
|
||||
|
||||
|
@ -787,19 +787,6 @@ impl Function {
|
|||
pub fn has_body(self, db: &dyn HirDatabase) -> bool {
|
||||
db.function_data(self.id).has_body
|
||||
}
|
||||
|
||||
/// whether this function is associated with some trait/impl
|
||||
pub fn is_assoc_item(self, db: &dyn HirDatabase) -> bool {
|
||||
let fn_parent_kind = self
|
||||
.source(db)
|
||||
.value
|
||||
.syntax()
|
||||
.parent()
|
||||
.and_then(|s| s.parent())
|
||||
.and_then(|s| Some(s.kind()));
|
||||
|
||||
matches!(fn_parent_kind, Some(SyntaxKind::IMPL) | Some(SyntaxKind::TRAIT))
|
||||
}
|
||||
}
|
||||
|
||||
// Note: logically, this belongs to `hir_ty`, but we are not using it there yet.
|
||||
|
|
|
@ -6,7 +6,7 @@ pub(crate) mod tags;
|
|||
#[cfg(test)]
|
||||
mod tests;
|
||||
|
||||
use hir::{Local, Name, Semantics, VariantDef};
|
||||
use hir::{AsAssocItem, Local, Name, Semantics, VariantDef};
|
||||
use ide_db::{
|
||||
defs::{Definition, NameClass, NameRefClass},
|
||||
RootDatabase,
|
||||
|
@ -746,7 +746,7 @@ fn highlight_def(db: &RootDatabase, def: Definition) -> Highlight {
|
|||
if func.is_unsafe(db) {
|
||||
h |= HighlightModifier::Unsafe;
|
||||
}
|
||||
if func.is_assoc_item(db) && func.self_param(db).is_none() {
|
||||
if func.as_assoc_item(db).is_some() && func.self_param(db).is_none() {
|
||||
h |= HighlightModifier::Static;
|
||||
}
|
||||
return h;
|
||||
|
|
Loading…
Reference in a new issue