chore(semantic): use Arc<ModuleRecord>

This commit is contained in:
Boshen 2023-09-03 15:26:52 +08:00
parent aa7b665fe9
commit ba54eb67b3
No known key found for this signature in database
GPG key ID: 9C7A8C8AB22BEBD1
3 changed files with 8 additions and 7 deletions

View file

@ -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,
}

View file

@ -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<Trivias>,
module_record: ModuleRecord,
module_record: Arc<ModuleRecord>,
jsdoc: JSDoc<'a>,

View file

@ -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<ModuleRecord> {
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: