[INFO] cloning repository https://github.com/Yatekii/reactor [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Yatekii/reactor" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FYatekii%2Freactor", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FYatekii%2Freactor'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 69903568cf5f360161f1b23e37d929e54a4885c0 [INFO] testing Yatekii/reactor against 1.60.0 for beta-1.61-1 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FYatekii%2Freactor" "/workspace/builds/worker-25/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-25/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/Yatekii/reactor on toolchain 1.60.0 [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+1.60.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/Yatekii/reactor [INFO] finished tweaking git repo https://github.com/Yatekii/reactor [INFO] tweaked toml for git repo https://github.com/Yatekii/reactor written to /workspace/builds/worker-25/source/Cargo.toml [INFO] crate git repo https://github.com/Yatekii/reactor already has a lockfile, it will not be regenerated [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+1.60.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-25/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-25/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:b0c94ce3c1162fcb8e57cac5b65ec2f72eabb1eebea4fcc35e269e823f681646" "/opt/rustwide/cargo-home/bin/cargo" "+1.60.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 368c1d9d7d2e3d895c578c1f85743ad6532c89d438976b151baae72f3825040a [INFO] running `Command { std: "docker" "start" "-a" "368c1d9d7d2e3d895c578c1f85743ad6532c89d438976b151baae72f3825040a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "368c1d9d7d2e3d895c578c1f85743ad6532c89d438976b151baae72f3825040a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "368c1d9d7d2e3d895c578c1f85743ad6532c89d438976b151baae72f3825040a", kill_on_drop: false }` [INFO] [stdout] 368c1d9d7d2e3d895c578c1f85743ad6532c89d438976b151baae72f3825040a [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-25/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-25/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:b0c94ce3c1162fcb8e57cac5b65ec2f72eabb1eebea4fcc35e269e823f681646" "/opt/rustwide/cargo-home/bin/cargo" "+1.60.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 0132c7dadb5a6e60e77eeaec928e75101a1a80213132d14144b72f9d9f7ff6c9 [INFO] running `Command { std: "docker" "start" "-a" "0132c7dadb5a6e60e77eeaec928e75101a1a80213132d14144b72f9d9f7ff6c9", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Compiling proc-macro2 v0.4.27 [INFO] [stderr] Compiling syn v0.15.30 [INFO] [stderr] Compiling reactor v0.1.0 (/opt/rustwide/workdir/reactor) [INFO] [stderr] Compiling quote v0.6.11 [INFO] [stderr] Compiling reactor-derive v0.1.0 (/opt/rustwide/workdir/reactor-derive) [INFO] [stdout] warning: unnecessary parentheses around type [INFO] [stdout] --> reactor-derive/src/lib.rs:70:109 [INFO] [stdout] | [INFO] [stdout] 70 | let t = sub_state.sub_states.iter().map(|sub_state| assemble_from_sub_state(root, sub_state)).collect::<(Vec<_>)>(); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 70 - let t = sub_state.sub_states.iter().map(|sub_state| assemble_from_sub_state(root, sub_state)).collect::<(Vec<_>)>(); [INFO] [stdout] 70 + let t = sub_state.sub_states.iter().map(|sub_state| assemble_from_sub_state(root, sub_state)).collect::>(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 1 warning emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling example v0.1.0 (/opt/rustwide/workdir/example) [INFO] [stdout] SubState { [INFO] [stdout] ident: Ident { [INFO] [stdout] ident: "Outer2", [INFO] [stdout] span: #0 bytes(175..181), [INFO] [stdout] }, [INFO] [stdout] sub_states: [ [INFO] [stdout] SubState { [INFO] [stdout] ident: Ident { [INFO] [stdout] ident: "Bla", [INFO] [stdout] span: #0 bytes(197..200), [INFO] [stdout] }, [INFO] [stdout] sub_states: [ [INFO] [stdout] SubState { [INFO] [stdout] ident: Ident { [INFO] [stdout] ident: "A1", [INFO] [stdout] span: #0 bytes(215..217), [INFO] [stdout] }, [INFO] [stdout] sub_states: [], [INFO] [stdout] }, [INFO] [stdout] SubState { [INFO] [stdout] ident: Ident { [INFO] [stdout] ident: "B1", [INFO] [stdout] span: #0 bytes(219..221), [INFO] [stdout] }, [INFO] [stdout] sub_states: [], [INFO] [stdout] }, [INFO] [stdout] ], [INFO] [stdout] }, [INFO] [stdout] SubState { [INFO] [stdout] ident: Ident { [INFO] [stdout] ident: "Blo", [INFO] [stdout] span: #0 bytes(247..250), [INFO] [stdout] }, [INFO] [stdout] sub_states: [ [INFO] [stdout] SubState { [INFO] [stdout] ident: Ident { [INFO] [stdout] ident: "D1", [INFO] [stdout] span: #0 bytes(265..267), [INFO] [stdout] }, [INFO] [stdout] sub_states: [], [INFO] [stdout] }, [INFO] [stdout] SubState { [INFO] [stdout] ident: Ident { [INFO] [stdout] ident: "E1", [INFO] [stdout] span: #0 bytes(269..271), [INFO] [stdout] }, [INFO] [stdout] sub_states: [], [INFO] [stdout] }, [INFO] [stdout] ], [INFO] [stdout] }, [INFO] [stdout] SubState { [INFO] [stdout] ident: Ident { [INFO] [stdout] ident: "C1", [INFO] [stdout] span: #0 bytes(292..294), [INFO] [stdout] }, [INFO] [stdout] sub_states: [], [INFO] [stdout] }, [INFO] [stdout] ], [INFO] [stdout] } [INFO] [stdout] #[derive(Copy, Clone, Debug)] enum Outer2 { Bla(Bla), Blo(Blo), C1(C1) } impl [INFO] [stdout] State < Event > for Outer2 where Outer2 : reactor :: base :: Actor < Event > [INFO] [stdout] { [INFO] [stdout] type State = Outer2 ; const INITIAL_STATE : Self = Outer2 :: C1(C1 {}) ; [INFO] [stdout] fn get_levels(& self, levels : & mut [core :: any :: TypeId], ptr : usize) [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Outer2 :: Bla(b) => [INFO] [stdout] { [INFO] [stdout] levels [ptr] = core :: any :: TypeId :: of :: < Outer2 > () ; [INFO] [stdout] b.get_levels(levels, ptr + 1) ; [INFO] [stdout] }, Outer2 :: Blo(b) => [INFO] [stdout] { [INFO] [stdout] levels [ptr] = core :: any :: TypeId :: of :: < Outer2 > () ; [INFO] [stdout] b.get_levels(levels, ptr + 1) ; [INFO] [stdout] }, Outer2 :: C1(b) => [INFO] [stdout] { [INFO] [stdout] levels [ptr] = core :: any :: TypeId :: of :: < Outer2 > () ; [INFO] [stdout] b.get_levels(levels, ptr + 1) ; [INFO] [stdout] }, [INFO] [stdout] } [INFO] [stdout] } fn super_enter(& self, level : i32) [INFO] [stdout] { [INFO] [stdout] if level > 0 [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Outer2 :: Bla(b) => { b.super_enter(level - 1) }, Outer2 :: [INFO] [stdout] Blo(b) => { b.super_enter(level - 1) }, Outer2 :: C1(b) => [INFO] [stdout] { b.super_enter(level - 1) }, [INFO] [stdout] } [INFO] [stdout] } else [INFO] [stdout] { [INFO] [stdout] self.enter() ; match self [INFO] [stdout] { [INFO] [stdout] Outer2 :: Bla(b) => { b.super_enter(level - 1) }, Outer2 :: [INFO] [stdout] Blo(b) => { b.super_enter(level - 1) }, Outer2 :: C1(b) => [INFO] [stdout] { b.super_enter(level - 1) }, [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } fn super_handle(& self, event : Event) -> EventResult << Self as State < [INFO] [stdout] Event >> :: State > [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Outer2 :: Bla(b) => [INFO] [stdout] { [INFO] [stdout] match b.super_handle(event.clone()) [INFO] [stdout] { [INFO] [stdout] EventResult :: Handled => EventResult :: Handled, [INFO] [stdout] EventResult :: Transition(t) => EventResult :: [INFO] [stdout] Transition(t), EventResult :: NotHandled => [INFO] [stdout] self.handle(event), [INFO] [stdout] } [INFO] [stdout] }, Outer2 :: Blo(b) => [INFO] [stdout] { [INFO] [stdout] match b.super_handle(event.clone()) [INFO] [stdout] { [INFO] [stdout] EventResult :: Handled => EventResult :: Handled, [INFO] [stdout] EventResult :: Transition(t) => EventResult :: [INFO] [stdout] Transition(t), EventResult :: NotHandled => [INFO] [stdout] self.handle(event), [INFO] [stdout] } [INFO] [stdout] }, Outer2 :: C1(b) => [INFO] [stdout] { [INFO] [stdout] match b.super_handle(event.clone()) [INFO] [stdout] { [INFO] [stdout] EventResult :: Handled => EventResult :: Handled, [INFO] [stdout] EventResult :: Transition(t) => EventResult :: [INFO] [stdout] Transition(t), EventResult :: NotHandled => [INFO] [stdout] self.handle(event), [INFO] [stdout] } [INFO] [stdout] }, [INFO] [stdout] } [INFO] [stdout] } fn super_exit(& self, level : i32) [INFO] [stdout] { [INFO] [stdout] if level > 0 [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Outer2 :: Bla(b) => { b.super_exit(level - 1) }, Outer2 :: [INFO] [stdout] Blo(b) => { b.super_exit(level - 1) }, Outer2 :: C1(b) => [INFO] [stdout] { b.super_exit(level - 1) }, [INFO] [stdout] } [INFO] [stdout] } else [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Outer2 :: Bla(b) => { b.super_exit(level - 1) }, Outer2 :: [INFO] [stdout] Blo(b) => { b.super_exit(level - 1) }, Outer2 :: C1(b) => [INFO] [stdout] { b.super_exit(level - 1) }, [INFO] [stdout] } self.exit() ; [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } #[derive(Copy, Clone, Debug)] enum Bla { A1(A1), B1(B1) } impl State < Event [INFO] [stdout] > for Bla where Bla : reactor :: base :: Actor < Event > [INFO] [stdout] { [INFO] [stdout] type State = Outer2 ; const INITIAL_STATE : Self = Bla :: B1(B1 {}) ; fn [INFO] [stdout] get_levels(& self, levels : & mut [core :: any :: TypeId], ptr : usize) [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Bla :: A1(b) => [INFO] [stdout] { [INFO] [stdout] levels [ptr] = core :: any :: TypeId :: of :: < Bla > () ; [INFO] [stdout] b.get_levels(levels, ptr + 1) ; [INFO] [stdout] }, Bla :: B1(b) => [INFO] [stdout] { [INFO] [stdout] levels [ptr] = core :: any :: TypeId :: of :: < Bla > () ; [INFO] [stdout] b.get_levels(levels, ptr + 1) ; [INFO] [stdout] }, [INFO] [stdout] } [INFO] [stdout] } fn super_enter(& self, level : i32) [INFO] [stdout] { [INFO] [stdout] if level > 0 [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Bla :: A1(b) => { b.super_enter(level - 1) }, Bla :: B1(b) => [INFO] [stdout] { b.super_enter(level - 1) }, [INFO] [stdout] } [INFO] [stdout] } else [INFO] [stdout] { [INFO] [stdout] self.enter() ; match self [INFO] [stdout] { [INFO] [stdout] Bla :: A1(b) => { b.super_enter(level - 1) }, Bla :: B1(b) => [INFO] [stdout] { b.super_enter(level - 1) }, [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } fn super_handle(& self, event : Event) -> EventResult << Self as State < [INFO] [stdout] Event >> :: State > [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Bla :: A1(b) => [INFO] [stdout] { [INFO] [stdout] match b.super_handle(event.clone()) [INFO] [stdout] { [INFO] [stdout] EventResult :: Handled => EventResult :: Handled, [INFO] [stdout] EventResult :: Transition(t) => EventResult :: [INFO] [stdout] Transition(t), EventResult :: NotHandled => [INFO] [stdout] self.handle(event), [INFO] [stdout] } [INFO] [stdout] }, Bla :: B1(b) => [INFO] [stdout] { [INFO] [stdout] match b.super_handle(event.clone()) [INFO] [stdout] { [INFO] [stdout] EventResult :: Handled => EventResult :: Handled, [INFO] [stdout] EventResult :: Transition(t) => EventResult :: [INFO] [stdout] Transition(t), EventResult :: NotHandled => [INFO] [stdout] self.handle(event), [INFO] [stdout] } [INFO] [stdout] }, [INFO] [stdout] } [INFO] [stdout] } fn super_exit(& self, level : i32) [INFO] [stdout] { [INFO] [stdout] if level > 0 [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Bla :: A1(b) => { b.super_exit(level - 1) }, Bla :: B1(b) => [INFO] [stdout] { b.super_exit(level - 1) }, [INFO] [stdout] } [INFO] [stdout] } else [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Bla :: A1(b) => { b.super_exit(level - 1) }, Bla :: B1(b) => [INFO] [stdout] { b.super_exit(level - 1) }, [INFO] [stdout] } self.exit() ; [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } #[derive(Copy, Clone, Debug)] struct A1() ; impl State < Event > for A1 [INFO] [stdout] where A1 : reactor :: base :: Actor < Event > [INFO] [stdout] { [INFO] [stdout] type State = Outer2 ; const INITIAL_STATE : Self = A1 {} ; fn [INFO] [stdout] get_levels(& self, levels : & mut [core :: any :: TypeId], ptr : usize) [INFO] [stdout] { levels [ptr] = core :: any :: TypeId :: of :: < A1 > () ; } fn [INFO] [stdout] super_enter(& self, level : i32) { self.enter() } fn [INFO] [stdout] super_handle(& self, event : Event) -> EventResult << Self as State < [INFO] [stdout] Event >> :: State > { self.handle(event) } fn [INFO] [stdout] super_exit(& self, level : i32) { self.exit() } [INFO] [stdout] } #[derive(Copy, Clone, Debug)] struct B1() ; impl State < Event > for B1 [INFO] [stdout] where B1 : reactor :: base :: Actor < Event > [INFO] [stdout] { [INFO] [stdout] type State = Outer2 ; const INITIAL_STATE : Self = B1 {} ; fn [INFO] [stdout] get_levels(& self, levels : & mut [core :: any :: TypeId], ptr : usize) [INFO] [stdout] { levels [ptr] = core :: any :: TypeId :: of :: < B1 > () ; } fn [INFO] [stdout] super_enter(& self, level : i32) { self.enter() } fn [INFO] [stdout] super_handle(& self, event : Event) -> EventResult << Self as State < [INFO] [stdout] Event >> :: State > { self.handle(event) } fn [INFO] [stdout] super_exit(& self, level : i32) { self.exit() } [INFO] [stdout] } #[derive(Copy, Clone, Debug)] enum Blo { D1(D1), E1(E1) } impl State < Event [INFO] [stdout] > for Blo where Blo : reactor :: base :: Actor < Event > [INFO] [stdout] { [INFO] [stdout] type State = Outer2 ; const INITIAL_STATE : Self = Blo :: E1(E1 {}) ; fn [INFO] [stdout] get_levels(& self, levels : & mut [core :: any :: TypeId], ptr : usize) [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Blo :: D1(b) => [INFO] [stdout] { [INFO] [stdout] levels [ptr] = core :: any :: TypeId :: of :: < Blo > () ; [INFO] [stdout] b.get_levels(levels, ptr + 1) ; [INFO] [stdout] }, Blo :: E1(b) => [INFO] [stdout] { [INFO] [stdout] levels [ptr] = core :: any :: TypeId :: of :: < Blo > () ; [INFO] [stdout] b.get_levels(levels, ptr + 1) ; [INFO] [stdout] }, [INFO] [stdout] } [INFO] [stdout] } fn super_enter(& self, level : i32) [INFO] [stdout] { [INFO] [stdout] if level > 0 [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Blo :: D1(b) => { b.super_enter(level - 1) }, Blo :: E1(b) => [INFO] [stdout] { b.super_enter(level - 1) }, [INFO] [stdout] } [INFO] [stdout] } else [INFO] [stdout] { [INFO] [stdout] self.enter() ; match self [INFO] [stdout] { [INFO] [stdout] Blo :: D1(b) => { b.super_enter(level - 1) }, Blo :: E1(b) => [INFO] [stdout] { b.super_enter(level - 1) }, [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } fn super_handle(& self, event : Event) -> EventResult << Self as State < [INFO] [stdout] Event >> :: State > [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Blo :: D1(b) => [INFO] [stdout] { [INFO] [stdout] match b.super_handle(event.clone()) [INFO] [stdout] { [INFO] [stdout] EventResult :: Handled => EventResult :: Handled, [INFO] [stdout] EventResult :: Transition(t) => EventResult :: [INFO] [stdout] Transition(t), EventResult :: NotHandled => [INFO] [stdout] self.handle(event), [INFO] [stdout] } [INFO] [stdout] }, Blo :: E1(b) => [INFO] [stdout] { [INFO] [stdout] match b.super_handle(event.clone()) [INFO] [stdout] { [INFO] [stdout] EventResult :: Handled => EventResult :: Handled, [INFO] [stdout] EventResult :: Transition(t) => EventResult :: [INFO] [stdout] Transition(t), EventResult :: NotHandled => [INFO] [stdout] self.handle(event), [INFO] [stdout] } [INFO] [stdout] }, [INFO] [stdout] } [INFO] [stdout] } fn super_exit(& self, level : i32) [INFO] [stdout] { [INFO] [stdout] if level > 0 [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Blo :: D1(b) => { b.super_exit(level - 1) }, Blo :: E1(b) => [INFO] [stdout] { b.super_exit(level - 1) }, [INFO] [stdout] } [INFO] [stdout] } else [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Blo :: D1(b) => { b.super_exit(level - 1) }, Blo :: E1(b) => [INFO] [stdout] { b.super_exit(level - 1) }, [INFO] [stdout] } self.exit() ; [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } #[derive(Copy, Clone, Debug)] struct D1() ; impl State < Event > for D1 [INFO] [stdout] where D1 : reactor :: base :: Actor < Event > [INFO] [stdout] { [INFO] [stdout] type State = Outer2 ; const INITIAL_STATE : Self = D1 {} ; fn [INFO] [stdout] get_levels(& self, levels : & mut [core :: any :: TypeId], ptr : usize) [INFO] [stdout] { levels [ptr] = core :: any :: TypeId :: of :: < D1 > () ; } fn [INFO] [stdout] super_enter(& self, level : i32) { self.enter() } fn [INFO] [stdout] super_handle(& self, event : Event) -> EventResult << Self as State < [INFO] [stdout] Event >> :: State > { self.handle(event) } fn [INFO] [stdout] super_exit(& self, level : i32) { self.exit() } [INFO] [stdout] } #[derive(Copy, Clone, Debug)] struct E1() ; impl State < Event > for E1 [INFO] [stdout] where E1 : reactor :: base :: Actor < Event > [INFO] [stdout] { [INFO] [stdout] type State = Outer2 ; const INITIAL_STATE : Self = E1 {} ; fn [INFO] [stdout] get_levels(& self, levels : & mut [core :: any :: TypeId], ptr : usize) [INFO] [stdout] { levels [ptr] = core :: any :: TypeId :: of :: < E1 > () ; } fn [INFO] [stdout] super_enter(& self, level : i32) { self.enter() } fn [INFO] [stdout] super_handle(& self, event : Event) -> EventResult << Self as State < [INFO] [stdout] Event >> :: State > { self.handle(event) } fn [INFO] [stdout] super_exit(& self, level : i32) { self.exit() } [INFO] [stdout] } #[derive(Copy, Clone, Debug)] struct C1() ; impl State < Event > for C1 [INFO] [stdout] where C1 : reactor :: base :: Actor < Event > [INFO] [stdout] { [INFO] [stdout] type State = Outer2 ; const INITIAL_STATE : Self = C1 {} ; fn [INFO] [stdout] get_levels(& self, levels : & mut [core :: any :: TypeId], ptr : usize) [INFO] [stdout] { levels [ptr] = core :: any :: TypeId :: of :: < C1 > () ; } fn [INFO] [stdout] super_enter(& self, level : i32) { self.enter() } fn [INFO] [stdout] super_handle(& self, event : Event) -> EventResult << Self as State < [INFO] [stdout] Event >> :: State > { self.handle(event) } fn [INFO] [stdout] super_exit(& self, level : i32) { self.exit() } [INFO] [stdout] } #[derive(Debug)] pub struct Reactor { state : Outer2, } const [INFO] [stdout] REACTOR_MAX_LEVELS : usize = 3usize ; impl React < Event > for Reactor [INFO] [stdout] { [INFO] [stdout] fn new() -> Self [INFO] [stdout] { [INFO] [stdout] let reactor = Self { state : Outer2 :: INITIAL_STATE, } ; [INFO] [stdout] reactor.state.super_enter(0) ; reactor [INFO] [stdout] } fn react(& mut self, event : Event) [INFO] [stdout] { [INFO] [stdout] match self.state.super_handle(event) [INFO] [stdout] { [INFO] [stdout] EventResult :: Transition(new_state) => [INFO] [stdout] { [INFO] [stdout] let levels_new = & mut [INFO] [stdout] [core :: any :: TypeId :: of :: < bool > () ; [INFO] [stdout] REACTOR_MAX_LEVELS] ; let levels_old = & mut [INFO] [stdout] [core :: any :: TypeId :: of :: < bool > () ; [INFO] [stdout] REACTOR_MAX_LEVELS] ; new_state.get_levels(levels_new, 0) ; [INFO] [stdout] self.state.get_levels(levels_old, 0) ; let mut i = 0 ; while i [INFO] [stdout] < REACTOR_MAX_LEVELS [INFO] [stdout] { if levels_new [i] != levels_old [i] { break ; } i += 1 ; } [INFO] [stdout] println! ("Moving {:?} -> {:?}", self, new_state) ; [INFO] [stdout] self.state.super_exit(i as i32) ; self.state = new_state ; [INFO] [stdout] self.state.super_enter(i as i32) ; [INFO] [stdout] } _ => {}, [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 12.37s [INFO] running `Command { std: "docker" "inspect" "0132c7dadb5a6e60e77eeaec928e75101a1a80213132d14144b72f9d9f7ff6c9", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "0132c7dadb5a6e60e77eeaec928e75101a1a80213132d14144b72f9d9f7ff6c9", kill_on_drop: false }` [INFO] [stdout] 0132c7dadb5a6e60e77eeaec928e75101a1a80213132d14144b72f9d9f7ff6c9 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-25/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-25/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:b0c94ce3c1162fcb8e57cac5b65ec2f72eabb1eebea4fcc35e269e823f681646" "/opt/rustwide/cargo-home/bin/cargo" "+1.60.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 344f4137c3ea8bae00d338b97739f2852412ede4518ba9167bbe6a707ea672b3 [INFO] running `Command { std: "docker" "start" "-a" "344f4137c3ea8bae00d338b97739f2852412ede4518ba9167bbe6a707ea672b3", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Compiling reactor v0.1.0 (/opt/rustwide/workdir/reactor) [INFO] [stderr] Compiling reactor-derive v0.1.0 (/opt/rustwide/workdir/reactor-derive) [INFO] [stdout] warning: unnecessary parentheses around type [INFO] [stdout] --> reactor-derive/src/lib.rs:70:109 [INFO] [stdout] | [INFO] [stdout] 70 | let t = sub_state.sub_states.iter().map(|sub_state| assemble_from_sub_state(root, sub_state)).collect::<(Vec<_>)>(); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 70 - let t = sub_state.sub_states.iter().map(|sub_state| assemble_from_sub_state(root, sub_state)).collect::<(Vec<_>)>(); [INFO] [stdout] 70 + let t = sub_state.sub_states.iter().map(|sub_state| assemble_from_sub_state(root, sub_state)).collect::>(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling example v0.1.0 (/opt/rustwide/workdir/example) [INFO] [stdout] warning: 1 warning emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] SubState { [INFO] [stdout] ident: Ident { [INFO] [stdout] ident: "Outer2", [INFO] [stdout] span: #0 bytes(175..181), [INFO] [stdout] }, [INFO] [stdout] sub_states: [ [INFO] [stdout] SubState { [INFO] [stdout] ident: Ident { [INFO] [stdout] ident: "Bla", [INFO] [stdout] span: #0 bytes(197..200), [INFO] [stdout] }, [INFO] [stdout] sub_states: [ [INFO] [stdout] SubState { [INFO] [stdout] ident: Ident { [INFO] [stdout] ident: "A1", [INFO] [stdout] span: #0 bytes(215..217), [INFO] [stdout] }, [INFO] [stdout] sub_states: [], [INFO] [stdout] }, [INFO] [stdout] SubState { [INFO] [stdout] ident: Ident { [INFO] [stdout] ident: "B1", [INFO] [stdout] span: #0 bytes(219..221), [INFO] [stdout] }, [INFO] [stdout] sub_states: [], [INFO] [stdout] }, [INFO] [stdout] ], [INFO] [stdout] }, [INFO] [stdout] SubState { [INFO] [stdout] ident: Ident { [INFO] [stdout] ident: "Blo", [INFO] [stdout] span: #0 bytes(247..250), [INFO] [stdout] }, [INFO] [stdout] sub_states: [ [INFO] [stdout] SubState { [INFO] [stdout] ident: Ident { [INFO] [stdout] ident: "D1", [INFO] [stdout] span: #0 bytes(265..267), [INFO] [stdout] }, [INFO] [stdout] sub_states: [], [INFO] [stdout] }, [INFO] [stdout] SubState { [INFO] [stdout] ident: Ident { [INFO] [stdout] ident: "E1", [INFO] [stdout] span: #0 bytes(269..271), [INFO] [stdout] }, [INFO] [stdout] sub_states: [], [INFO] [stdout] }, [INFO] [stdout] ], [INFO] [stdout] }, [INFO] [stdout] SubState { [INFO] [stdout] ident: Ident { [INFO] [stdout] ident: "C1", [INFO] [stdout] span: #0 bytes(292..294), [INFO] [stdout] }, [INFO] [stdout] sub_states: [], [INFO] [stdout] }, [INFO] [stdout] ], [INFO] [stdout] } [INFO] [stdout] #[derive(Copy, Clone, Debug)] enum Outer2 { Bla(Bla), Blo(Blo), C1(C1) } impl [INFO] [stdout] State < Event > for Outer2 where Outer2 : reactor :: base :: Actor < Event > [INFO] [stdout] { [INFO] [stdout] type State = Outer2 ; const INITIAL_STATE : Self = Outer2 :: C1(C1 {}) ; [INFO] [stdout] fn get_levels(& self, levels : & mut [core :: any :: TypeId], ptr : usize) [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Outer2 :: Bla(b) => [INFO] [stdout] { [INFO] [stdout] levels [ptr] = core :: any :: TypeId :: of :: < Outer2 > () ; [INFO] [stdout] b.get_levels(levels, ptr + 1) ; [INFO] [stdout] }, Outer2 :: Blo(b) => [INFO] [stdout] { [INFO] [stdout] levels [ptr] = core :: any :: TypeId :: of :: < Outer2 > () ; [INFO] [stdout] b.get_levels(levels, ptr + 1) ; [INFO] [stdout] }, Outer2 :: C1(b) => [INFO] [stdout] { [INFO] [stdout] levels [ptr] = core :: any :: TypeId :: of :: < Outer2 > () ; [INFO] [stdout] b.get_levels(levels, ptr + 1) ; [INFO] [stdout] }, [INFO] [stdout] } [INFO] [stdout] } fn super_enter(& self, level : i32) [INFO] [stdout] { [INFO] [stdout] if level > 0 [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Outer2 :: Bla(b) => { b.super_enter(level - 1) }, Outer2 :: [INFO] [stdout] Blo(b) => { b.super_enter(level - 1) }, Outer2 :: C1(b) => [INFO] [stdout] { b.super_enter(level - 1) }, [INFO] [stdout] } [INFO] [stdout] } else [INFO] [stdout] { [INFO] [stdout] self.enter() ; match self [INFO] [stdout] { [INFO] [stdout] Outer2 :: Bla(b) => { b.super_enter(level - 1) }, Outer2 :: [INFO] [stdout] Blo(b) => { b.super_enter(level - 1) }, Outer2 :: C1(b) => [INFO] [stdout] { b.super_enter(level - 1) }, [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } fn super_handle(& self, event : Event) -> EventResult << Self as State < [INFO] [stdout] Event >> :: State > [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Outer2 :: Bla(b) => [INFO] [stdout] { [INFO] [stdout] match b.super_handle(event.clone()) [INFO] [stdout] { [INFO] [stdout] EventResult :: Handled => EventResult :: Handled, [INFO] [stdout] EventResult :: Transition(t) => EventResult :: [INFO] [stdout] Transition(t), EventResult :: NotHandled => [INFO] [stdout] self.handle(event), [INFO] [stdout] } [INFO] [stdout] }, Outer2 :: Blo(b) => [INFO] [stdout] { [INFO] [stdout] match b.super_handle(event.clone()) [INFO] [stdout] { [INFO] [stdout] EventResult :: Handled => EventResult :: Handled, [INFO] [stdout] EventResult :: Transition(t) => EventResult :: [INFO] [stdout] Transition(t), EventResult :: NotHandled => [INFO] [stdout] self.handle(event), [INFO] [stdout] } [INFO] [stdout] }, Outer2 :: C1(b) => [INFO] [stdout] { [INFO] [stdout] match b.super_handle(event.clone()) [INFO] [stdout] { [INFO] [stdout] EventResult :: Handled => EventResult :: Handled, [INFO] [stdout] EventResult :: Transition(t) => EventResult :: [INFO] [stdout] Transition(t), EventResult :: NotHandled => [INFO] [stdout] self.handle(event), [INFO] [stdout] } [INFO] [stdout] }, [INFO] [stdout] } [INFO] [stdout] } fn super_exit(& self, level : i32) [INFO] [stdout] { [INFO] [stdout] if level > 0 [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Outer2 :: Bla(b) => { b.super_exit(level - 1) }, Outer2 :: [INFO] [stdout] Blo(b) => { b.super_exit(level - 1) }, Outer2 :: C1(b) => [INFO] [stdout] { b.super_exit(level - 1) }, [INFO] [stdout] } [INFO] [stdout] } else [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Outer2 :: Bla(b) => { b.super_exit(level - 1) }, Outer2 :: [INFO] [stdout] Blo(b) => { b.super_exit(level - 1) }, Outer2 :: C1(b) => [INFO] [stdout] { b.super_exit(level - 1) }, [INFO] [stdout] } self.exit() ; [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } #[derive(Copy, Clone, Debug)] enum Bla { A1(A1), B1(B1) } impl State < Event [INFO] [stdout] > for Bla where Bla : reactor :: base :: Actor < Event > [INFO] [stdout] { [INFO] [stdout] type State = Outer2 ; const INITIAL_STATE : Self = Bla :: B1(B1 {}) ; fn [INFO] [stdout] get_levels(& self, levels : & mut [core :: any :: TypeId], ptr : usize) [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Bla :: A1(b) => [INFO] [stdout] { [INFO] [stdout] levels [ptr] = core :: any :: TypeId :: of :: < Bla > () ; [INFO] [stdout] b.get_levels(levels, ptr + 1) ; [INFO] [stdout] }, Bla :: B1(b) => [INFO] [stdout] { [INFO] [stdout] levels [ptr] = core :: any :: TypeId :: of :: < Bla > () ; [INFO] [stdout] b.get_levels(levels, ptr + 1) ; [INFO] [stdout] }, [INFO] [stdout] } [INFO] [stdout] } fn super_enter(& self, level : i32) [INFO] [stdout] { [INFO] [stdout] if level > 0 [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Bla :: A1(b) => { b.super_enter(level - 1) }, Bla :: B1(b) => [INFO] [stdout] { b.super_enter(level - 1) }, [INFO] [stdout] } [INFO] [stdout] } else [INFO] [stdout] { [INFO] [stdout] self.enter() ; match self [INFO] [stdout] { [INFO] [stdout] Bla :: A1(b) => { b.super_enter(level - 1) }, Bla :: B1(b) => [INFO] [stdout] { b.super_enter(level - 1) }, [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } fn super_handle(& self, event : Event) -> EventResult << Self as State < [INFO] [stdout] Event >> :: State > [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Bla :: A1(b) => [INFO] [stdout] { [INFO] [stdout] match b.super_handle(event.clone()) [INFO] [stdout] { [INFO] [stdout] EventResult :: Handled => EventResult :: Handled, [INFO] [stdout] EventResult :: Transition(t) => EventResult :: [INFO] [stdout] Transition(t), EventResult :: NotHandled => [INFO] [stdout] self.handle(event), [INFO] [stdout] } [INFO] [stdout] }, Bla :: B1(b) => [INFO] [stdout] { [INFO] [stdout] match b.super_handle(event.clone()) [INFO] [stdout] { [INFO] [stdout] EventResult :: Handled => EventResult :: Handled, [INFO] [stdout] EventResult :: Transition(t) => EventResult :: [INFO] [stdout] Transition(t), EventResult :: NotHandled => [INFO] [stdout] self.handle(event), [INFO] [stdout] } [INFO] [stdout] }, [INFO] [stdout] } [INFO] [stdout] } fn super_exit(& self, level : i32) [INFO] [stdout] { [INFO] [stdout] if level > 0 [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Bla :: A1(b) => { b.super_exit(level - 1) }, Bla :: B1(b) => [INFO] [stdout] { b.super_exit(level - 1) }, [INFO] [stdout] } [INFO] [stdout] } else [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Bla :: A1(b) => { b.super_exit(level - 1) }, Bla :: B1(b) => [INFO] [stdout] { b.super_exit(level - 1) }, [INFO] [stdout] } self.exit() ; [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } #[derive(Copy, Clone, Debug)] struct A1() ; impl State < Event > for A1 [INFO] [stdout] where A1 : reactor :: base :: Actor < Event > [INFO] [stdout] { [INFO] [stdout] type State = Outer2 ; const INITIAL_STATE : Self = A1 {} ; fn [INFO] [stdout] get_levels(& self, levels : & mut [core :: any :: TypeId], ptr : usize) [INFO] [stdout] { levels [ptr] = core :: any :: TypeId :: of :: < A1 > () ; } fn [INFO] [stdout] super_enter(& self, level : i32) { self.enter() } fn [INFO] [stdout] super_handle(& self, event : Event) -> EventResult << Self as State < [INFO] [stdout] Event >> :: State > { self.handle(event) } fn [INFO] [stdout] super_exit(& self, level : i32) { self.exit() } [INFO] [stdout] } #[derive(Copy, Clone, Debug)] struct B1() ; impl State < Event > for B1 [INFO] [stdout] where B1 : reactor :: base :: Actor < Event > [INFO] [stdout] { [INFO] [stdout] type State = Outer2 ; const INITIAL_STATE : Self = B1 {} ; fn [INFO] [stdout] get_levels(& self, levels : & mut [core :: any :: TypeId], ptr : usize) [INFO] [stdout] { levels [ptr] = core :: any :: TypeId :: of :: < B1 > () ; } fn [INFO] [stdout] super_enter(& self, level : i32) { self.enter() } fn [INFO] [stdout] super_handle(& self, event : Event) -> EventResult << Self as State < [INFO] [stdout] Event >> :: State > { self.handle(event) } fn [INFO] [stdout] super_exit(& self, level : i32) { self.exit() } [INFO] [stdout] } #[derive(Copy, Clone, Debug)] enum Blo { D1(D1), E1(E1) } impl State < Event [INFO] [stdout] > for Blo where Blo : reactor :: base :: Actor < Event > [INFO] [stdout] { [INFO] [stdout] type State = Outer2 ; const INITIAL_STATE : Self = Blo :: E1(E1 {}) ; fn [INFO] [stdout] get_levels(& self, levels : & mut [core :: any :: TypeId], ptr : usize) [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Blo :: D1(b) => [INFO] [stdout] { [INFO] [stdout] levels [ptr] = core :: any :: TypeId :: of :: < Blo > () ; [INFO] [stdout] b.get_levels(levels, ptr + 1) ; [INFO] [stdout] }, Blo :: E1(b) => [INFO] [stdout] { [INFO] [stdout] levels [ptr] = core :: any :: TypeId :: of :: < Blo > () ; [INFO] [stdout] b.get_levels(levels, ptr + 1) ; [INFO] [stdout] }, [INFO] [stdout] } [INFO] [stdout] } fn super_enter(& self, level : i32) [INFO] [stdout] { [INFO] [stdout] if level > 0 [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Blo :: D1(b) => { b.super_enter(level - 1) }, Blo :: E1(b) => [INFO] [stdout] { b.super_enter(level - 1) }, [INFO] [stdout] } [INFO] [stdout] } else [INFO] [stdout] { [INFO] [stdout] self.enter() ; match self [INFO] [stdout] { [INFO] [stdout] Blo :: D1(b) => { b.super_enter(level - 1) }, Blo :: E1(b) => [INFO] [stdout] { b.super_enter(level - 1) }, [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } fn super_handle(& self, event : Event) -> EventResult << Self as State < [INFO] [stdout] Event >> :: State > [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Blo :: D1(b) => [INFO] [stdout] { [INFO] [stdout] match b.super_handle(event.clone()) [INFO] [stdout] { [INFO] [stdout] EventResult :: Handled => EventResult :: Handled, [INFO] [stdout] EventResult :: Transition(t) => EventResult :: [INFO] [stdout] Transition(t), EventResult :: NotHandled => [INFO] [stdout] self.handle(event), [INFO] [stdout] } [INFO] [stdout] }, Blo :: E1(b) => [INFO] [stdout] { [INFO] [stdout] match b.super_handle(event.clone()) [INFO] [stdout] { [INFO] [stdout] EventResult :: Handled => EventResult :: Handled, [INFO] [stdout] EventResult :: Transition(t) => EventResult :: [INFO] [stdout] Transition(t), EventResult :: NotHandled => [INFO] [stdout] self.handle(event), [INFO] [stdout] } [INFO] [stdout] }, [INFO] [stdout] } [INFO] [stdout] } fn super_exit(& self, level : i32) [INFO] [stdout] { [INFO] [stdout] if level > 0 [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Blo :: D1(b) => { b.super_exit(level - 1) }, Blo :: E1(b) => [INFO] [stdout] { b.super_exit(level - 1) }, [INFO] [stdout] } [INFO] [stdout] } else [INFO] [stdout] { [INFO] [stdout] match self [INFO] [stdout] { [INFO] [stdout] Blo :: D1(b) => { b.super_exit(level - 1) }, Blo :: E1(b) => [INFO] [stdout] { b.super_exit(level - 1) }, [INFO] [stdout] } self.exit() ; [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } #[derive(Copy, Clone, Debug)] struct D1() ; impl State < Event > for D1 [INFO] [stdout] where D1 : reactor :: base :: Actor < Event > [INFO] [stdout] { [INFO] [stdout] type State = Outer2 ; const INITIAL_STATE : Self = D1 {} ; fn [INFO] [stdout] get_levels(& self, levels : & mut [core :: any :: TypeId], ptr : usize) [INFO] [stdout] { levels [ptr] = core :: any :: TypeId :: of :: < D1 > () ; } fn [INFO] [stdout] super_enter(& self, level : i32) { self.enter() } fn [INFO] [stdout] super_handle(& self, event : Event) -> EventResult << Self as State < [INFO] [stdout] Event >> :: State > { self.handle(event) } fn [INFO] [stdout] super_exit(& self, level : i32) { self.exit() } [INFO] [stdout] } #[derive(Copy, Clone, Debug)] struct E1() ; impl State < Event > for E1 [INFO] [stdout] where E1 : reactor :: base :: Actor < Event > [INFO] [stdout] { [INFO] [stdout] type State = Outer2 ; const INITIAL_STATE : Self = E1 {} ; fn [INFO] [stdout] get_levels(& self, levels : & mut [core :: any :: TypeId], ptr : usize) [INFO] [stdout] { levels [ptr] = core :: any :: TypeId :: of :: < E1 > () ; } fn [INFO] [stdout] super_enter(& self, level : i32) { self.enter() } fn [INFO] [stdout] super_handle(& self, event : Event) -> EventResult << Self as State < [INFO] [stdout] Event >> :: State > { self.handle(event) } fn [INFO] [stdout] super_exit(& self, level : i32) { self.exit() } [INFO] [stdout] } #[derive(Copy, Clone, Debug)] struct C1() ; impl State < Event > for C1 [INFO] [stdout] where C1 : reactor :: base :: Actor < Event > [INFO] [stdout] { [INFO] [stdout] type State = Outer2 ; const INITIAL_STATE : Self = C1 {} ; fn [INFO] [stdout] get_levels(& self, levels : & mut [core :: any :: TypeId], ptr : usize) [INFO] [stdout] { levels [ptr] = core :: any :: TypeId :: of :: < C1 > () ; } fn [INFO] [stdout] super_enter(& self, level : i32) { self.enter() } fn [INFO] [stdout] super_handle(& self, event : Event) -> EventResult << Self as State < [INFO] [stdout] Event >> :: State > { self.handle(event) } fn [INFO] [stdout] super_exit(& self, level : i32) { self.exit() } [INFO] [stdout] } #[derive(Debug)] pub struct Reactor { state : Outer2, } const [INFO] [stdout] REACTOR_MAX_LEVELS : usize = 3usize ; impl React < Event > for Reactor [INFO] [stdout] { [INFO] [stdout] fn new() -> Self [INFO] [stdout] { [INFO] [stdout] let reactor = Self { state : Outer2 :: INITIAL_STATE, } ; [INFO] [stdout] reactor.state.super_enter(0) ; reactor [INFO] [stdout] } fn react(& mut self, event : Event) [INFO] [stdout] { [INFO] [stdout] match self.state.super_handle(event) [INFO] [stdout] { [INFO] [stdout] EventResult :: Transition(new_state) => [INFO] [stdout] { [INFO] [stdout] let levels_new = & mut [INFO] [stdout] [core :: any :: TypeId :: of :: < bool > () ; [INFO] [stdout] REACTOR_MAX_LEVELS] ; let levels_old = & mut [INFO] [stdout] [core :: any :: TypeId :: of :: < bool > () ; [INFO] [stdout] REACTOR_MAX_LEVELS] ; new_state.get_levels(levels_new, 0) ; [INFO] [stdout] self.state.get_levels(levels_old, 0) ; let mut i = 0 ; while i [INFO] [stdout] < REACTOR_MAX_LEVELS [INFO] [stdout] { if levels_new [i] != levels_old [i] { break ; } i += 1 ; } [INFO] [stdout] println! ("Moving {:?} -> {:?}", self, new_state) ; [INFO] [stdout] self.state.super_exit(i as i32) ; self.state = new_state ; [INFO] [stdout] self.state.super_enter(i as i32) ; [INFO] [stdout] } _ => {}, [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] } [INFO] [stdout] warning: unnecessary parentheses around type [INFO] [stdout] --> reactor-derive/src/lib.rs:70:109 [INFO] [stdout] | [INFO] [stdout] 70 | let t = sub_state.sub_states.iter().map(|sub_state| assemble_from_sub_state(root, sub_state)).collect::<(Vec<_>)>(); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 70 - let t = sub_state.sub_states.iter().map(|sub_state| assemble_from_sub_state(root, sub_state)).collect::<(Vec<_>)>(); [INFO] [stdout] 70 + let t = sub_state.sub_states.iter().map(|sub_state| assemble_from_sub_state(root, sub_state)).collect::>(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 1 warning emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished test [unoptimized + debuginfo] target(s) in 1.16s [INFO] running `Command { std: "docker" "inspect" "344f4137c3ea8bae00d338b97739f2852412ede4518ba9167bbe6a707ea672b3", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "344f4137c3ea8bae00d338b97739f2852412ede4518ba9167bbe6a707ea672b3", kill_on_drop: false }` [INFO] [stdout] 344f4137c3ea8bae00d338b97739f2852412ede4518ba9167bbe6a707ea672b3 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-25/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-25/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:b0c94ce3c1162fcb8e57cac5b65ec2f72eabb1eebea4fcc35e269e823f681646" "/opt/rustwide/cargo-home/bin/cargo" "+1.60.0" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 6642914b918fb3306c6958750f40a174206a68605035ee403cb7f7b972c3f439 [INFO] running `Command { std: "docker" "start" "-a" "6642914b918fb3306c6958750f40a174206a68605035ee403cb7f7b972c3f439", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] warning: unnecessary parentheses around type [INFO] [stderr] --> reactor-derive/src/lib.rs:70:109 [INFO] [stderr] | [INFO] [stderr] 70 | let t = sub_state.sub_states.iter().map(|sub_state| assemble_from_sub_state(root, sub_state)).collect::<(Vec<_>)>(); [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_parens)]` on by default [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 70 - let t = sub_state.sub_states.iter().map(|sub_state| assemble_from_sub_state(root, sub_state)).collect::<(Vec<_>)>(); [INFO] [stderr] 70 + let t = sub_state.sub_states.iter().map(|sub_state| assemble_from_sub_state(root, sub_state)).collect::>(); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `reactor-derive` (lib) generated 1 warning [INFO] [stderr] warning: `reactor-derive` (lib test) generated 1 warning (1 duplicate) [INFO] [stderr] Finished test [unoptimized + debuginfo] target(s) in 6.24s [INFO] [stderr] Running unittests (/opt/rustwide/target/debug/deps/example-ea69d0a09f0fd182) [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running unittests (/opt/rustwide/target/debug/deps/reactor-1e866c9c0d14bf85) [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running unittests (/opt/rustwide/target/debug/deps/reactor_derive-f4ea2cd5c2e87e20) [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Doc-tests reactor [INFO] [stderr] error[E0659]: `reactor` is ambiguous [INFO] [stderr] --> /opt/rustwide/workdir/reactor/src/lib.rs:6:9 [INFO] [stderr] | [INFO] [stderr] 6 | pub use reactor::React; [INFO] [stderr] | ^^^^^^^ ambiguous name [INFO] [stderr] | [INFO] [stderr] = note: ambiguous because of multiple potential import sources [INFO] [stderr] = note: `reactor` could refer to a crate passed with `--extern` [INFO] [stderr] = help: use `::reactor` to refer to this crate unambiguously [INFO] [stderr] note: `reactor` could also refer to the module defined here [INFO] [stderr] --> /opt/rustwide/workdir/reactor/src/lib.rs:4:1 [INFO] [stderr] | [INFO] [stderr] 4 | pub mod reactor; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: use `crate::reactor` to refer to this module unambiguously [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] For more information about this error, try `rustc --explain E0659`. [INFO] [stderr] error: test failed, to rerun pass '--doc' [INFO] running `Command { std: "docker" "inspect" "6642914b918fb3306c6958750f40a174206a68605035ee403cb7f7b972c3f439", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "6642914b918fb3306c6958750f40a174206a68605035ee403cb7f7b972c3f439", kill_on_drop: false }` [INFO] [stdout] 6642914b918fb3306c6958750f40a174206a68605035ee403cb7f7b972c3f439