From b777d46ae61fce3c3a891eeda5b5d7c91fda3871 Mon Sep 17 00:00:00 2001 From: Jonas Schievink Date: Mon, 19 Apr 2021 01:06:04 +0200 Subject: Fix visibility of items in block modules --- crates/hir_def/src/lib.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'crates/hir_def/src/lib.rs') diff --git a/crates/hir_def/src/lib.rs b/crates/hir_def/src/lib.rs index 000567d99..5ac1670b5 100644 --- a/crates/hir_def/src/lib.rs +++ b/crates/hir_def/src/lib.rs @@ -108,6 +108,18 @@ impl ModuleId { pub fn containing_module(&self, db: &dyn db::DefDatabase) -> Option { self.def_map(db).containing_module(self.local_id) } + + /// Returns `true` if this module represents a block expression. + /// + /// Returns `false` if this module is a submodule *inside* a block expression + /// (eg. `m` in `{ mod m {} }`). + pub fn is_block_root(&self, db: &dyn db::DefDatabase) -> bool { + if self.block.is_none() { + return false; + } + + self.def_map(db)[self.local_id].parent.is_none() + } } /// An ID of a module, **local** to a specific crate -- cgit v1.2.3