aboutsummaryrefslogtreecommitdiff
path: root/crates/hir/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/hir/src/lib.rs')
-rw-r--r--crates/hir/src/lib.rs36
1 files changed, 35 insertions, 1 deletions
diff --git a/crates/hir/src/lib.rs b/crates/hir/src/lib.rs
index 476fdb132..98135602a 100644
--- a/crates/hir/src/lib.rs
+++ b/crates/hir/src/lib.rs
@@ -572,6 +572,12 @@ impl Struct {
572 } 572 }
573} 573}
574 574
575impl HasVisibility for Struct {
576 fn visibility(&self, db: &dyn HirDatabase) -> Visibility {
577 db.struct_data(self.id).visibility.resolve(db.upcast(), &self.id.resolver(db.upcast()))
578 }
579}
580
575#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] 581#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
576pub struct Union { 582pub struct Union {
577 pub(crate) id: UnionId, 583 pub(crate) id: UnionId,
@@ -604,6 +610,12 @@ impl Union {
604 } 610 }
605} 611}
606 612
613impl HasVisibility for Union {
614 fn visibility(&self, db: &dyn HirDatabase) -> Visibility {
615 db.union_data(self.id).visibility.resolve(db.upcast(), &self.id.resolver(db.upcast()))
616 }
617}
618
607#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] 619#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
608pub struct Enum { 620pub struct Enum {
609 pub(crate) id: EnumId, 621 pub(crate) id: EnumId,
@@ -631,6 +643,12 @@ impl Enum {
631 } 643 }
632} 644}
633 645
646impl HasVisibility for Enum {
647 fn visibility(&self, db: &dyn HirDatabase) -> Visibility {
648 db.enum_data(self.id).visibility.resolve(db.upcast(), &self.id.resolver(db.upcast()))
649 }
650}
651
634#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] 652#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
635pub struct Variant { 653pub struct Variant {
636 pub(crate) parent: Enum, 654 pub(crate) parent: Enum,
@@ -962,6 +980,10 @@ impl Const {
962 pub fn name(self, db: &dyn HirDatabase) -> Option<Name> { 980 pub fn name(self, db: &dyn HirDatabase) -> Option<Name> {
963 db.const_data(self.id).name.clone() 981 db.const_data(self.id).name.clone()
964 } 982 }
983
984 pub fn type_ref(self, db: &dyn HirDatabase) -> TypeRef {
985 db.const_data(self.id).type_ref.clone()
986 }
965} 987}
966 988
967impl HasVisibility for Const { 989impl HasVisibility for Const {
@@ -995,6 +1017,12 @@ impl Static {
995 } 1017 }
996} 1018}
997 1019
1020impl HasVisibility for Static {
1021 fn visibility(&self, db: &dyn HirDatabase) -> Visibility {
1022 db.static_data(self.id).visibility.resolve(db.upcast(), &self.id.resolver(db.upcast()))
1023 }
1024}
1025
998#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] 1026#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
999pub struct Trait { 1027pub struct Trait {
1000 pub(crate) id: TraitId, 1028 pub(crate) id: TraitId,
@@ -1014,7 +1042,13 @@ impl Trait {
1014 } 1042 }
1015 1043
1016 pub fn is_auto(self, db: &dyn HirDatabase) -> bool { 1044 pub fn is_auto(self, db: &dyn HirDatabase) -> bool {
1017 db.trait_data(self.id).auto 1045 db.trait_data(self.id).is_auto
1046 }
1047}
1048
1049impl HasVisibility for Trait {
1050 fn visibility(&self, db: &dyn HirDatabase) -> Visibility {
1051 db.trait_data(self.id).visibility.resolve(db.upcast(), &self.id.resolver(db.upcast()))
1018 } 1052 }
1019} 1053}
1020 1054