Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/next_solver/generic_arg.rs')
-rw-r--r--crates/hir-ty/src/next_solver/generic_arg.rs23
1 files changed, 23 insertions, 0 deletions
diff --git a/crates/hir-ty/src/next_solver/generic_arg.rs b/crates/hir-ty/src/next_solver/generic_arg.rs
index 046b4303c3..834f4e3765 100644
--- a/crates/hir-ty/src/next_solver/generic_arg.rs
+++ b/crates/hir-ty/src/next_solver/generic_arg.rs
@@ -35,6 +35,29 @@ impl<'db> std::fmt::Debug for GenericArg<'db> {
}
}
+impl<'db> GenericArg<'db> {
+ pub fn ty(self) -> Option<Ty<'db>> {
+ match self.kind() {
+ GenericArgKind::Type(ty) => Some(ty),
+ _ => None,
+ }
+ }
+
+ pub fn expect_ty(self) -> Ty<'db> {
+ match self.kind() {
+ GenericArgKind::Type(ty) => ty,
+ _ => panic!("Expected ty, got {:?}", self),
+ }
+ }
+
+ pub fn region(self) -> Option<Region<'db>> {
+ match self.kind() {
+ GenericArgKind::Lifetime(r) => Some(r),
+ _ => None,
+ }
+ }
+}
+
impl<'db> From<Term<'db>> for GenericArg<'db> {
fn from(value: Term<'db>) -> Self {
match value {