diff options
Diffstat (limited to 'crates/hir')
-rw-r--r-- | crates/hir/src/code_model.rs | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/crates/hir/src/code_model.rs b/crates/hir/src/code_model.rs index 6cbf5cecf..5a4c27906 100644 --- a/crates/hir/src/code_model.rs +++ b/crates/hir/src/code_model.rs | |||
@@ -1051,6 +1051,16 @@ impl AsAssocItem for TypeAlias { | |||
1051 | as_assoc_item(db, AssocItem::TypeAlias, self.id) | 1051 | as_assoc_item(db, AssocItem::TypeAlias, self.id) |
1052 | } | 1052 | } |
1053 | } | 1053 | } |
1054 | impl AsAssocItem for ModuleDef { | ||
1055 | fn as_assoc_item(self, db: &dyn HirDatabase) -> Option<AssocItem> { | ||
1056 | match self { | ||
1057 | ModuleDef::Function(it) => it.as_assoc_item(db), | ||
1058 | ModuleDef::Const(it) => it.as_assoc_item(db), | ||
1059 | ModuleDef::TypeAlias(it) => it.as_assoc_item(db), | ||
1060 | _ => None, | ||
1061 | } | ||
1062 | } | ||
1063 | } | ||
1054 | fn as_assoc_item<ID, DEF, CTOR, AST>(db: &dyn HirDatabase, ctor: CTOR, id: ID) -> Option<AssocItem> | 1064 | fn as_assoc_item<ID, DEF, CTOR, AST>(db: &dyn HirDatabase, ctor: CTOR, id: ID) -> Option<AssocItem> |
1055 | where | 1065 | where |
1056 | ID: Lookup<Data = AssocItemLoc<AST>>, | 1066 | ID: Lookup<Data = AssocItemLoc<AST>>, |
@@ -1091,6 +1101,13 @@ impl AssocItem { | |||
1091 | AssocContainerId::ContainerId(_) => panic!("invalid AssocItem"), | 1101 | AssocContainerId::ContainerId(_) => panic!("invalid AssocItem"), |
1092 | } | 1102 | } |
1093 | } | 1103 | } |
1104 | |||
1105 | pub fn containing_trait(self, db: &dyn HirDatabase) -> Option<Trait> { | ||
1106 | match self.container(db) { | ||
1107 | AssocItemContainer::Trait(t) => Some(t), | ||
1108 | _ => None, | ||
1109 | } | ||
1110 | } | ||
1094 | } | 1111 | } |
1095 | 1112 | ||
1096 | impl HasVisibility for AssocItem { | 1113 | impl HasVisibility for AssocItem { |