Skip to content
Snippets Groups Projects
Commit ea868b6e authored by Xiliang Chen's avatar Xiliang Chen Committed by Bastian Köcher
Browse files

allow trailling comma in decl_event (#2117)


* allow trailling comma in decl_event

* Update srml/support/src/event.rs

Co-Authored-By: default avatarxlc <xlchen1291@gmail.com>

* Update srml/support/src/event.rs

Co-Authored-By: default avatarxlc <xlchen1291@gmail.com>

* Update srml/support/src/event.rs

Co-Authored-By: default avatarxlc <xlchen1291@gmail.com>

* Update srml/support/src/event.rs

Co-Authored-By: default avatarxlc <xlchen1291@gmail.com>

* Update srml/support/src/event.rs

Co-Authored-By: default avatarxlc <xlchen1291@gmail.com>

* bump version and update wasm
parent e22b4917
No related merge requests found
......@@ -59,7 +59,7 @@ pub const VERSION: RuntimeVersion = RuntimeVersion {
impl_name: create_runtime_str!("substrate-node"),
authoring_version: 10,
spec_version: 48,
impl_version: 48,
impl_version: 49,
apis: RUNTIME_API_VERSIONS,
};
......
No preview for this file type
......@@ -183,79 +183,79 @@ macro_rules! __decl_generic_event {
{};
);
};
// Parse named
// Finish formatting on an unnamed one
(@format_generic
$(#[$attr:meta])*;
$event_generic_param:ident;
$($instance:ident $( = $event_default_instance:path)? )?;
{ $generic_rename:ident = $generic_type:ty, $($rest:tt)* };
{ <$generic:ident as $trait:path>::$trait_type:ident $(,)? { $( $events:tt )* } };
{$( $parsed:tt)*};
) => {
$crate::__decl_generic_event!(@format_generic
$crate::__decl_generic_event!(@generate
$( #[ $attr ] )*;
$event_generic_param;
$($instance $( = $event_default_instance)? )?;
{ $($rest)* };
{ $($parsed)*, $generic_rename = $generic_type };
{ $($events)* };
{ $($parsed)*, $trait_type = <$generic as $trait>::$trait_type };
);
};
// Parse unnamed
// Finish formatting on a named one
(@format_generic
$(#[$attr:meta])*;
$event_generic_param:ident;
$($instance:ident $( = $event_default_instance:path)? )?;
{ <$generic:ident as $trait:path>::$trait_type:ident, $($rest:tt)* };
{$($parsed:tt)*};
{ $generic_rename:ident = $generic_type:ty $(,)? { $( $events:tt )* } };
{ $($parsed:tt)* };
) => {
$crate::__decl_generic_event!(@format_generic
$( #[ $attr ] )*;
$crate::__decl_generic_event!(@generate
$(#[$attr])*;
$event_generic_param;
$($instance $( = $event_default_instance)? )?;
{ $($rest)* };
{ $($parsed)*, $trait_type = <$generic as $trait>::$trait_type };
{ $($events)* };
{ $($parsed)*, $generic_rename = $generic_type };
);
};
// Unnamed type can't be parsed
// Parse named
(@format_generic
$(#[$attr:meta])*;
$event_generic_param:ident;
$($instance:ident $( = $event_default_instance:path)? )?;
{ $generic_type:ty, $($rest:tt)* };
{$($parsed:tt)*};
{ $generic_rename:ident = $generic_type:ty, $($rest:tt)* };
{$( $parsed:tt)*};
) => {
$crate::__decl_generic_event!(@cannot_parse $generic_type);
$crate::__decl_generic_event!(@format_generic
$( #[ $attr ] )*;
$event_generic_param;
$( $instance $( = $event_default_instance)? )?;
{ $($rest)* };
{ $($parsed)*, $generic_rename = $generic_type };
);
};
// Finish formatting on an unnamed one
// Parse unnamed
(@format_generic
$(#[$attr:meta])*;
$event_generic_param:ident;
$($instance:ident $( = $event_default_instance:path)? )?;
{ <$generic:ident as $trait:path>::$trait_type:ident { $( $events:tt )* } };
{$( $parsed:tt)*};
{ <$generic:ident as $trait:path>::$trait_type:ident, $($rest:tt)* };
{$($parsed:tt)*};
) => {
$crate::__decl_generic_event!(@generate
$crate::__decl_generic_event!(@format_generic
$( #[ $attr ] )*;
$event_generic_param;
$($instance $( = $event_default_instance)? )?;
{ $($events)* };
{ $($parsed)*, $trait_type = <$generic as $trait>::$trait_type};
{ $($rest)* };
{ $($parsed)*, $trait_type = <$generic as $trait>::$trait_type };
);
};
// Finish formatting on a named one
// Unnamed type can't be parsed
(@format_generic
$(#[$attr:meta])*;
$event_generic_param:ident;
$($instance:ident $( = $event_default_instance:path)? )?;
{ $generic_rename:ident = $generic_type:ty { $( $events:tt )* } };
{$( $parsed:tt)*};
{ $generic_type:ty, $($rest:tt)* };
{ $($parsed:tt)* };
) => {
$crate::__decl_generic_event!(@generate
$(#[$attr])*;
$event_generic_param;
$($instance $( = $event_default_instance)? )?;
{ $($events)* };
{ $($parsed)*, $generic_rename = $generic_type};
);
$crate::__decl_generic_event!(@cannot_parse $generic_type);
};
// Final unnamed type can't be parsed
(@format_generic
......@@ -599,6 +599,50 @@ mod tests {
);
}
mod event_module4 {
pub trait Trait {
type Origin;
type Balance;
type BlockNumber;
}
decl_module! {
pub struct Module<T: Trait> for enum Call where origin: T::Origin {}
}
decl_event!(
/// Event finish formatting on an unnamed one with trailling comma
pub enum Event<T> where
<T as Trait>::Balance,
<T as Trait>::Origin,
{
TestEvent(Balance, Origin),
}
);
}
mod event_module5 {
pub trait Trait {
type Origin;
type Balance;
type BlockNumber;
}
decl_module! {
pub struct Module<T: Trait> for enum Call where origin: T::Origin {}
}
decl_event!(
/// Event finish formatting on an named one with trailling comma
pub enum Event<T> where
BalanceRenamed = <T as Trait>::Balance,
OriginRenamed = <T as Trait>::Origin,
{
TestEvent(BalanceRenamed, OriginRenamed),
}
);
}
#[derive(Debug, Clone, PartialEq, Eq, Encode, Decode, Serialize)]
pub struct TestRuntime;
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment