about summary refs log tree commit diff
diff options
context:
space:
mode:
authorZalathar <Zalathar@users.noreply.github.com>2023-07-28 12:55:13 +1000
committerZalathar <Zalathar@users.noreply.github.com>2023-07-28 12:55:13 +1000
commit8745fdc4487d6200ec652abc05b7a1ac9bb16765 (patch)
treed190703e956822d5d7727b8452e34a4635a5784c
parent6cacb5247fbb5c38f06c1ad71262b0c4eb91a84d (diff)
downloadrust-8745fdc4487d6200ec652abc05b7a1ac9bb16765.tar.gz
rust-8745fdc4487d6200ec652abc05b7a1ac9bb16765.zip
Replace a lazy `RefCell<Option<T>>` with `OnceCell<T>`
-rw-r--r--compiler/rustc_mir_transform/src/coverage/spans.rs7
1 files changed, 3 insertions, 4 deletions
diff --git a/compiler/rustc_mir_transform/src/coverage/spans.rs b/compiler/rustc_mir_transform/src/coverage/spans.rs
index 35cf9ea5f91..deebf5345ba 100644
--- a/compiler/rustc_mir_transform/src/coverage/spans.rs
+++ b/compiler/rustc_mir_transform/src/coverage/spans.rs
@@ -11,7 +11,7 @@ use rustc_middle::ty::TyCtxt;
 use rustc_span::source_map::original_sp;
 use rustc_span::{BytePos, ExpnKind, MacroKind, Span, Symbol};
 
-use std::cell::RefCell;
+use std::cell::OnceCell;
 use std::cmp::Ordering;
 
 #[derive(Debug, Copy, Clone)]
@@ -67,7 +67,7 @@ impl CoverageStatement {
 pub(super) struct CoverageSpan {
     pub span: Span,
     pub expn_span: Span,
-    pub current_macro_or_none: RefCell<Option<Option<Symbol>>>,
+    pub current_macro_or_none: OnceCell<Option<Symbol>>,
     pub bcb: BasicCoverageBlock,
     pub coverage_statements: Vec<CoverageStatement>,
     pub is_closure: bool,
@@ -175,8 +175,7 @@ impl CoverageSpan {
     /// If the span is part of a macro, returns the macro name symbol.
     pub fn current_macro(&self) -> Option<Symbol> {
         self.current_macro_or_none
-            .borrow_mut()
-            .get_or_insert_with(|| {
+            .get_or_init(|| {
                 if let ExpnKind::Macro(MacroKind::Bang, current_macro) =
                     self.expn_span.ctxt().outer_expn_data().kind
                 {