mod if_else;
mod literals;
mod type_assertions;
use crate::common::*;
fn with_first_local_value<R>(source: &str, f: impl for<'ast> FnOnce(Expression<'ast>) -> R) -> R {
with_parse(source, ParseOptions::default(), |result| {
let result = result.unwrap();
let [statement] = statement_kinds(result.root.as_slice()).exact();
let local = statement.as_local().expect("expected local statement");
f(local.values[0])
})
}
fn with_first_return_value<R>(source: &str, f: impl for<'ast> FnOnce(Expression<'ast>) -> R) -> R {
with_parse(source, ParseOptions::default(), |result| {
let result = result.unwrap();
let [statement] = statement_kinds(result.root.as_slice()).exact();
let return_statement = statement.as_return().expect("expected return statement");
assert_eq!(return_statement.expressions.len(), 1);
f(return_statement.expressions[0])
})
}