#![allow(dead_code)]
use slicec::ast::Ast;
use slicec::compilation_state::CompilationState;
use slicec::compile_from_strings;
use slicec::diagnostics::Diagnostic;
use slicec::slice_options::SliceOptions;
pub use slicec::test_helpers::*;
#[must_use]
pub fn parse(slice: impl Into<String>, options: Option<&SliceOptions>) -> CompilationState {
compile_from_strings(&[&slice.into()], options, |_| {}, |_| {})
}
#[must_use]
pub fn parse_for_ast(slice: impl Into<String>) -> Ast {
let compilation_state = parse(slice, None);
if compilation_state.diagnostics.has_errors() {
panic!("{:?}", compilation_state.diagnostics);
}
compilation_state.ast
}
#[must_use]
pub fn parse_multiple_for_ast(slice: &[&str]) -> Ast {
let compilation_state = compile_from_strings(slice, None, |_| {}, |_| {});
if compilation_state.diagnostics.has_errors() {
panic!("{:?}", compilation_state.diagnostics);
}
compilation_state.ast
}
#[must_use]
pub fn parse_for_diagnostics(slice: impl Into<String>) -> Vec<Diagnostic> {
parse_multiple_for_diagnostics(&[&slice.into()])
}
#[must_use]
pub fn parse_multiple_for_diagnostics(slice: &[&str]) -> Vec<Diagnostic> {
diagnostics_from_compilation_state(
compile_from_strings(slice, None, |_| {}, |_| {}),
&SliceOptions::default(),
)
}
pub fn assert_parses(slice: impl Into<String>) {
let diagnostics = parse_for_diagnostics(slice);
let expected: [Diagnostic; 0] = []; check_diagnostics(diagnostics, expected);
}