use super::checked; use dever::compiler::{check, model::Program}; use dever::syntax::{diagnostic::Diagnostic, source::Source}; pub(super) fn packages(files: &[(&str, &str)]) -> Result { let mut modules = Vec::new(); let mut identities = Vec::new(); for (index, (identity, text)) in files.iter().enumerate() { let source = Source::new(index, format!("{identity}.dever"), (*text).into()); modules.push(dever::syntax::parse(&source)?); identities.push((*identity).into()); } check::check(modules, &identities) } #[test] fn public_signatures_cannot_publish_private_types() { for declaration in [ "public echo(value: Hidden) (answer: Hidden) { answer = value }", "public echo(value: List) (answer: List) { answer = value }", "public echo(value: Map>) (answer: Map>) { answer = value }", "public echo(value: MapEntry