From ef67581104eb00a0c199f0b2a3b558da8a6f90a2 Mon Sep 17 00:00:00 2001 From: Florian Diebold Date: Sun, 23 Dec 2018 17:13:11 +0100 Subject: Resolve paths to defs (functions currently) during type inference --- crates/ra_hir/src/lib.rs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'crates/ra_hir/src/lib.rs') diff --git a/crates/ra_hir/src/lib.rs b/crates/ra_hir/src/lib.rs index e84f44675..a0d99a84d 100644 --- a/crates/ra_hir/src/lib.rs +++ b/crates/ra_hir/src/lib.rs @@ -29,7 +29,7 @@ mod ty; use std::ops::Index; -use ra_syntax::{SyntaxNodeRef, SyntaxNode}; +use ra_syntax::{SyntaxNodeRef, SyntaxNode, SyntaxKind}; use ra_db::{LocationIntener, SourceRootId, FileId, Cancelable}; use crate::{ @@ -67,6 +67,23 @@ pub struct DefLoc { source_item_id: SourceItemId, } +impl DefKind { + pub(crate) fn for_syntax_kind(kind: SyntaxKind) -> Option { + match kind { + SyntaxKind::FN_DEF => Some(DefKind::Function), + SyntaxKind::MODULE => Some(DefKind::Module), + // These define items, but don't have their own DefKinds yet: + SyntaxKind::STRUCT_DEF => Some(DefKind::Item), + SyntaxKind::ENUM_DEF => Some(DefKind::Item), + SyntaxKind::TRAIT_DEF => Some(DefKind::Item), + SyntaxKind::TYPE_DEF => Some(DefKind::Item), + SyntaxKind::CONST_DEF => Some(DefKind::Item), + SyntaxKind::STATIC_DEF => Some(DefKind::Item), + _ => None, + } + } +} + impl DefId { pub(crate) fn loc(self, db: &impl AsRef>) -> DefLoc { db.as_ref().id2loc(self) -- cgit v1.2.3