cairo_lang_syntax/node/
db.rs1use std::sync::Arc;
2
3use cairo_lang_filesystem::db::FilesGroup;
4use cairo_lang_utils::Upcast;
5
6use super::green::GreenNode;
7use super::ids::{GreenId, SyntaxStablePtrId};
8use super::stable_ptr::SyntaxStablePtr;
9use super::{SyntaxNode, SyntaxNodeLongId};
10
11#[salsa::query_group(SyntaxDatabase)]
13pub trait SyntaxGroup: FilesGroup + Upcast<dyn FilesGroup> {
14 #[salsa::interned]
15 fn intern_green(&self, field: Arc<GreenNode>) -> GreenId;
16 #[salsa::interned]
17 fn intern_stable_ptr(&self, field: SyntaxStablePtr) -> SyntaxStablePtrId;
18 #[salsa::interned]
19 fn intern_syntax_node(&self, field: SyntaxNodeLongId) -> SyntaxNode;
20
21 fn get_children(&self, node: SyntaxNode) -> Arc<[SyntaxNode]>;
23}
24
25fn get_children(db: &dyn SyntaxGroup, node: SyntaxNode) -> Arc<[SyntaxNode]> {
26 node.get_children_impl(db).into()
27}