diff options
Diffstat (limited to 'crates/ide_db')
-rw-r--r-- | crates/ide_db/src/defs.rs | 2 | ||||
-rw-r--r-- | crates/ide_db/src/search.rs | 15 | ||||
-rw-r--r-- | crates/ide_db/src/symbol_index.rs | 8 |
3 files changed, 17 insertions, 8 deletions
diff --git a/crates/ide_db/src/defs.rs b/crates/ide_db/src/defs.rs index 5d2cd30d1..d4a774261 100644 --- a/crates/ide_db/src/defs.rs +++ b/crates/ide_db/src/defs.rs | |||
@@ -217,7 +217,7 @@ impl NameClass { | |||
217 | let def: hir::TypeAlias = sema.to_def(&it)?; | 217 | let def: hir::TypeAlias = sema.to_def(&it)?; |
218 | Some(NameClass::Definition(Definition::ModuleDef(def.into()))) | 218 | Some(NameClass::Definition(Definition::ModuleDef(def.into()))) |
219 | }, | 219 | }, |
220 | ast::MacroCall(it) => { | 220 | ast::MacroRules(it) => { |
221 | let def = sema.to_def(&it)?; | 221 | let def = sema.to_def(&it)?; |
222 | Some(NameClass::Definition(Definition::Macro(def))) | 222 | Some(NameClass::Definition(Definition::Macro(def))) |
223 | }, | 223 | }, |
diff --git a/crates/ide_db/src/search.rs b/crates/ide_db/src/search.rs index 607185ca9..3936c7390 100644 --- a/crates/ide_db/src/search.rs +++ b/crates/ide_db/src/search.rs | |||
@@ -32,6 +32,7 @@ pub enum ReferenceKind { | |||
32 | StructLiteral, | 32 | StructLiteral, |
33 | RecordFieldExprOrPat, | 33 | RecordFieldExprOrPat, |
34 | SelfKw, | 34 | SelfKw, |
35 | EnumLiteral, | ||
35 | Other, | 36 | Other, |
36 | } | 37 | } |
37 | 38 | ||
@@ -284,6 +285,8 @@ impl<'a> FindUsages<'a> { | |||
284 | ReferenceKind::RecordFieldExprOrPat | 285 | ReferenceKind::RecordFieldExprOrPat |
285 | } else if is_record_lit_name_ref(&name_ref) || is_call_expr_name_ref(&name_ref) { | 286 | } else if is_record_lit_name_ref(&name_ref) || is_call_expr_name_ref(&name_ref) { |
286 | ReferenceKind::StructLiteral | 287 | ReferenceKind::StructLiteral |
288 | } else if is_enum_lit_name_ref(&name_ref) { | ||
289 | ReferenceKind::EnumLiteral | ||
287 | } else { | 290 | } else { |
288 | ReferenceKind::Other | 291 | ReferenceKind::Other |
289 | }; | 292 | }; |
@@ -402,3 +405,15 @@ fn is_record_field_expr_or_pat(name_ref: &ast::NameRef) -> bool { | |||
402 | false | 405 | false |
403 | } | 406 | } |
404 | } | 407 | } |
408 | |||
409 | fn is_enum_lit_name_ref(name_ref: &ast::NameRef) -> bool { | ||
410 | name_ref | ||
411 | .syntax() | ||
412 | .ancestors() | ||
413 | .find_map(ast::PathExpr::cast) | ||
414 | .and_then(|p| p.path()) | ||
415 | .and_then(|p| p.qualifier()) | ||
416 | .and_then(|p| p.segment()) | ||
417 | .map(|p| p.name_ref().as_ref() == Some(name_ref)) | ||
418 | .unwrap_or(false) | ||
419 | } | ||
diff --git a/crates/ide_db/src/symbol_index.rs b/crates/ide_db/src/symbol_index.rs index 654df898e..121063aea 100644 --- a/crates/ide_db/src/symbol_index.rs +++ b/crates/ide_db/src/symbol_index.rs | |||
@@ -404,13 +404,7 @@ fn to_symbol(node: &SyntaxNode) -> Option<(SmolStr, SyntaxNodePtr, TextRange)> { | |||
404 | ast::TypeAlias(it) => decl(it), | 404 | ast::TypeAlias(it) => decl(it), |
405 | ast::Const(it) => decl(it), | 405 | ast::Const(it) => decl(it), |
406 | ast::Static(it) => decl(it), | 406 | ast::Static(it) => decl(it), |
407 | ast::MacroCall(it) => { | 407 | ast::MacroRules(it) => decl(it), |
408 | if it.is_macro_rules().is_some() { | ||
409 | decl(it) | ||
410 | } else { | ||
411 | None | ||
412 | } | ||
413 | }, | ||
414 | _ => None, | 408 | _ => None, |
415 | } | 409 | } |
416 | } | 410 | } |