Skip to main content

dada_parser/
prelude.rs

1use dada_ir_ast::ast::{AstBlock, AstGenericTerm, AstMember};
2
3use super::*;
4
5/// Given a [`SourceFile`], parse its members
6pub trait SourceFileParse {
7    fn parse(self, db: &dyn crate::Db) -> AstModule<'_>;
8}
9
10/// Given a [`dada_ir_ast::ast::AstAggregate`], parse its members
11pub trait ClassItemMembers<'db> {
12    fn members(self, db: &'db dyn crate::Db) -> &'db SpanVec<'db, AstMember<'db>>;
13}
14
15/// Given a [`dada_ir_ast::ast::AstFunction`], parse its associated body into a block
16pub trait FunctionBlock<'db> {
17    fn body_block(self, db: &'db dyn crate::Db) -> Option<AstBlock<'db>>;
18}
19
20/// Given a [`SquareBracketArgs`], parse its associated body into a block
21pub trait SquareBracketArgs<'db> {
22    fn parse_as_generics(self, db: &'db dyn crate::Db) -> SpanVec<'db, AstGenericTerm<'db>>;
23}