runmat-parser 0.5.0

Parser for RunMat (MATLAB/Octave) producing HIR from token streams
Documentation
use runmat_parser::{Expr, MultiAssignTarget, Stmt};

mod parse;
use parse::parse;

#[test]
fn multi_output_with_placeholder() {
    let program = parse("[a, ~, c] = f(x, y)").unwrap();
    match &program.body[0] {
        Stmt::MultiAssign(targets, rhs, _, _) => {
            let expected = vec![
                MultiAssignTarget::LValue(runmat_parser::LValue::Var("a".to_string())),
                MultiAssignTarget::Discard,
                MultiAssignTarget::LValue(runmat_parser::LValue::Var("c".to_string())),
            ];
            assert_eq!(targets, &expected);
            match rhs {
                Expr::FuncCall(name, args, _) => {
                    assert_eq!(name, "f");
                    assert_eq!(args.len(), 2);
                }
                _ => panic!("expected function call"),
            }
        }
        _ => panic!("expected multi-assign"),
    }
}