aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir_def/src/type_alias.rs
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2019-11-22 09:57:40 +0000
committerAleksey Kladov <[email protected]>2019-11-22 10:13:51 +0000
commit4fc900deb121539a5311059e1ebb83ef73b190df (patch)
tree3dab5ec4164b9af8d9f921648ce495f8cd607986 /crates/ra_hir_def/src/type_alias.rs
parentd59bf33b9e1c20d6ef3fd9b72f3cf4730172b5a8 (diff)
Move TypeAlias to hir_def
Diffstat (limited to 'crates/ra_hir_def/src/type_alias.rs')
-rw-r--r--crates/ra_hir_def/src/type_alias.rs27
1 files changed, 27 insertions, 0 deletions
diff --git a/crates/ra_hir_def/src/type_alias.rs b/crates/ra_hir_def/src/type_alias.rs
new file mode 100644
index 000000000..c0b49aa7c
--- /dev/null
+++ b/crates/ra_hir_def/src/type_alias.rs
@@ -0,0 +1,27 @@
1//! HIR for type aliases (i.e. the `type` keyword).
2
3use std::sync::Arc;
4
5use hir_expand::name::{AsName, Name};
6
7use ra_syntax::ast::NameOwner;
8
9use crate::{db::DefDatabase2, type_ref::TypeRef, HasSource, Lookup, TypeAliasId};
10
11#[derive(Debug, Clone, PartialEq, Eq)]
12pub struct TypeAliasData {
13 pub name: Name,
14 pub type_ref: Option<TypeRef>,
15}
16
17impl TypeAliasData {
18 pub(crate) fn type_alias_data_query(
19 db: &impl DefDatabase2,
20 typ: TypeAliasId,
21 ) -> Arc<TypeAliasData> {
22 let node = typ.lookup(db).source(db).value;
23 let name = node.name().map_or_else(Name::missing, |n| n.as_name());
24 let type_ref = node.type_ref().map(TypeRef::from_ast);
25 Arc::new(TypeAliasData { name, type_ref })
26 }
27}