diff --git a/src/librustc_resolve/build_reduced_graph.rs b/src/librustc_resolve/build_reduced_graph.rs index 355578ddccf..75b99bed431 100644 --- a/src/librustc_resolve/build_reduced_graph.rs +++ b/src/librustc_resolve/build_reduced_graph.rs @@ -928,7 +928,7 @@ impl<'a, 'b:'a, 'tcx:'b> GraphBuilder<'a, 'b, 'tcx> { self.unresolved_imports += 1; if is_public { - module_.pub_count.set(module_.pub_count.get() + 1); + module_.inc_pub_count(); } // Bump the reference count on the name. Or, if this is a glob, set @@ -963,9 +963,9 @@ impl<'a, 'b:'a, 'tcx:'b> GraphBuilder<'a, 'b, 'tcx> { // Set the glob flag. This tells us that we don't know the // module's exports ahead of time. - module_.glob_count.set(module_.glob_count.get() + 1); + module_.inc_glob_count(); if is_public { - module_.pub_glob_count.set(module_.pub_glob_count.get() + 1); + module_.inc_pub_glob_count(); } } } diff --git a/src/librustc_resolve/lib.rs b/src/librustc_resolve/lib.rs index 1dd26fe7c58..50a8c588533 100644 --- a/src/librustc_resolve/lib.rs +++ b/src/librustc_resolve/lib.rs @@ -749,6 +749,30 @@ impl Module { } } +impl Module { + pub fn inc_glob_count(&self) { + self.glob_count.set(self.glob_count.get() + 1); + } + pub fn dec_glob_count(&self) { + assert!(self.glob_count.get() > 0); + self.glob_count.set(self.glob_count.get() - 1); + } + pub fn inc_pub_count(&self) { + self.pub_count.set(self.pub_count.get() + 1); + } + pub fn dec_pub_count(&self) { + assert!(self.pub_count.get() > 0); + self.pub_count.set(self.pub_count.get() - 1); + } + pub fn inc_pub_glob_count(&self) { + self.pub_glob_count.set(self.pub_glob_count.get() + 1); + } + pub fn dec_pub_glob_count(&self) { + assert!(self.pub_glob_count.get() > 0); + self.pub_glob_count.set(self.pub_glob_count.get() - 1); + } +} + impl fmt::Debug for Module { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { write!(f, "{:?}, kind: {:?}, {}", diff --git a/src/librustc_resolve/resolve_imports.rs b/src/librustc_resolve/resolve_imports.rs index 18fefa967ea..bab9f19bbff 100644 --- a/src/librustc_resolve/resolve_imports.rs +++ b/src/librustc_resolve/resolve_imports.rs @@ -407,11 +407,9 @@ impl<'a, 'b:'a, 'tcx:'b> ImportResolver<'a, 'b, 'tcx> { if resolution_result.success() { match import_directive.subclass { GlobImport => { - assert!(module_.glob_count.get() >= 1); - module_.glob_count.set(module_.glob_count.get() - 1); + module_.dec_glob_count(); if import_directive.is_public { - assert!(module_.pub_glob_count.get() >= 1); - module_.pub_glob_count.set(module_.pub_glob_count.get() - 1); + module_.dec_pub_glob_count(); } } SingleImport(..) => { @@ -419,8 +417,7 @@ impl<'a, 'b:'a, 'tcx:'b> ImportResolver<'a, 'b, 'tcx> { } } if import_directive.is_public { - assert!(module_.pub_count.get() >= 1); - module_.pub_count.set(module_.pub_count.get() - 1); + module_.dec_pub_count(); } }