iota_package_resolver/
error.rs1use std::sync::Arc;
6
7use iota_types::base_types::{IotaAddress, TypeTag};
8use move_binary_format::errors::VMError;
9use thiserror::Error;
10
11#[derive(Error, Debug, Clone)]
12pub enum Error {
13 #[error("{0}")]
14 Bcs(#[from] bcs::Error),
15
16 #[error("Store {} error: {}", store, source)]
17 Store {
18 store: &'static str,
19 source: Arc<dyn std::error::Error + Send + Sync + 'static>,
20 },
21
22 #[error("{0}")]
23 Deserialize(VMError),
24
25 #[error("Package has no modules: {0}")]
26 EmptyPackage(IotaAddress),
27
28 #[error("Function not found: {0}::{1}::{2}")]
29 FunctionNotFound(IotaAddress, String, String),
30
31 #[error("Conflicting types for input {0}: {1} and {2}")]
32 InputTypeConflict(u16, TypeTag, TypeTag),
33
34 #[error("Linkage not found for package: {0}")]
35 LinkageNotFound(IotaAddress),
36
37 #[error("Module not found: {0}::{1}")]
38 ModuleNotFound(IotaAddress, String),
39
40 #[error("No origin package found for {0}::{1}::{2}")]
41 NoTypeOrigin(IotaAddress, String, String),
42
43 #[error("Not a package: {0}")]
44 NotAPackage(IotaAddress),
45
46 #[error("Not an identifier: '{0}'")]
47 NotAnIdentifier(String),
48
49 #[error("Package not found: {0}")]
50 PackageNotFound(IotaAddress),
51
52 #[error("Datatype not found: {0}::{1}::{2}")]
53 DatatypeNotFound(IotaAddress, String, String),
54
55 #[error("More than {0} struct definitions required to resolve type")]
56 TooManyTypeNodes(usize, usize),
57
58 #[error("Expected at most {0} type parameters, got {1}")]
59 TooManyTypeParams(usize, usize),
60
61 #[error("Expected {0} type parameters, but got {1}")]
62 TypeArityMismatch(usize, usize),
63
64 #[error("Type parameter nesting exceeded limit of {0}")]
65 TypeParamNesting(usize, usize),
66
67 #[error("Type Parameter {0} out of bounds ({1})")]
68 TypeParamOOB(u16, usize),
69
70 #[error("Unexpected reference type.")]
71 UnexpectedReference,
72
73 #[error("Unexpected type: 'signer'.")]
74 UnexpectedSigner,
75
76 #[error("Unexpected error: {0}")]
77 Unexpected(Arc<dyn std::error::Error + Send + Sync + 'static>),
78
79 #[error("Type layout nesting exceeded limit of {0}")]
80 ValueNesting(usize),
81}