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