resolve unresolved error nits of #7617 (#7631)

* handle executor should_panic test better

* Revert "reduce should panic, due to extended error messages"

This reverts commit c0805940184a62cd9302603ad911c3591e70a60c.

* remove excessive constraints

* remove duplicate documentation messages for error variants

* reduce T: constraints to the abs minimum

* whoops

* fewer bounds again

Co-authored-by: Bernhard Schuster <bernhard@parity.io>
This commit is contained in:
Bernhard Schuster
2020-11-30 16:53:33 +01:00
committed by GitHub
parent 1cbfc9257f
commit 4ccf6672b1
7 changed files with 46 additions and 60 deletions
+2 -2
View File
@@ -475,7 +475,7 @@ pub enum CheckedHeader<H, S> {
#[derive(Debug, thiserror::Error)]
#[allow(missing_docs)]
pub enum Error<T> where T: SlotData + Clone + Debug + Send + Sync + 'static {
pub enum Error<T> where T: Debug {
#[error("Slot duration is invalid: {0:?}")]
SlotDurationInvalid(SlotDuration<T>),
}
@@ -493,7 +493,7 @@ impl<T> Deref for SlotDuration<T> {
}
}
impl<T: SlotData + Clone> SlotData for SlotDuration<T> {
impl<T: SlotData> SlotData for SlotDuration<T> {
/// Get the slot duration in milliseconds.
fn slot_duration(&self) -> u64
where T: SlotData,
+25 -31
View File
@@ -28,75 +28,69 @@ pub type Result<T> = std::result::Result<T, Error>;
#[derive(Debug, thiserror::Error)]
#[allow(missing_docs)]
pub enum Error {
/// Unserializable Data
#[error("Unserializable data encountered")]
InvalidData(#[from] sp_serializer::Error),
/// Trap occurred during execution
#[error(transparent)]
Trap(#[from] wasmi::Trap),
/// Wasmi loading/instantiating error
#[error(transparent)]
Wasmi(#[from] wasmi::Error),
/// Error in the API. Parameter is an error message.
#[error("API Error: {0}")]
ApiError(String),
/// Method is not found
#[error("Method not found: '{0}'")]
MethodNotFound(String),
/// Code is invalid (expected single byte)
#[error("Invalid Code: '{0}'")]
#[error("Invalid Code (expected single byte): '{0}'")]
InvalidCode(String),
/// Could not get runtime version.
#[error("On-chain runtime does not specify version")]
VersionInvalid,
/// Externalities have failed.
#[error("Externalities error")]
Externalities,
/// Invalid index.
#[error("Invalid index provided")]
InvalidIndex,
/// Invalid return type.
#[error("Invalid type returned (should be u64)")]
InvalidReturn,
/// Runtime failed.
#[error("Runtime error")]
Runtime,
/// Runtime panicked.
#[error("Runtime panicked: {0}")]
RuntimePanicked(String),
/// Invalid memory reference.
#[error("Invalid memory reference")]
InvalidMemoryReference,
/// The runtime must provide a global named `__heap_base` of type i32 for specifying where the
/// allocator is allowed to place its data.
#[error("The runtime doesn't provide a global named `__heap_base`")]
#[error("The runtime doesn't provide a global named `__heap_base` of type `i32`")]
HeapBaseNotFoundOrInvalid,
/// The runtime WebAssembly module is not allowed to have the `start` function.
#[error("The runtime has the `start` function")]
#[error("The runtime must not have the `start` function defined")]
RuntimeHasStartFn,
/// Some other error occurred
#[error("Other: {0}")]
Other(String),
/// Some error occurred in the allocator
#[error("Allocation Error")]
#[error(transparent)]
Allocator(#[from] sp_allocator::Error),
/// Execution of a host function failed.
#[error("Host function {0} execution failed with: {1}")]
FunctionExecution(String, String),
/// No table is present.
///
/// Call was requested that requires table but none was present in the instance.
#[error("No table exported by wasm blob")]
NoTable,
/// No table entry is present.
///
/// Call was requested that requires specific entry in the table to be present.
#[error("No table entry with index {0} in wasm blob exported table")]
NoTableEntryWithIndex(u32),
/// Table entry is not a function.
#[error("Table element with index {0} is not a function in wasm blob exported table")]
TableElementIsNotAFunction(u32),
/// Function in table is null and thus cannot be called.
#[error("Table entry with index {0} in wasm blob is null")]
FunctionRefIsNull(u32),
@@ -523,7 +523,7 @@ fn offchain_http_should_work(wasm_method: WasmExecutionMethod) {
#[test_case(WasmExecutionMethod::Interpreted)]
#[cfg_attr(feature = "wasmtime", test_case(WasmExecutionMethod::Compiled))]
#[should_panic]
#[should_panic(expected = "Allocator ran out of space")]
fn should_trap_when_heap_exhausted(wasm_method: WasmExecutionMethod) {
let mut ext = TestExternalities::default();
@@ -32,36 +32,36 @@ pub enum Error {
/// Transaction is not verifiable yet, but might be in the future.
#[error("Unknown transaction validity: {0:?}")]
UnknownTransaction(UnknownTransaction),
/// Transaction is invalid.
#[error("Invalid transaction validity: {0:?}")]
InvalidTransaction(InvalidTransaction),
/// The transaction validity returned no "provides" tag.
///
/// Such transactions are not accepted to the pool, since we use those tags
/// to define identity of transactions (occupance of the same "slot").
#[error("The transaction does not provide any tags, so the pool can't identify it.")]
#[error("The transaction validity returned no `provides` tags, so the pool can't identify it.")]
NoTagsProvided,
#[error("Temporarily Banned")]
TemporarilyBanned,
/// The transaction is already in the pool.
#[error("[{0:?}] Already imported")]
#[error("[{0:?}] Transaction is already in the pool")]
AlreadyImported(Box<dyn std::any::Any + Send>),
/// The transaction cannot be imported cause it's a replacement and has too low priority.
#[error("Too low priority ({0} > {1})", old, new)]
#[error("Transaction cannot be imported due to too low priority ({0} > {1})", old, new)]
TooLowPriority {
/// Transaction already in the pool.
old: Priority,
/// Transaction entering the pool.
new: Priority
},
/// Deps cycle detected and we couldn't import transaction.
#[error("Cycle Detected")]
#[error("Dependency cycle detected")]
CycleDetected,
/// Transaction was dropped immediately after it got inserted.
#[error("Transaction couldn't enter the pool because of the limit.")]
ImmediatelyDropped,
/// Invalid block id.
#[error("Invlaid block id: {0}")]
InvalidBlockId(String),
}