use crate::syntax::{SyntaxGraphArgs, SyntaxGraphError, SyntaxNode};
use crate::NodeId;
pub fn build_while_statement_node(
args: &mut SyntaxGraphArgs<'_>,
n_id: NodeId,
block: NodeId,
conditional: Option<NodeId>,
) -> Result<NodeId, SyntaxGraphError> {
args.syntax_graph.add_node(
n_id,
SyntaxNode::WhileStatement {
block_id: block,
condition_id: conditional,
},
);
args.metadata.control_flow_stack.push(n_id);
let built_block = args.generic(block)?;
args.syntax_graph.add_ast_edge(n_id, built_block);
args.metadata.control_flow_stack.pop();
if let Some(conditional) = conditional {
let built = args.generic(conditional)?;
args.syntax_graph.add_ast_edge(n_id, built);
}
Ok(n_id)
}