use std::sync::Arc;
use crate::dim::Dimension;
use crate::eval::value::Quantity;
use crate::parser::Expr;
use crate::quantity::UnitExpr;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum RangeSeverity {
Lint,
Error,
}
#[derive(Debug, Clone)]
pub struct ArgRange {
pub min: Option<Quantity>,
pub max: Option<Quantity>,
pub severity: RangeSeverity,
}
#[derive(Debug, Clone)]
pub struct ArgContract {
pub name: String,
pub unit: UnitExpr,
pub dim: Dimension,
pub range: Option<ArgRange>,
pub default_expr: Option<Arc<Expr>>,
}