mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-30 14:01:02 +00:00
refactor overseer into proc-macro based pattern (#2962)
This commit is contained in:
committed by
GitHub
parent
2510bfc5d7
commit
3c9104daff
@@ -0,0 +1,38 @@
|
||||
#![allow(dead_code)]
|
||||
|
||||
use polkadot_overseer_gen::*;
|
||||
|
||||
#[derive(Default)]
|
||||
struct AwesomeSubSys;
|
||||
|
||||
#[derive(Default)]
|
||||
struct AwesomeSubSys2;
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
struct SigSigSig;
|
||||
|
||||
struct Event;
|
||||
|
||||
#[derive(Clone)]
|
||||
struct MsgStrukt(u8);
|
||||
|
||||
#[overlord(signal=SigSigSig, event=Event, gen=AllMessages, error=OverseerError)]
|
||||
struct Overseer {
|
||||
#[subsystem(MsgStrukt)]
|
||||
sub0: AwesomeSubSys,
|
||||
|
||||
#[subsystem(MsgStrukt)]
|
||||
sub1: AwesomeSubSys2,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
struct DummySpawner;
|
||||
|
||||
struct DummyCtx;
|
||||
|
||||
fn main() {
|
||||
let overseer = Overseer::<_,_>::builder()
|
||||
.sub0(AwesomeSubSys::default())
|
||||
.spawner(DummySpawner)
|
||||
.build(|| -> DummyCtx { DummyCtx } );
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
error[E0119]: conflicting implementations of trait `std::convert::From<MsgStrukt>` for type `AllMessages`
|
||||
--> $DIR/err-01-duplicate-consumer.rs:19:1
|
||||
|
|
||||
19 | #[overlord(signal=SigSigSig, event=Event, gen=AllMessages, error=OverseerError)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
| |
|
||||
| first implementation here
|
||||
| conflicting implementation for `AllMessages`
|
||||
|
|
||||
= note: this error originates in an attribute macro (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||
|
||||
error[E0119]: conflicting implementations of trait `polkadot_overseer_gen::SubsystemSender<MsgStrukt>` for type `OverseerSubsystemSender`
|
||||
--> $DIR/err-01-duplicate-consumer.rs:19:1
|
||||
|
|
||||
19 | #[overlord(signal=SigSigSig, event=Event, gen=AllMessages, error=OverseerError)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
| |
|
||||
| first implementation here
|
||||
| conflicting implementation for `OverseerSubsystemSender`
|
||||
|
|
||||
= note: this error originates in an attribute macro (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||
@@ -0,0 +1,32 @@
|
||||
#![allow(dead_code)]
|
||||
|
||||
use polkadot_overseer_gen::*;
|
||||
|
||||
#[derive(Default)]
|
||||
struct AwesomeSubSys;
|
||||
|
||||
struct SigSigSig;
|
||||
|
||||
struct Event;
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
struct MsgStrukt(u8);
|
||||
|
||||
#[overlord(signal=SigSigSig, event=Event, gen=AllMessages, error=OverseerError)]
|
||||
enum Overseer {
|
||||
#[subsystem(MsgStrukt)]
|
||||
Sub0(AwesomeSubSys),
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
struct DummySpawner;
|
||||
|
||||
struct DummyCtx;
|
||||
|
||||
fn main() {
|
||||
let overseer = Overseer::<_,_>::builder()
|
||||
.sub0(AwesomeSubSys::default())
|
||||
.i_like_pie(std::f64::consts::PI)
|
||||
.spawner(DummySpawner)
|
||||
.build(|| -> DummyCtx { DummyCtx } );
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
error: expected `struct`
|
||||
--> $DIR/err-02-enum.rs:16:1
|
||||
|
|
||||
16 | enum Overseer {
|
||||
| ^^^^
|
||||
|
||||
error[E0433]: failed to resolve: use of undeclared type `Overseer`
|
||||
--> $DIR/err-02-enum.rs:27:17
|
||||
|
|
||||
27 | let overseer = Overseer::<_,_>::builder()
|
||||
| ^^^^^^^^ use of undeclared type `Overseer`
|
||||
@@ -0,0 +1,39 @@
|
||||
#![allow(dead_code)]
|
||||
|
||||
use polkadot_overseer_gen::*;
|
||||
|
||||
#[derive(Default)]
|
||||
struct AwesomeSubSys;
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
struct SigSigSig;
|
||||
|
||||
struct Event;
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
struct MsgStrukt(u8);
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
struct MsgStrukt2(f64);
|
||||
|
||||
#[overlord(signal=SigSigSig, event=Event, gen=AllMessages, error=OverseerError)]
|
||||
struct Overseer {
|
||||
#[subsystem(MsgStrukt)]
|
||||
sub0: AwesomeSubSys,
|
||||
|
||||
#[subsystem(MsgStrukt2)]
|
||||
sub1: AwesomeSubSys,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
struct DummySpawner;
|
||||
|
||||
struct DummyCtx;
|
||||
|
||||
fn main() {
|
||||
let overseer = Overseer::<_,_>::builder()
|
||||
.sub0(AwesomeSubSys::default())
|
||||
.i_like_pie(std::f64::consts::PI)
|
||||
.spawner(DummySpawner)
|
||||
.build(|| -> DummyCtx { DummyCtx } );
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
error: Duplicate subsystem names `AwesomeSubSys`
|
||||
--> $DIR/err-03-subsys-twice.rs:25:8
|
||||
|
|
||||
25 | sub1: AwesomeSubSys,
|
||||
| ^^^^^^^^^^^^^
|
||||
|
||||
error: previously defined here.
|
||||
--> $DIR/err-03-subsys-twice.rs:22:8
|
||||
|
|
||||
22 | sub0: AwesomeSubSys,
|
||||
| ^^^^^^^^^^^^^
|
||||
|
||||
error[E0433]: failed to resolve: use of undeclared type `Overseer`
|
||||
--> $DIR/err-03-subsys-twice.rs:34:17
|
||||
|
|
||||
34 | let overseer = Overseer::<_,_>::builder()
|
||||
| ^^^^^^^^ use of undeclared type `Overseer`
|
||||
@@ -0,0 +1,36 @@
|
||||
#![allow(dead_code)]
|
||||
|
||||
use polkadot_overseer_gen::*;
|
||||
|
||||
#[derive(Default)]
|
||||
struct AwesomeSubSys;
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
struct SigSigSig;
|
||||
|
||||
struct Event;
|
||||
|
||||
#[derive(Clone)]
|
||||
struct MsgStrukt(u8);
|
||||
|
||||
#[overlord(signal=SigSigSig, event=Event, gen=AllMessages)]
|
||||
struct Overseer {
|
||||
#[subsystem(no_dispatch, MsgStrukt)]
|
||||
sub0: AwesomeSubSys,
|
||||
|
||||
i_like_pie: f64,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
struct DummySpawner;
|
||||
|
||||
struct DummyCtx;
|
||||
|
||||
fn main() {
|
||||
let _ = Overseer::builder()
|
||||
.sub0(AwesomeSubSys::default())
|
||||
.i_like_pie(std::f64::consts::PI)
|
||||
.spawner(DummySpawner)
|
||||
.build()
|
||||
.unwrap();
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
error: Must declare the overseer error type via `error=..`.
|
||||
--> $DIR/err-04-missing-error.rs:16:1
|
||||
|
|
||||
16 | #[overlord(signal=SigSigSig, event=Event, gen=AllMessages)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: this error originates in an attribute macro (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||
|
||||
error[E0433]: failed to resolve: use of undeclared type `Overseer`
|
||||
--> $DIR/err-04-missing-error.rs:30:10
|
||||
|
|
||||
30 | let _ = Overseer::builder()
|
||||
| ^^^^^^^^ use of undeclared type `Overseer`
|
||||
Reference in New Issue
Block a user