From f38561dfd603c5a39dc1c31b0165589da6a2f5b3 Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Wed, 18 Dec 2013 19:07:31 -0800 Subject: [PATCH] librustc: De-`@mut` `CrateDebugContext::composite_types_completed` --- src/librustc/middle/trans/debuginfo.rs | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/librustc/middle/trans/debuginfo.rs b/src/librustc/middle/trans/debuginfo.rs index 84f0ab4f5cb1..56edec9ae260 100644 --- a/src/librustc/middle/trans/debuginfo.rs +++ b/src/librustc/middle/trans/debuginfo.rs @@ -181,7 +181,7 @@ pub struct CrateDebugContext { priv namespace_map: RefCell>, // This collection is used to assert that composite types (structs, enums, ...) have their // members only set once: - priv composite_types_completed: HashSet, + priv composite_types_completed: RefCell>, } impl CrateDebugContext { @@ -198,7 +198,7 @@ impl CrateDebugContext { created_files: RefCell::new(HashMap::new()), created_types: RefCell::new(HashMap::new()), namespace_map: RefCell::new(HashMap::new()), - composite_types_completed: HashSet::new(), + composite_types_completed: RefCell::new(HashSet::new()), }; } } @@ -1646,11 +1646,16 @@ fn set_members_of_composite_type(cx: &mut CrateContext, // used instead of a new one created in create_struct_stub. This would cause a hard to trace // assertion in DICompositeType::SetTypeArray(). The following check makes sure that we get a // better error message if this should happen again due to some regression. - if debug_context(cx).composite_types_completed.contains(&composite_type_metadata) { - cx.sess.span_bug(definition_span, "debuginfo::set_members_of_composite_type() - Already \ - completed forward declaration re-encountered."); - } else { - debug_context(cx).composite_types_completed.insert(composite_type_metadata); + { + let mut composite_types_completed = + debug_context(cx).composite_types_completed.borrow_mut(); + if composite_types_completed.get().contains(&composite_type_metadata) { + cx.sess.span_bug(definition_span, "debuginfo::set_members_of_composite_type() - \ + Already completed forward declaration \ + re-encountered."); + } else { + composite_types_completed.get().insert(composite_type_metadata); + } } let loc = span_start(cx, definition_span);