use alloc::borrow::Cow;
use derive_more::derive::{Display, Error};
use crate::func::args::Ownership;
#[derive(Debug, Error, Display, PartialEq)]
pub enum ArgError {
#[display("expected `{expected}` but received `{received}` (@ argument index {index})")]
UnexpectedType {
index: usize,
expected: Cow<'static, str>,
received: Cow<'static, str>,
},
#[display(
"expected {expected} value but received {received} value (@ argument index {index})"
)]
InvalidOwnership {
index: usize,
expected: Ownership,
received: Ownership,
},
#[display("expected an argument but received none")]
EmptyArgList,
}