mod slice1 {
use crate::test_helpers::*;
use slicec::diagnostics::{Diagnostic, Error};
use slicec::grammar::CompilationMode;
#[test]
fn unsupported_fail() {
let slice = "
mode = Slice1
module Test
struct A {}
";
let diagnostics = parse_for_diagnostics(slice);
let expected = Diagnostic::new(Error::NotSupportedInCompilationMode {
kind: "struct".to_owned(),
identifier: "A".to_owned(),
mode: CompilationMode::Slice1,
})
.add_note("structs defined in Slice1 mode must be 'compact'", None);
check_diagnostics(diagnostics, [expected]);
}
}
mod slice2 {
use crate::test_helpers::*;
use slicec::diagnostics::{Diagnostic, Error};
use slicec::grammar::CompilationMode;
#[test]
fn slice1_types_fail() {
let slice = "
module Test
struct A {
c: AnyClass
}
";
let diagnostics = parse_for_diagnostics(slice);
let expected = Diagnostic::new(Error::UnsupportedType {
kind: "AnyClass".to_owned(),
mode: CompilationMode::Slice2,
})
.add_note("this file's compilation mode is Slice2 by default", None);
check_diagnostics(diagnostics, [expected]);
}
#[test]
fn slice2_types_succeed() {
let slice = "
module Test
struct A {
i: int32
s: string?
}
";
assert_parses(slice);
}
}