slicec 0.3.3

The Slice parser and other core components for Slice compilers.
Documentation
// Copyright (c) ZeroC, Inc.

use crate::test_helpers::*;
use slicec::diagnostics::{Diagnostic, Error};
use slicec::grammar::CompilationMode;

#[test]
fn parameters_must_be_allowed_within_compilation_mode() {
    // Arrange
    let slice1 = "
        mode = Slice1
        module Test

        class C {}
    ";
    let slice2 = "
        mode = Slice2
        module Test

        interface I {
            op(c: C)
        }
    ";

    // Act
    let diagnostics = parse_multiple_for_diagnostics(&[slice1, slice2]);

    // Assert
    let expected = Diagnostic::new(Error::UnsupportedType {
        kind: "C".to_owned(),
        mode: CompilationMode::Slice2,
    });

    check_diagnostics(diagnostics, [expected]);
}