Add Lifetime to TyKind::Ref

This commit is contained in:
Lukas Wirth 2021-04-05 22:08:16 +02:00
parent 4bc8a01830
commit 96756f1b1d
13 changed files with 74 additions and 43 deletions

View file

@ -165,16 +165,16 @@ impl CallableSig {
}
impl Ty {
pub fn as_reference(&self) -> Option<(&Ty, Mutability)> {
pub fn as_reference(&self) -> Option<(&Ty, Lifetime, Mutability)> {
match self.kind(&Interner) {
TyKind::Ref(mutability, ty) => Some((ty, *mutability)),
TyKind::Ref(mutability, lifetime, ty) => Some((ty, *lifetime, *mutability)),
_ => None,
}
}
pub fn as_reference_or_ptr(&self) -> Option<(&Ty, Rawness, Mutability)> {
match self.kind(&Interner) {
TyKind::Ref(mutability, ty) => Some((ty, Rawness::Ref, *mutability)),
TyKind::Ref(mutability, _, ty) => Some((ty, Rawness::Ref, *mutability)),
TyKind::Raw(mutability, ty) => Some((ty, Rawness::RawPtr, *mutability)),
_ => None,
}
@ -183,7 +183,7 @@ impl Ty {
pub fn strip_references(&self) -> &Ty {
let mut t: &Ty = self;
while let TyKind::Ref(_mutability, ty) = t.kind(&Interner) {
while let TyKind::Ref(_mutability, _lifetime, ty) = t.kind(&Interner) {
t = ty;
}