Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir/src/lib.rs')
| -rw-r--r-- | crates/hir/src/lib.rs | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/crates/hir/src/lib.rs b/crates/hir/src/lib.rs index b3a8a33cac..8460877705 100644 --- a/crates/hir/src/lib.rs +++ b/crates/hir/src/lib.rs @@ -2611,6 +2611,10 @@ impl LocalSource { self.source.file_id.original_file(db.upcast()) } + pub fn file(&self) -> HirFileId { + self.source.file_id + } + pub fn name(&self) -> Option<ast::Name> { self.source.value.name() } @@ -3232,6 +3236,21 @@ impl ClosureCapture { Local { parent: self.owner, binding_id: self.capture.local() } } + pub fn kind(&self) -> CaptureKind { + match self.capture.kind() { + hir_ty::CaptureKind::ByRef( + hir_ty::mir::BorrowKind::Shallow | hir_ty::mir::BorrowKind::Shared, + ) => CaptureKind::SharedRef, + hir_ty::CaptureKind::ByRef(hir_ty::mir::BorrowKind::Unique) => { + CaptureKind::UniqueSharedRef + } + hir_ty::CaptureKind::ByRef(hir_ty::mir::BorrowKind::Mut { .. }) => { + CaptureKind::MutableRef + } + hir_ty::CaptureKind::ByValue => CaptureKind::Move, + } + } + pub fn display_kind(&self) -> &'static str { self.capture.display_kind() } @@ -3241,6 +3260,13 @@ impl ClosureCapture { } } +pub enum CaptureKind { + SharedRef, + UniqueSharedRef, + MutableRef, + Move, +} + #[derive(Clone, PartialEq, Eq, Debug)] pub struct Type { env: Arc<TraitEnvironment>, |