decl_module! print better error on duplicate reserved keyword (#6384)

* `decl_module!` print better error on duplicate reserved keyword

This prints a better error message on duplicated reserved keywords,
instead of complaining because of missing `origin`.

* Review feedback
This commit is contained in:
Bastian Köcher
2020-06-18 09:35:18 +02:00
committed by GitHub
parent fec43fe6d7
commit 325dab19cc
6 changed files with 233 additions and 1 deletions
@@ -0,0 +1,7 @@
frame_support::decl_module! {
pub struct Module<T: Trait> for enum Call where origin: T::Origin {
fn integrity_test() {}
fn integrity_test() {}
}
}
@@ -0,0 +1,25 @@
error: `integrity_test` can only be passed once as input.
--> $DIR/reserved_keyword_two_times_integrity_test.rs:1:1
|
1 | / frame_support::decl_module! {
2 | | pub struct Module<T: Trait> for enum Call where origin: T::Origin {
3 | | fn integrity_test() {}
4 | |
5 | | fn integrity_test() {}
6 | | }
7 | | }
| |_^
|
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0601]: `main` function not found in crate `$CRATE`
--> $DIR/reserved_keyword_two_times_integrity_test.rs:1:1
|
1 | / frame_support::decl_module! {
2 | | pub struct Module<T: Trait> for enum Call where origin: T::Origin {
3 | | fn integrity_test() {}
4 | |
5 | | fn integrity_test() {}
6 | | }
7 | | }
| |_^ consider adding a `main` function to `$DIR/tests/decl_module_ui/reserved_keyword_two_times_integrity_test.rs`
@@ -0,0 +1,11 @@
frame_support::decl_module! {
pub struct Module<T: Trait> for enum Call where origin: T::Origin {
fn on_initialize() -> Weight {
0
}
fn on_initialize() -> Weight {
0
}
}
}
@@ -0,0 +1,25 @@
error: `on_initialize` can only be passed once as input.
--> $DIR/reserved_keyword_two_times_on_initialize.rs:1:1
|
1 | / frame_support::decl_module! {
2 | | pub struct Module<T: Trait> for enum Call where origin: T::Origin {
3 | | fn on_initialize() -> Weight {
4 | | 0
... |
10 | | }
11 | | }
| |_^
|
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0601]: `main` function not found in crate `$CRATE`
--> $DIR/reserved_keyword_two_times_on_initialize.rs:1:1
|
1 | / frame_support::decl_module! {
2 | | pub struct Module<T: Trait> for enum Call where origin: T::Origin {
3 | | fn on_initialize() -> Weight {
4 | | 0
... |
10 | | }
11 | | }
| |_^ consider adding a `main` function to `$DIR/tests/decl_module_ui/reserved_keyword_two_times_on_initialize.rs`