- pub fn node_extent(self, n: ast::NodeId) -> CodeExtent<'gcx> {
- self.intern_code_extent(CodeExtentData::Misc(n))
- }
-
- pub fn call_site_extent(self, fn_id: ast::NodeId) -> CodeExtent<'gcx> {
- self.intern_code_extent(CodeExtentData::CallSiteScope(
- self.hir.body_owned_by(fn_id)))
- }
-
- pub fn parameter_extent(self, fn_id: ast::NodeId) -> CodeExtent<'gcx> {
- self.intern_code_extent(CodeExtentData::ParameterScope(
- self.hir.body_owned_by(fn_id)))
- }
-
- pub fn intern_code_extent(self, data: CodeExtentData) -> CodeExtent<'gcx> {
- if let Some(st) = self.code_extent_interner.borrow().get(&data) {
- return st;
- }
-
- let interned = self.global_interners.arena.alloc(data);
- if let Some(prev) = self.code_extent_interner.borrow_mut().replace(interned) {
- bug!("Tried to overwrite interned code-extent: {:?}", prev)
- }
- interned
- }
-