aboutsummaryrefslogtreecommitdiff
path: root/crates/hir/src/code_model.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/hir/src/code_model.rs')
-rw-r--r--crates/hir/src/code_model.rs20
1 files changed, 18 insertions, 2 deletions
diff --git a/crates/hir/src/code_model.rs b/crates/hir/src/code_model.rs
index e9bb4f541..35b532602 100644
--- a/crates/hir/src/code_model.rs
+++ b/crates/hir/src/code_model.rs
@@ -6,7 +6,6 @@ use base_db::{CrateDisplayName, CrateId, Edition, FileId};
6use either::Either; 6use either::Either;
7use hir_def::{ 7use hir_def::{
8 adt::{ReprKind, StructKind, VariantData}, 8 adt::{ReprKind, StructKind, VariantData},
9 builtin_type::BuiltinType,
10 expr::{BindingAnnotation, LabelId, Pat, PatId}, 9 expr::{BindingAnnotation, LabelId, Pat, PatId},
11 import_map, 10 import_map,
12 item_tree::ItemTreeNode, 11 item_tree::ItemTreeNode,
@@ -245,7 +244,7 @@ impl ModuleDef {
245 ModuleDef::Const(it) => it.name(db), 244 ModuleDef::Const(it) => it.name(db),
246 ModuleDef::Static(it) => it.name(db), 245 ModuleDef::Static(it) => it.name(db),
247 246
248 ModuleDef::BuiltinType(it) => Some(it.as_name()), 247 ModuleDef::BuiltinType(it) => Some(it.name()),
249 } 248 }
250 } 249 }
251 250
@@ -995,6 +994,23 @@ impl HasVisibility for TypeAlias {
995} 994}
996 995
997#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] 996#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
997pub struct BuiltinType {
998 pub(crate) inner: hir_def::builtin_type::BuiltinType,
999}
1000
1001impl BuiltinType {
1002 pub fn ty(self, db: &dyn HirDatabase, module: Module) -> Type {
1003 let resolver = module.id.resolver(db.upcast());
1004 Type::new_with_resolver(db, &resolver, Ty::builtin(self.inner))
1005 .expect("crate not present in resolver")
1006 }
1007
1008 pub fn name(self) -> Name {
1009 self.inner.as_name()
1010 }
1011}
1012
1013#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
998pub struct MacroDef { 1014pub struct MacroDef {
999 pub(crate) id: MacroDefId, 1015 pub(crate) id: MacroDefId,
1000} 1016}