Skip to content

Commit af6733d

Browse files
Removed Arc from GreenNode, returning reference instead.
commit-id:e338f3a3
1 parent 620dd69 commit af6733d

File tree

7 files changed

+1457
-1707
lines changed

7 files changed

+1457
-1707
lines changed

crates/cairo-lang-defs/src/cache/mod.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1532,7 +1532,7 @@ struct SyntaxNodeInnerCached {
15321532
impl SyntaxNodeCached {
15331533
fn new<'db>(syntax_node: SyntaxNode<'db>, ctx: &mut DefCacheSavingContext<'db>) -> Self {
15341534
let db = ctx.db;
1535-
let green = GreenIdCached::new(syntax_node.green_node(db).intern(db), ctx);
1535+
let green = GreenIdCached::new(syntax_node.green_node(db).clone().intern(db), ctx);
15361536
let parent = syntax_node.parent(db).map(|it| Self::new(it, ctx));
15371537
let stable_ptr = SyntaxStablePtrIdCached::new(syntax_node.stable_ptr(db), ctx);
15381538
let offset = syntax_node.offset(db);
@@ -1730,7 +1730,7 @@ impl GreenIdCached {
17301730
if let Some(id) = ctx.green_ids.get(&green_id) {
17311731
return *id;
17321732
}
1733-
let green_node = GreenNodeCached::new(green_id.long(ctx.db).as_ref(), ctx);
1733+
let green_node = GreenNodeCached::new(green_id.long(ctx.db), ctx);
17341734
let id = GreenIdCached(ctx.green_ids_lookup.len());
17351735
ctx.green_ids_lookup.push(green_node);
17361736
ctx.green_ids.insert(green_id, id);
@@ -1741,7 +1741,7 @@ impl GreenIdCached {
17411741
return *green_id;
17421742
}
17431743
let green_node = ctx.green_ids_lookup[self.0].clone();
1744-
let green_node = Arc::new(green_node.embed(ctx));
1744+
let green_node = green_node.embed(ctx);
17451745
let green_id = green_node.intern(ctx.db);
17461746
ctx.green_ids.insert(self, green_id);
17471747
green_id

crates/cairo-lang-parser/src/parser.rs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2048,7 +2048,7 @@ impl<'a, 'mt, 'str> Parser<'a, 'mt, 'str> {
20482048
let GreenNode {
20492049
kind: SyntaxKind::ExprPath,
20502050
details: GreenNodeDetails::Node { children: children0, .. },
2051-
} = &*expr.0.long(self.db).clone()
2051+
} = expr.0.long(self.db)
20522052
else {
20532053
return None;
20542054
};
@@ -2061,7 +2061,7 @@ impl<'a, 'mt, 'str> Parser<'a, 'mt, 'str> {
20612061
let GreenNode {
20622062
kind: SyntaxKind::ExprPathInner,
20632063
details: GreenNodeDetails::Node { children: children1, .. },
2064-
} = &*path_inner.long(self.db).clone()
2064+
} = path_inner.long(self.db)
20652065
else {
20662066
return None;
20672067
};
@@ -2075,7 +2075,7 @@ impl<'a, 'mt, 'str> Parser<'a, 'mt, 'str> {
20752075
let GreenNode {
20762076
kind: SyntaxKind::PathSegmentSimple,
20772077
details: GreenNodeDetails::Node { children: children2, .. },
2078-
} = &*path_segment.long(self.db).clone()
2078+
} = path_segment.long(self.db)
20792079
else {
20802080
return None;
20812081
};
@@ -2086,8 +2086,7 @@ impl<'a, 'mt, 'str> Parser<'a, 'mt, 'str> {
20862086
};
20872087

20882088
// Check that it is indeed `TerminalIdentifier`.
2089-
let GreenNode { kind: SyntaxKind::TerminalIdentifier, .. } = ident.long(self.db).as_ref()
2090-
else {
2089+
let GreenNode { kind: SyntaxKind::TerminalIdentifier, .. } = ident.long(self.db) else {
20912090
return None;
20922091
};
20932092

@@ -2592,7 +2591,7 @@ impl<'a, 'mt, 'str> Parser<'a, 'mt, 'str> {
25922591
let GreenNode {
25932592
kind: SyntaxKind::ExprPath,
25942593
details: GreenNodeDetails::Node { children: path_children, .. },
2595-
} = &*path.0.long(self.db).clone()
2594+
} = path.0.long(self.db)
25962595
else {
25972596
return Err(TryParseFailure::SkipToken);
25982597
};
@@ -2605,7 +2604,7 @@ impl<'a, 'mt, 'str> Parser<'a, 'mt, 'str> {
26052604
let GreenNode {
26062605
kind: SyntaxKind::ExprPathInner,
26072606
details: GreenNodeDetails::Node { children: inner_path_children, .. },
2608-
} = &*path_inner.long(self.db).clone()
2607+
} = path_inner.long(self.db)
26092608
else {
26102609
return Err(TryParseFailure::SkipToken);
26112610
};

crates/cairo-lang-syntax-codegen/src/generator.rs

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,6 @@ fn generate_ast_code() -> rust::Tokens {
173173
#![allow(dead_code)]
174174
#![allow(unused_variables)]
175175
use std::ops::Deref;
176-
use std::sync::Arc;
177176

178177
use cairo_lang_filesystem::span::TextWidth;
179178
use cairo_lang_utils::{extract_matches, Intern};
@@ -239,13 +238,13 @@ fn gen_list_code(name: String, element_type: String) -> rust::Tokens {
239238
) -> $(&green_name)<'db> {
240239
let width = children.iter().map(|id|
241240
id.0.long(db).width()).sum();
242-
$(&green_name)(Arc::new(GreenNode {
241+
$(&green_name)(GreenNode {
243242
kind: SyntaxKind::$(&name),
244243
details: GreenNodeDetails::Node {
245244
children: children.iter().map(|x| x.0).collect(),
246245
width,
247246
},
248-
}).intern(db))
247+
}.intern(db))
249248
}
250249
}
251250
#[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)]
@@ -296,13 +295,13 @@ fn gen_separated_list_code(
296295
) -> $(&green_name)<'db> {
297296
let width = children.iter().map(|id|
298297
id.id().long(db).width()).sum();
299-
$(&green_name)(Arc::new(GreenNode {
298+
$(&green_name)(GreenNode {
300299
kind: SyntaxKind::$(&name),
301300
details: GreenNodeDetails::Node {
302301
children: children.iter().map(|x| x.id()).collect(),
303302
width,
304303
},
305-
}).intern(db))
304+
}.intern(db))
306305
}
307306
}
308307
#[derive(Copy, Clone, PartialEq, Eq, Hash, Debug, salsa::Update)]
@@ -357,11 +356,11 @@ fn gen_common_list_code(name: &str, green_name: &str, ptr_name: &str) -> rust::T
357356
type StablePtr = $ptr_name<'db>;
358357
type Green = $green_name<'db>;
359358
fn missing(db: &'db dyn SyntaxGroup) -> Self::Green {
360-
$green_name(Arc::new(
359+
$green_name(
361360
GreenNode {
362361
kind: SyntaxKind::$name,
363362
details: GreenNodeDetails::Node { children: [].into(), width: TextWidth::default() },
364-
}).intern(db)
363+
}.intern(db)
365364
)
366365
}
367366
fn from_syntax_node(db: &'db dyn SyntaxGroup, node: SyntaxNode<'db>) -> Self {
@@ -514,10 +513,10 @@ fn gen_token_code(name: String) -> rust::Tokens {
514513
}
515514
impl<'db> Token<'db> for $(&name)<'db> {
516515
fn new_green(db: &'db dyn SyntaxGroup, text: SmolStr) -> Self::Green {
517-
$(&green_name)(Arc::new(GreenNode {
516+
$(&green_name)(GreenNode {
518517
kind: SyntaxKind::$(&name),
519518
details: GreenNodeDetails::Token(text),
520-
}).intern(db))
519+
}.intern(db))
521520
}
522521
fn text(&self, db: &'db dyn SyntaxGroup) -> SmolStr {
523522
extract_matches!(&self.node.long(db).green.long(db).details,
@@ -553,10 +552,10 @@ fn gen_token_code(name: String) -> rust::Tokens {
553552
type StablePtr = $(&ptr_name)<'db>;
554553
type Green = $(&green_name)<'db>;
555554
fn missing(db: &'db dyn SyntaxGroup) -> Self::Green {
556-
$(&green_name)(Arc::new(GreenNode {
555+
$(&green_name)(GreenNode {
557556
kind: SyntaxKind::TokenMissing,
558557
details: GreenNodeDetails::Token("".into()),
559-
}).intern(db))
558+
}.intern(db))
560559
}
561560
fn from_syntax_node(db: &'db dyn SyntaxGroup, node: SyntaxNode<'db>) -> Self {
562561
match node.long(db).green.long(db).details {
@@ -641,10 +640,10 @@ fn gen_struct_code(name: String, members: Vec<Member>, is_terminal: bool) -> rus
641640
let children = [$args];
642641
let width =
643642
children.into_iter().map(|id: GreenId<'_>| id.long(db).width()).sum();
644-
$(&green_name)(Arc::new(GreenNode {
643+
$(&green_name)(GreenNode {
645644
kind: SyntaxKind::$(&name),
646645
details: GreenNodeDetails::Node { children: children.into(), width },
647-
}).intern(db))
646+
}.intern(db))
648647
}
649648
fn text(&self, db: &'db dyn SyntaxGroup) -> SmolStr {
650649
let GreenNodeDetails::Node{children,..} = &self.node.long(db).green.long(db).details else {
@@ -667,10 +666,10 @@ fn gen_struct_code(name: String, members: Vec<Member>, is_terminal: bool) -> rus
667666
let children = [$args];
668667
let width =
669668
children.into_iter().map(|id: GreenId<'_>| id.long(db).width()).sum();
670-
$(&green_name)(Arc::new(GreenNode {
669+
$(&green_name)(GreenNode {
671670
kind: SyntaxKind::$(&name),
672671
details: GreenNodeDetails::Node { children: children.into(), width },
673-
}).intern(db))
672+
}.intern(db))
674673
}
675674
}
676675
}
@@ -712,13 +711,13 @@ fn gen_struct_code(name: String, members: Vec<Member>, is_terminal: bool) -> rus
712711
fn missing(db: &'db dyn SyntaxGroup) -> Self::Green {
713712
// Note: A missing syntax element should result in an internal green node
714713
// of width 0, with as much structure as possible.
715-
$(&green_name)(Arc::new(GreenNode {
714+
$(&green_name)(GreenNode {
716715
kind: SyntaxKind::$(&name),
717716
details: GreenNodeDetails::Node {
718717
children: [$args_for_missing].into(),
719718
width: TextWidth::default(),
720719
},
721-
}).intern(db))
720+
}.intern(db))
722721
}
723722
fn from_syntax_node(db: &'db dyn SyntaxGroup, node: SyntaxNode<'db>) -> Self {
724723
let kind = node.kind(db);

0 commit comments

Comments
 (0)