mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-29 02:07:56 +00:00
Implement parameterisable modules (#1800)
* first implementation
* remove done comment
* origin done
* impl log for instance
* impl inherent for instance
* Fix wasm build + full example build
this requires parity codec implements codec for core::marker::PhantomData
* patch parity-codec link to github branch
* improve internal names and fix instance prefix
* Fix in macros
* add test modules for support
this allow to test for construct_runtime as well.
The reason to have put that in another crate is:
* if we put test in `tests/` dir of srml/support then decl_storage fails to get
srml-support access because it believes it is inside srml-support
crate and so derive access to `quote!{ crate }` but this is wrong
(and I don't see any way to prevent that, and it only bother us so I
don't think that matters that much)
* if we put test inside lib.rs then contruct_runtime cannot be used
because it call some macros that are defined with macros
(decl_outer_event and decl_outer_origin) and thus rustc complains.
* defaultinstance to its own struct to avoid errors
* enforce <T, I> for Event and Config, impl test
* add origin, log, inherent to test
* test more code generation
* basic storage test
* fix typo
* rename a few imports and field
* delete wip test in example and runtime
* change default prefix to make it backward compatible with test
* rename Instance to I and Instantiable to Instance
note: the name of generic parameter I is only enforce by decl_module!
and this could be rewritten
* doc
* clean old TODOs
* update parity-codec to 3.2
* update node impl version + builds
* fix warning
* fix unrelated grandpa test
* refactor code
This commit is contained in:
@@ -52,17 +52,17 @@ macro_rules! __runtime_modules_to_metadata {
|
||||
(
|
||||
$runtime: ident;
|
||||
$( $metadata:expr ),*;
|
||||
$mod:ident::$module:ident $(with)+ $($kw:ident)*,
|
||||
$mod:ident::$module:ident $( < $instance:ident > )? $(with)+ $($kw:ident)*,
|
||||
$( $rest:tt )*
|
||||
) => {
|
||||
$crate::__runtime_modules_to_metadata!(
|
||||
$runtime;
|
||||
$( $metadata, )* $crate::metadata::ModuleMetadata {
|
||||
name: $crate::metadata::DecodeDifferent::Encode(stringify!($mod)),
|
||||
prefix: $crate::__runtime_modules_to_metadata_calls_storagename!($mod, $module, $runtime, $(with $kw)*),
|
||||
storage: $crate::__runtime_modules_to_metadata_calls_storage!($mod, $module, $runtime, $(with $kw)*),
|
||||
calls: $crate::__runtime_modules_to_metadata_calls_call!($mod, $module, $runtime, $(with $kw)*),
|
||||
event: $crate::__runtime_modules_to_metadata_calls_event!($mod, $module, $runtime, $(with $kw)*),
|
||||
prefix: $crate::__runtime_modules_to_metadata_calls_storagename!($mod, $module $( <$instance> )?, $runtime, $(with $kw)*),
|
||||
storage: $crate::__runtime_modules_to_metadata_calls_storage!($mod, $module $( <$instance> )?, $runtime, $(with $kw)*),
|
||||
calls: $crate::__runtime_modules_to_metadata_calls_call!($mod, $module $( <$instance> )?, $runtime, $(with $kw)*),
|
||||
event: $crate::__runtime_modules_to_metadata_calls_event!($mod, $module $( <$instance> )?, $runtime, $(with $kw)*),
|
||||
};
|
||||
$( $rest )*
|
||||
)
|
||||
@@ -81,7 +81,7 @@ macro_rules! __runtime_modules_to_metadata_calls_call {
|
||||
// skip system
|
||||
(
|
||||
system,
|
||||
$skip_module: ident,
|
||||
$skip_module: ident $( <$instance:ident> )?,
|
||||
$skip_runtime: ident,
|
||||
with Call
|
||||
$(with $kws:ident)*
|
||||
@@ -90,29 +90,29 @@ macro_rules! __runtime_modules_to_metadata_calls_call {
|
||||
};
|
||||
(
|
||||
$mod: ident,
|
||||
$module: ident,
|
||||
$module: ident $( <$instance:ident> )?,
|
||||
$runtime: ident,
|
||||
with Call
|
||||
$(with $kws:ident)*
|
||||
) => {
|
||||
Some($crate::metadata::DecodeDifferent::Encode(
|
||||
$crate::metadata::FnEncode(
|
||||
$mod::$module::<$runtime>::call_functions
|
||||
$mod::$module::<$runtime $(, $mod::$instance )?>::call_functions
|
||||
)
|
||||
))
|
||||
};
|
||||
(
|
||||
$mod: ident,
|
||||
$module: ident,
|
||||
$module: ident $( <$instance:ident> )?,
|
||||
$runtime: ident,
|
||||
with $_:ident
|
||||
$(with $kws:ident)*
|
||||
) => {
|
||||
$crate::__runtime_modules_to_metadata_calls_call!( $mod, $module, $runtime, $(with $kws)* );
|
||||
$crate::__runtime_modules_to_metadata_calls_call!( $mod, $module $( <$instance> )?, $runtime, $(with $kws)* );
|
||||
};
|
||||
(
|
||||
$mod: ident,
|
||||
$module: ident,
|
||||
$module: ident $( <$instance:ident> )?,
|
||||
$runtime: ident,
|
||||
) => {
|
||||
None
|
||||
@@ -125,7 +125,7 @@ macro_rules! __runtime_modules_to_metadata_calls_call {
|
||||
macro_rules! __runtime_modules_to_metadata_calls_event {
|
||||
(
|
||||
$mod: ident,
|
||||
$module: ident,
|
||||
$module: ident $( <$instance:ident> )?,
|
||||
$runtime: ident,
|
||||
with Event
|
||||
$(with $kws:ident)*
|
||||
@@ -133,23 +133,23 @@ macro_rules! __runtime_modules_to_metadata_calls_event {
|
||||
Some($crate::metadata::DecodeDifferent::Encode(
|
||||
$crate::metadata::FnEncode(
|
||||
$crate::paste::expr!{
|
||||
$runtime:: [< __module_events_ $mod >]
|
||||
$runtime:: [< __module_events_ $mod $(_ $instance)?>]
|
||||
}
|
||||
)
|
||||
))
|
||||
};
|
||||
(
|
||||
$mod: ident,
|
||||
$module: ident,
|
||||
$module: ident $( <$instance:ident> )?,
|
||||
$runtime: ident,
|
||||
with $_:ident
|
||||
$(with $kws:ident)*
|
||||
) => {
|
||||
$crate::__runtime_modules_to_metadata_calls_event!( $mod, $module, $runtime, $(with $kws)* );
|
||||
$crate::__runtime_modules_to_metadata_calls_event!( $mod, $module $( <$instance> )?, $runtime, $(with $kws)* );
|
||||
};
|
||||
(
|
||||
$mod: ident,
|
||||
$module: ident,
|
||||
$module: ident $( <$instance:ident> )?,
|
||||
$runtime: ident,
|
||||
) => {
|
||||
None
|
||||
@@ -161,29 +161,29 @@ macro_rules! __runtime_modules_to_metadata_calls_event {
|
||||
macro_rules! __runtime_modules_to_metadata_calls_storagename {
|
||||
(
|
||||
$mod: ident,
|
||||
$module: ident,
|
||||
$module: ident $( <$instance:ident> )?,
|
||||
$runtime: ident,
|
||||
with Storage
|
||||
$(with $kws:ident)*
|
||||
) => {
|
||||
$crate::metadata::DecodeDifferent::Encode(
|
||||
$crate::metadata::FnEncode(
|
||||
$mod::$module::<$runtime>::store_metadata_name
|
||||
$mod::$module::<$runtime $(, $mod::$instance )?>::store_metadata_name
|
||||
)
|
||||
)
|
||||
};
|
||||
(
|
||||
$mod: ident,
|
||||
$module: ident,
|
||||
$module: ident $( <$instance:ident> )?,
|
||||
$runtime: ident,
|
||||
with $_:ident
|
||||
$(with $kws:ident)*
|
||||
) => {
|
||||
$crate::__runtime_modules_to_metadata_calls_storagename!( $mod, $module, $runtime, $(with $kws)* );
|
||||
$crate::__runtime_modules_to_metadata_calls_storagename!( $mod, $module $( <$instance> )?, $runtime, $(with $kws)* );
|
||||
};
|
||||
(
|
||||
$mod: ident,
|
||||
$module: ident,
|
||||
$module: ident $( <$instance:ident> )?,
|
||||
$runtime: ident,
|
||||
) => {
|
||||
$crate::metadata::DecodeDifferent::Encode(
|
||||
@@ -197,29 +197,29 @@ macro_rules! __runtime_modules_to_metadata_calls_storagename {
|
||||
macro_rules! __runtime_modules_to_metadata_calls_storage {
|
||||
(
|
||||
$mod: ident,
|
||||
$module: ident,
|
||||
$module: ident $( <$instance:ident> )?,
|
||||
$runtime: ident,
|
||||
with Storage
|
||||
$(with $kws:ident)*
|
||||
) => {
|
||||
Some($crate::metadata::DecodeDifferent::Encode(
|
||||
$crate::metadata::FnEncode(
|
||||
$mod::$module::<$runtime>::store_metadata_functions
|
||||
$mod::$module::<$runtime $(, $mod::$instance )?>::store_metadata_functions
|
||||
)
|
||||
))
|
||||
};
|
||||
(
|
||||
$mod: ident,
|
||||
$module: ident,
|
||||
$module: ident $( <$instance:ident> )?,
|
||||
$runtime: ident,
|
||||
with $_:ident
|
||||
$(with $kws:ident)*
|
||||
) => {
|
||||
$crate::__runtime_modules_to_metadata_calls_storage!( $mod, $module, $runtime, $(with $kws)* );
|
||||
$crate::__runtime_modules_to_metadata_calls_storage!( $mod, $module $( <$instance> )?, $runtime, $(with $kws)* );
|
||||
};
|
||||
(
|
||||
$mod: ident,
|
||||
$module: ident,
|
||||
$module: ident $( <$instance:ident> )?,
|
||||
$runtime: ident,
|
||||
) => {
|
||||
None
|
||||
|
||||
Reference in New Issue
Block a user