use super::Expression; use crate::{DeclId, Span}; #[derive(Debug, Clone)] pub struct Call { /// identifier of the declaration to call pub decl_id: DeclId, pub head: Span, pub positional: Vec, pub named: Vec<(String, Option)>, } impl Default for Call { fn default() -> Self { Self::new() } } impl Call { pub fn new() -> Call { Self { decl_id: 0, head: Span::unknown(), positional: vec![], named: vec![], } } pub fn has_flag(&self, flag_name: &str) -> bool { for name in &self.named { if flag_name == name.0 { return true; } } false } pub fn get_flag_expr(&self, flag_name: &str) -> Option { for name in &self.named { if flag_name == name.0 { return name.1.clone(); } } None } }