@@ -7647,6 +7647,7 @@ mod tests {
7647
7647
mod error_mapping {
7648
7648
use wasmtime:: { AsContextMut , Instance , Trap } ;
7649
7649
7650
+ use super :: read_identifier_from_wasm;
7650
7651
use crate :: vm:: errors:: { CheckErrors , Error , RuntimeErrorType , ShortReturnType , WasmError } ;
7651
7652
use crate :: vm:: types:: ResponseData ;
7652
7653
use crate :: vm:: Value ;
@@ -7666,6 +7667,7 @@ mod error_mapping {
7666
7667
Panic = 6 ,
7667
7668
ShortReturnAssertionFailure = 7 ,
7668
7669
ArithmeticPowError = 8 ,
7670
+ NameAlreadyUsed = 9 ,
7669
7671
NotMapped = 99 ,
7670
7672
}
7671
7673
@@ -7682,6 +7684,7 @@ mod error_mapping {
7682
7684
6 => ErrorMap :: Panic ,
7683
7685
7 => ErrorMap :: ShortReturnAssertionFailure ,
7684
7686
8 => ErrorMap :: ArithmeticPowError ,
7687
+ 9 => ErrorMap :: NameAlreadyUsed ,
7685
7688
_ => ErrorMap :: NotMapped ,
7686
7689
}
7687
7690
}
@@ -7804,6 +7807,34 @@ mod error_mapping {
7804
7807
RuntimeErrorType :: Arithmetic ( POW_ERROR_MESSAGE . into ( ) ) ,
7805
7808
Some ( Vec :: new ( ) ) ,
7806
7809
) ,
7810
+ ErrorMap :: NameAlreadyUsed => {
7811
+ let runtime_error_arg_offset = instance
7812
+ . get_global ( & mut store, "runtime-error-arg-offset" )
7813
+ . and_then ( |glob| glob. get ( & mut store) . i32 ( ) )
7814
+ . unwrap_or_else ( || {
7815
+ panic ! ( "Could not find $runtime-error-arg-offset global with i32 value" )
7816
+ } ) ;
7817
+
7818
+ let runtime_error_arg_len = instance
7819
+ . get_global ( & mut store, "runtime-error-arg-len" )
7820
+ . and_then ( |glob| glob. get ( & mut store) . i32 ( ) )
7821
+ . unwrap_or_else ( || {
7822
+ panic ! ( "Could not find $runtime-error-arg-len global with i32 value" )
7823
+ } ) ;
7824
+
7825
+ let memory = instance
7826
+ . get_memory ( & mut store, "memory" )
7827
+ . unwrap_or_else ( || panic ! ( "Could not find wasm instance memory" ) ) ;
7828
+ let arg_name = read_identifier_from_wasm (
7829
+ memory,
7830
+ & mut store,
7831
+ runtime_error_arg_offset,
7832
+ runtime_error_arg_len,
7833
+ )
7834
+ . unwrap_or_else ( |e| panic ! ( "Could not recover arg_name: {e}" ) ) ;
7835
+
7836
+ Error :: Unchecked ( CheckErrors :: NameAlreadyUsed ( arg_name) )
7837
+ }
7807
7838
_ => panic ! ( "Runtime error code {} not supported" , runtime_error_code) ,
7808
7839
}
7809
7840
}
0 commit comments