Skip to content
This repository was archived by the owner on Nov 15, 2023. It is now read-only.

Commit a61b592

Browse files
authored
Let construct_runtime! generate ALL_MODULES as nested tuples (#3732)
So, instead of: `type ALL_MODULES = (Module1, Module2, Module3)`; Generate it like this: `type ALL_MODULES = ((Module1, Module2), Module3,);` This should make `construct_runtime!` support an "unlimited" number of modules.
1 parent 7fc0a91 commit a61b592

File tree

2 files changed

+30
-2
lines changed

2 files changed

+30
-2
lines changed

srml/sudo/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ use rstd::prelude::*;
9090
use sr_primitives::{
9191
traits::{StaticLookup, Dispatchable}, weights::SimpleDispatchInfo, DispatchError,
9292
};
93-
use support::{StorageValue, Parameter, decl_module, decl_event, decl_storage, ensure};
93+
use support::{Parameter, decl_module, decl_event, decl_storage, ensure};
9494
use system::ensure_signed;
9595

9696
pub trait Trait: system::Trait {

srml/support/src/runtime.rs

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,7 @@ macro_rules! construct_runtime {
220220
$runtime;
221221
;
222222
{};
223+
{};
223224
$(
224225
$name: $module:: $( < $module_instance >:: )? { $( $modules ),* },
225226
)*
@@ -434,20 +435,42 @@ macro_rules! __decl_all_modules {
434435
$runtime:ident;
435436
;
436437
{ $( $parsed:tt )* };
438+
{ $( $parsed_nested:tt )* };
437439
System: $module:ident::{ Module $(, $modules:ident )* },
438440
$( $rest:tt )*
439441
) => {
440442
$crate::__decl_all_modules!(
441443
$runtime;
442444
$module;
443445
{ $( $parsed )* };
446+
{ $( $parsed_nested )* };
447+
$( $rest )*
448+
);
449+
};
450+
(
451+
$runtime:ident;
452+
$( $system:ident )?;
453+
{ $( $parsed:tt )* };
454+
{};
455+
$name:ident: $module:ident:: $( < $module_instance:ident >:: )? { Module $(, $modules:ident )* },
456+
$( $rest:tt )*
457+
) => {
458+
$crate::__decl_all_modules!(
459+
$runtime;
460+
$( $system )?;
461+
{
462+
$( $parsed )*
463+
$module::$name $(<$module_instance>)?,
464+
};
465+
{ $name };
444466
$( $rest )*
445467
);
446468
};
447469
(
448470
$runtime:ident;
449471
$( $system:ident )?;
450472
{ $( $parsed:tt )* };
473+
{ $( $parsed_nested:tt )* };
451474
$name:ident: $module:ident:: $( < $module_instance:ident >:: )? { Module $(, $modules:ident )* },
452475
$( $rest:tt )*
453476
) => {
@@ -458,20 +481,23 @@ macro_rules! __decl_all_modules {
458481
$( $parsed )*
459482
$module::$name $(<$module_instance>)?,
460483
};
484+
{ ( $( $parsed_nested )*, $name, ) };
461485
$( $rest )*
462486
);
463487
};
464488
(
465489
$runtime:ident;
466490
$( $system:ident )?;
467491
{ $( $parsed:tt )* };
492+
{ $( $parsed_nested:tt )* };
468493
$name:ident: $module:ident:: $( < $module_instance:ident >:: )? { $ignore:ident $(, $modules:ident )* },
469494
$( $rest:tt )*
470495
) => {
471496
$crate::__decl_all_modules!(
472497
$runtime;
473498
$( $system )?;
474499
{ $( $parsed )* };
500+
{ $( $parsed_nested )* };
475501
$name: $module::{ $( $modules ),* },
476502
$( $rest )*
477503
);
@@ -487,19 +513,21 @@ macro_rules! __decl_all_modules {
487513
$runtime;
488514
$( $system )?;
489515
{ $( $parsed )* };
516+
{ $( $parsed_nested )* };
490517
$( $rest )*
491518
);
492519
};
493520
(
494521
$runtime:ident;
495522
$system:ident;
496523
{ $( $parsed_module:ident :: $parsed_name:ident $(<$instance:ident>)? ,)*};
524+
{ $( $parsed_nested:tt )* };
497525
) => {
498526
pub type System = system::Module<$runtime>;
499527
$(
500528
pub type $parsed_name = $parsed_module::Module<$runtime $(, $parsed_module::$instance )?>;
501529
)*
502-
type AllModules = ( $( $parsed_name, )* );
530+
type AllModules = ( $( $parsed_nested )* );
503531
}
504532
}
505533

0 commit comments

Comments
 (0)