use crate::ast::ASTNode;
use crate::parser::NyashParser;

#[test]
fn parse_bitops_and_shift_precedence() {
    // Expression: 1 + 2 << 3 & 7
    // Precedence: shift before add, then &: (1 + (2 << 3)) & 7
    let code = "return 1 + 2 << 3 & 7";
    let ast = NyashParser::parse_from_string(code).expect("parse ok");
    // Just ensure it parses into a Program and contains a Return; deeper tree checks are optional here
    fn has_return(n: &ASTNode) -> bool {
        match n {
            ASTNode::Program { statements, .. } => statements.iter().any(has_return),
            ASTNode::Return { .. } => true,
            _ => false,
        }
    }
    assert!(has_return(&ast));
}
