From ba54eb67b33d820c08ab3ebabd695a2173887f1a Mon Sep 17 00:00:00 2001 From: Boshen Date: Sun, 3 Sep 2023 15:26:52 +0800 Subject: [PATCH] chore(semantic): use Arc --- crates/oxc_semantic/src/builder.rs | 6 +++--- crates/oxc_semantic/src/lib.rs | 4 ++-- crates/oxc_semantic/src/module_record/mod.rs | 5 +++-- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/crates/oxc_semantic/src/builder.rs b/crates/oxc_semantic/src/builder.rs index f21250e15..94093bb16 100644 --- a/crates/oxc_semantic/src/builder.rs +++ b/crates/oxc_semantic/src/builder.rs @@ -1,6 +1,6 @@ //! Semantic Builder -use std::{cell::RefCell, rc::Rc}; +use std::{cell::RefCell, rc::Rc, sync::Arc}; use itertools::Itertools; #[allow(clippy::wildcard_imports)] @@ -149,7 +149,7 @@ impl<'a> SemanticBuilder<'a> { nodes: self.nodes, scopes: self.scope, symbols: self.symbols, - module_record, + module_record: Arc::new(module_record), jsdoc: self.jsdoc.build(), unused_labels: self.unused_labels.labels, }; @@ -164,7 +164,7 @@ impl<'a> SemanticBuilder<'a> { nodes: self.nodes, scopes: self.scope, symbols: self.symbols, - module_record: ModuleRecord::default(), + module_record: Arc::new(ModuleRecord::default()), jsdoc: self.jsdoc.build(), unused_labels: self.unused_labels.labels, } diff --git a/crates/oxc_semantic/src/lib.rs b/crates/oxc_semantic/src/lib.rs index e57d21abc..70332b544 100644 --- a/crates/oxc_semantic/src/lib.rs +++ b/crates/oxc_semantic/src/lib.rs @@ -9,7 +9,7 @@ mod reference; mod scope; mod symbol; -use std::rc::Rc; +use std::{rc::Rc, sync::Arc}; pub use builder::{SemanticBuilder, SemanticBuilderReturn}; pub use jsdoc::{JSDoc, JSDocComment, JSDocTag}; @@ -41,7 +41,7 @@ pub struct Semantic<'a> { trivias: Rc, - module_record: ModuleRecord, + module_record: Arc, jsdoc: JSDoc<'a>, diff --git a/crates/oxc_semantic/src/module_record/mod.rs b/crates/oxc_semantic/src/module_record/mod.rs index c40ae6cd2..6493ffe0e 100644 --- a/crates/oxc_semantic/src/module_record/mod.rs +++ b/crates/oxc_semantic/src/module_record/mod.rs @@ -9,10 +9,11 @@ mod module_record_tests { use oxc_span::{SourceType, Span}; #[allow(clippy::wildcard_imports)] use oxc_syntax::module_record::*; + use std::sync::Arc; use crate::SemanticBuilder; - fn build(source_text: &str) -> ModuleRecord { + fn build(source_text: &str) -> Arc { let source_type = SourceType::default().with_module(true); let allocator = Allocator::default(); let ret = Parser::new(&allocator, source_text, source_type).parse(); @@ -21,7 +22,7 @@ mod module_record_tests { .with_trivias(ret.trivias) .with_module_record_builder(true) .build(program); - semantic_ret.semantic.module_record + Arc::clone(&semantic_ret.semantic.module_record) } // Table 55 gives examples of ImportEntry records fields used to represent the syntactic import forms: