mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-29 12:37:57 +00:00
Adds force_origin support (#13845)
* Adds force_origin support * Moves a couple of tests to showcase v2 with force_origin * Adds remaining tests * adds documentation * minor * adds test for invalid origin * ".git/.scripts/commands/fmt/fmt.sh" * updates param to use MaxCalls * Fixes compilation error * Updates doc comment * Fixes test outputs * Fixes test output * ".git/.scripts/commands/fmt/fmt.sh" --------- Co-authored-by: command-bot <>
This commit is contained in:
@@ -53,7 +53,7 @@ mod keywords {
|
||||
#[derive(Clone)]
|
||||
struct ParamDef {
|
||||
name: String,
|
||||
typ: Type,
|
||||
_typ: Type,
|
||||
start: syn::GenericArgument,
|
||||
end: syn::GenericArgument,
|
||||
}
|
||||
@@ -229,7 +229,7 @@ fn parse_params(item_fn: &ItemFn) -> Result<Vec<ParamDef>> {
|
||||
let args = segment.arguments.to_token_stream().into();
|
||||
let Ok(args) = syn::parse::<RangeArgs>(args) else { return invalid_param(typ.span()) };
|
||||
|
||||
params.push(ParamDef { name, typ: typ.clone(), start: args.start, end: args.end });
|
||||
params.push(ParamDef { name, _typ: typ.clone(), start: args.start, end: args.end });
|
||||
}
|
||||
Ok(params)
|
||||
}
|
||||
@@ -681,7 +681,6 @@ pub fn benchmarks(
|
||||
struct UnrolledParams {
|
||||
param_ranges: Vec<TokenStream2>,
|
||||
param_names: Vec<TokenStream2>,
|
||||
param_types: Vec<TokenStream2>,
|
||||
}
|
||||
|
||||
impl UnrolledParams {
|
||||
@@ -703,14 +702,7 @@ impl UnrolledParams {
|
||||
quote!(#name)
|
||||
})
|
||||
.collect();
|
||||
let param_types: Vec<TokenStream2> = params
|
||||
.iter()
|
||||
.map(|p| {
|
||||
let typ = &p.typ;
|
||||
quote!(#typ)
|
||||
})
|
||||
.collect();
|
||||
UnrolledParams { param_ranges, param_names, param_types }
|
||||
UnrolledParams { param_ranges, param_names }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -726,7 +718,6 @@ fn expand_benchmark(
|
||||
Ok(ident) => ident,
|
||||
Err(err) => return err.to_compile_error().into(),
|
||||
};
|
||||
let home = quote!(#krate::v2);
|
||||
let codec = quote!(#krate::frame_support::codec);
|
||||
let traits = quote!(#krate::frame_support::traits);
|
||||
let setup_stmts = benchmark_def.setup_stmts;
|
||||
@@ -738,7 +729,6 @@ fn expand_benchmark(
|
||||
let unrolled = UnrolledParams::from(&benchmark_def.params);
|
||||
let param_names = unrolled.param_names;
|
||||
let param_ranges = unrolled.param_ranges;
|
||||
let param_types = unrolled.param_types;
|
||||
|
||||
let type_use_generics = match is_instance {
|
||||
false => quote!(T),
|
||||
@@ -763,6 +753,18 @@ fn expand_benchmark(
|
||||
}
|
||||
expr_call.args = final_args;
|
||||
|
||||
let origin = match origin {
|
||||
Expr::Cast(t) => {
|
||||
let ty = t.ty.clone();
|
||||
quote! {
|
||||
<<T as frame_system::Config>::RuntimeOrigin as From<#ty>>::from(#origin);
|
||||
}
|
||||
},
|
||||
_ => quote! {
|
||||
#origin.into();
|
||||
},
|
||||
};
|
||||
|
||||
// determine call name (handles `_` and normal call syntax)
|
||||
let expr_span = expr_call.span();
|
||||
let call_err = || {
|
||||
@@ -803,7 +805,7 @@ fn expand_benchmark(
|
||||
let __call_decoded = <Call<#type_use_generics> as #codec::Decode>
|
||||
::decode(&mut &__benchmarked_call_encoded[..])
|
||||
.expect("call is encoded above, encoding must be correct");
|
||||
let __origin = #origin.into();
|
||||
let __origin = #origin;
|
||||
<Call<#type_use_generics> as #traits::UnfilteredDispatchable>::dispatch_bypass_filter(
|
||||
__call_decoded,
|
||||
__origin,
|
||||
@@ -877,11 +879,6 @@ fn expand_benchmark(
|
||||
// benchmark function definition
|
||||
#fn_def
|
||||
|
||||
// compile-time assertions that each referenced param type implements ParamRange
|
||||
#(
|
||||
#home::assert_impl_all!(#param_types: #home::ParamRange);
|
||||
)*
|
||||
|
||||
#[allow(non_camel_case_types)]
|
||||
#(
|
||||
#fn_attrs
|
||||
|
||||
Reference in New Issue
Block a user