mod context;
#[cfg(test)]
mod dsl;
mod error;
mod expression;
mod function;
mod module;
mod pattern;
mod statement;
mod type_parameter;
mod value_shape;
pub use error::{
ExternalTypeProviderLinkReason, HostProviderLinkReason, InvalidCallShapeReason,
InvalidCaseShapeReason, InvalidCustomTypeReason, InvalidExpressionShapeKind,
InvalidExpressionType, InvalidFunctionShapeReason, InvalidModuleReferenceReason,
InvalidPipelineShapeReason, InvalidRecordUpdateShapeReason, InvalidTypedAstReason,
InvalidUseShapeReason, PlanError, UnsupportedArgumentReason, UnsupportedBitArraySegmentReason,
UnsupportedCaseReason, UnsupportedExpressionKind, UnsupportedFunctionReason,
UnsupportedPatternKind, UnsupportedTopLevelKind,
};
pub use module::{plan_host_program, plan_module, plan_module_with_source, plan_program};
#[cfg(test)]
mod support {
use crate::frontend::compile_typed_module;
use crate::planner::error::PlanError;
use crate::planner::plan_module;
use gleam_core::ast::{SrcSpan, TypedModule};
pub(in crate::planner) fn compile(src: &str) -> TypedModule {
compile_typed_module("main", "main.gleam", src).expect("source should compile")
}
pub(in crate::planner) fn expect_plan_error(src: &str) -> PlanError {
plan_module(compile(src)).expect_err("source should fail planning")
}
pub(in crate::planner) fn compile_minimal_module() -> TypedModule {
compile(
r#"
pub fn main() {
1
}
"#,
)
}
pub(in crate::planner) fn dummy_span() -> SrcSpan {
SrcSpan::new(0, 0)
}
}