pub mod test_helpers;
use crate::test_helpers::*;
use slicec::diagnostics::{Diagnostic, Error};
use slicec::grammar::CompilationMode;
#[test]
fn valid_mixed_compilation_mode_succeeds() {
let slice1 = "
mode = Slice1
module Test
compact struct ACompactStruct {
data: int32
}
enum AnEnum {
A
B
}
";
let slice2 = "
mode = Slice2
module Test
struct AStruct {
e: AnEnum
c: ACompactStruct
}
";
let diagnostics = parse_multiple_for_diagnostics(&[slice2, slice1]);
let expected: [Diagnostic; 0] = []; check_diagnostics(diagnostics, expected);
}
#[test]
fn invalid_mixed_compilation_mode_fails() {
let slice2 = "
mode = Slice2
module Test
custom ACustomType
compact struct ACompactStruct {
data: int32?
}
";
let slice1 = "
mode = Slice1
module Test
compact struct AStruct {
c: ACustomType
s: ACompactStruct
}
";
let diagnostics = parse_multiple_for_diagnostics(&[slice1, slice2]);
let expected = [
Diagnostic::new(Error::UnsupportedType {
kind: "ACustomType".to_owned(),
mode: CompilationMode::Slice1,
}),
Diagnostic::new(Error::UnsupportedType {
kind: "ACompactStruct".to_owned(),
mode: CompilationMode::Slice1,
}),
];
check_diagnostics(diagnostics, expected);
}