strykelang 0.7.2

A highly parallel Perl 5 interpreter written in Rust
Documentation
//! Shared helpers for integration tests. `cargo test` runs `tests/integration.rs` as its own crate
//! that imports this module and `tests/suite/*`.

use stryke::error::ErrorKind;
use stryke::interpreter::Interpreter;
use stryke::value::PerlValue;

/// Parse and execute Perl code; panics on parse or runtime error.
pub fn eval(code: &str) -> PerlValue {
    let program = stryke::parse(code).expect("parse failed");
    let mut interp = Interpreter::new();
    interp.execute(&program).expect("execution failed")
}

pub fn eval_string(code: &str) -> String {
    eval(code).to_string()
}

pub fn eval_int(code: &str) -> i64 {
    eval(code).to_int()
}

pub fn eval_err_kind(code: &str) -> ErrorKind {
    let program = stryke::parse(code).expect("parse failed");
    let mut interp = Interpreter::new();
    interp.execute(&program).unwrap_err().kind
}

pub fn parse_err_kind(code: &str) -> ErrorKind {
    stryke::parse(code).unwrap_err().kind
}