1use crate::{EpochID, Slice, Term};
7use smartstring::alias::String;
8use thiserror::Error;
9
10#[derive(Debug, Clone, Error)]
18pub enum TermError {
19 #[error("Invalid term {0:?}")]
20 InvalidTerm(Term),
21
22 #[error("Epoch overflow")]
23 LiveEpochsExceeded,
24
25 #[error("Invalid epoch {0:?}")]
26 InvalidEpoch(EpochID),
27
28 #[error("Missing functor")]
29 MissingFunctor,
30
31 #[error("Invalid functor {0:?}")]
32 InvalidFunctor(Term),
33
34 #[error("Type mismatch: expected {expected}, found {found}")]
35 UnexpectedKind {
36 expected: &'static str,
37 found: &'static str,
38 },
39
40 #[error("Arity mismatch: expected {expected}, found {found}")]
41 UnexpectedArity { expected: usize, found: usize },
42
43 #[error("Unexpected name in {0:?}")]
44 UnexpectedName(Term),
45
46 #[error("invalid fixity: {0}")]
48 InvalidFixity(String),
49
50 #[error("invalid associativity: {0}")]
52 InvalidAssoc(String),
53
54 #[error("operdef error: {0}")]
56 OperDef(String),
57}
58
59#[derive(Debug, Clone, Error)]
62pub(crate) enum InternalTermError {
63 #[error("invalid arena epoch: {0:?}")]
65 InvalidEpoch(EpochID),
66
67 #[error("invalid term slice: {0:?}")]
69 InvalidSlice(Slice),
70}