mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-10-03 15:15:24 +00:00
MIR episode 5
This commit is contained in:
parent
9b3387454d
commit
cbcafd3539
36 changed files with 1532 additions and 362 deletions
|
@ -34,6 +34,7 @@ pub trait TyExt {
|
|||
fn as_closure(&self) -> Option<ClosureId>;
|
||||
fn as_fn_def(&self, db: &dyn HirDatabase) -> Option<FunctionId>;
|
||||
fn as_reference(&self) -> Option<(&Ty, Lifetime, Mutability)>;
|
||||
fn as_raw_ptr(&self) -> Option<(&Ty, Mutability)>;
|
||||
fn as_reference_or_ptr(&self) -> Option<(&Ty, Rawness, Mutability)>;
|
||||
fn as_generic_def(&self, db: &dyn HirDatabase) -> Option<GenericDefId>;
|
||||
|
||||
|
@ -146,6 +147,7 @@ impl TyExt for Ty {
|
|||
Some(CallableDefId::StructId(_) | CallableDefId::EnumVariantId(_)) | None => None,
|
||||
}
|
||||
}
|
||||
|
||||
fn as_reference(&self) -> Option<(&Ty, Lifetime, Mutability)> {
|
||||
match self.kind(Interner) {
|
||||
TyKind::Ref(mutability, lifetime, ty) => Some((ty, lifetime.clone(), *mutability)),
|
||||
|
@ -153,6 +155,13 @@ impl TyExt for Ty {
|
|||
}
|
||||
}
|
||||
|
||||
fn as_raw_ptr(&self) -> Option<(&Ty, Mutability)> {
|
||||
match self.kind(Interner) {
|
||||
TyKind::Raw(mutability, ty) => Some((ty, *mutability)),
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
|
||||
fn as_reference_or_ptr(&self) -> Option<(&Ty, Rawness, Mutability)> {
|
||||
match self.kind(Interner) {
|
||||
TyKind::Ref(mutability, _, ty) => Some((ty, Rawness::Ref, *mutability)),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue