[INFO] cloning repository https://github.com/innocent541/fe
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/innocent541/fe" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Finnocent541%2Ffe", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Finnocent541%2Ffe'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 4934a1e41d59950ee490805d2ef6cb975d78382d
[INFO] checking innocent541/fe against 52995a223f2919dd3e2e427231db90a257350ded for pr-129249-4
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Finnocent541%2Ffe" "/workspace/builds/worker-2-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/innocent541/fe
[INFO] finished tweaking git repo https://github.com/innocent541/fe
[INFO] tweaked toml for git repo https://github.com/innocent541/fe written to /workspace/builds/worker-2-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/innocent541/fe on toolchain 52995a223f2919dd3e2e427231db90a257350ded
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+52995a223f2919dd3e2e427231db90a257350ded" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/innocent541/fe already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+52995a223f2919dd3e2e427231db90a257350ded" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: unused workspace dependency `semver`
[INFO] [stderr]   --> Cargo.toml:18:1
[INFO] [stderr]    |
[INFO] [stderr] 18 | semver = "1.0.26"
[INFO] [stderr]    | ^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::unused_workspace_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the workspace dependency `semver`
[INFO] [stderr] warning: workspace (manifest) generated 1 warning
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:c0af3998e971868164375a7dfb646c9933ddd1a3bdb00fa2041266763dc1eeab" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] d8678211b5bbd4b673f1b07b9c69cd29a3b3121e941d48f6d0db07958ad2d74a
[INFO] running `Command { std: "docker" "start" "d8678211b5bbd4b673f1b07b9c69cd29a3b3121e941d48f6d0db07958ad2d74a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d8678211b5bbd4b673f1b07b9c69cd29a3b3121e941d48f6d0db07958ad2d74a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "d8678211b5bbd4b673f1b07b9c69cd29a3b3121e941d48f6d0db07958ad2d74a" "/opt/rustwide/cargo-home/bin/cargo" "+52995a223f2919dd3e2e427231db90a257350ded" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d8678211b5bbd4b673f1b07b9c69cd29a3b3121e941d48f6d0db07958ad2d74a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "d8678211b5bbd4b673f1b07b9c69cd29a3b3121e941d48f6d0db07958ad2d74a" "/opt/rustwide/cargo-home/bin/cargo" "+52995a223f2919dd3e2e427231db90a257350ded" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] warning: unused workspace dependency `semver`
[INFO] [stderr]   --> Cargo.toml:18:1
[INFO] [stderr]    |
[INFO] [stderr] 18 | semver = "1.0.26"
[INFO] [stderr]    | ^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::unused_workspace_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the workspace dependency `semver`
[INFO] [stderr] warning: workspace (manifest) generated 1 warning
[INFO] [stderr]    Compiling proc-macro2 v1.0.97
[INFO] [stderr]    Compiling unicode-ident v1.0.18
[INFO] [stderr]     Checking cfg-if v1.0.1
[INFO] [stderr]     Checking pin-project-lite v0.2.16
[INFO] [stderr]     Checking once_cell v1.21.3
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling serde v1.0.219
[INFO] [stderr]     Checking stable_deref_trait v1.2.0
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]    Compiling libc v0.2.175
[INFO] [stderr]     Checking writeable v0.6.1
[INFO] [stderr]     Checking litemap v0.8.0
[INFO] [stderr]    Compiling typenum v1.18.0
[INFO] [stderr]    Compiling icu_normalizer_data v2.0.0
[INFO] [stderr]    Compiling icu_properties_data v2.0.1
[INFO] [stderr]    Compiling version_check v0.9.5
[INFO] [stderr]    Compiling semver v1.0.26
[INFO] [stderr]    Compiling autocfg v1.5.0
[INFO] [stderr]     Checking percent-encoding v2.3.1
[INFO] [stderr]     Checking utf8_iter v1.0.4
[INFO] [stderr]     Checking lazy_static v1.5.0
[INFO] [stderr]     Checking value-bag v1.11.1
[INFO] [stderr]     Checking allocator-api2 v0.2.21
[INFO] [stderr]     Checking foldhash v0.1.5
[INFO] [stderr]     Checking tracing-core v0.1.34
[INFO] [stderr]     Checking equivalent v1.0.2
[INFO] [stderr]     Checking form_urlencoded v1.2.1
[INFO] [stderr]     Checking bitflags v2.9.1
[INFO] [stderr]    Compiling hashbrown v0.15.5
[INFO] [stderr]     Checking regex-syntax v0.8.5
[INFO] [stderr]     Checking regex-syntax v0.6.29
[INFO] [stderr]    Compiling winnow v0.7.12
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]     Checking log v0.4.27
[INFO] [stderr]    Compiling beef v0.5.2
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]     Checking overload v0.1.1
[INFO] [stderr]    Compiling rustversion v1.0.22
[INFO] [stderr]    Compiling fnv v1.0.7
[INFO] [stderr]     Checking nu-ansi-term v0.46.0
[INFO] [stderr]    Compiling lock_api v0.4.13
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking sharded-slab v0.1.7
[INFO] [stderr]     Checking thread_local v1.1.9
[INFO] [stderr]    Compiling parking_lot_core v0.9.11
[INFO] [stderr]    Compiling quote v1.0.40
[INFO] [stderr]    Compiling fe-parser v0.26.0 (/opt/rustwide/workdir/crates/parser)
[INFO] [stderr]     Checking rustc-hash v1.1.0
[INFO] [stderr]    Compiling indexmap v2.10.0
[INFO] [stderr]     Checking text-size v1.1.1
[INFO] [stderr]     Checking similar v2.7.0
[INFO] [stderr]    Compiling syn v2.0.105
[INFO] [stderr]     Checking either v1.15.0
[INFO] [stderr]     Checking nu-ansi-term v0.50.1
[INFO] [stderr]     Checking countme v3.0.1
[INFO] [stderr]     Checking scopeguard v1.2.0
[INFO] [stderr]     Checking rowan v0.16.1
[INFO] [stderr]     Checking crossbeam-epoch v0.9.18
[INFO] [stderr]     Checking insta v1.43.1
[INFO] [stderr]    Compiling heck v0.5.0
[INFO] [stderr]     Checking toml_write v0.1.2
[INFO] [stderr]    Compiling camino v1.1.11
[INFO] [stderr]     Checking unwrap-infallible v0.1.5
[INFO] [stderr]    Compiling rayon-core v1.13.0
[INFO] [stderr]     Checking smallvec v2.0.0-alpha.11
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]     Checking crossbeam-deque v0.8.6
[INFO] [stderr]     Checking regex-automata v0.4.9
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking fixedbitset v0.5.7
[INFO] [stderr]    Compiling same-file v1.0.6
[INFO] [stderr]    Compiling glob v0.3.3
[INFO] [stderr]    Compiling cpufeatures v0.2.17
[INFO] [stderr]     Checking regex-automata v0.1.10
[INFO] [stderr]     Checking petgraph v0.8.2
[INFO] [stderr]    Compiling walkdir v2.5.0
[INFO] [stderr]    Compiling crypto-common v0.1.6
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]     Checking parking_lot v0.12.4
[INFO] [stderr]    Compiling portable-atomic v1.11.1
[INFO] [stderr]     Checking rayon v1.11.0
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling paste v1.0.15
[INFO] [stderr]     Checking dashmap v6.1.0
[INFO] [stderr]    Compiling rustc_version v0.4.1
[INFO] [stderr]     Checking matchers v0.1.0
[INFO] [stderr]    Compiling rust-embed-utils v8.7.2
[INFO] [stderr]     Checking hashlink v0.10.0
[INFO] [stderr]     Checking crossbeam-queue v0.3.12
[INFO] [stderr]     Checking rustc-hash v2.1.1
[INFO] [stderr]     Checking salsa-macro-rules v0.20.0
[INFO] [stderr]     Checking thin-vec v0.2.14
[INFO] [stderr]     Checking boxcar v0.2.14
[INFO] [stderr]     Checking regex v1.11.1
[INFO] [stderr]     Checking ordermap v0.5.8
[INFO] [stderr]     Checking radix_immutable v0.0.1 (https://github.com/micahscopes/radix_immutable.git#514098f0)
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]    Compiling logos-codegen v0.15.1
[INFO] [stderr]     Checking cranelift-bitset v0.115.1
[INFO] [stderr]     Checking cranelift-entity v0.115.1
[INFO] [stderr]     Checking dot2 v1.0.0
[INFO] [stderr]    Compiling fe-hir-analysis v0.26.0 (/opt/rustwide/workdir/crates/hir-analysis)
[INFO] [stderr]     Checking dogged v0.2.0
[INFO] [stderr]     Checking num-bigint v0.4.6
[INFO] [stderr]     Checking itertools v0.14.0
[INFO] [stderr]     Checking unicode-width v0.1.14
[INFO] [stderr]     Checking termcolor v1.4.1
[INFO] [stderr]     Checking ena v0.14.3
[INFO] [stderr]     Checking futures-core v0.3.31
[INFO] [stderr]     Checking futures-io v0.3.31
[INFO] [stderr]     Checking concurrent-queue v2.5.0
[INFO] [stderr]     Checking parking v2.2.1
[INFO] [stderr]    Compiling wasm-bindgen-shared v0.2.100
[INFO] [stderr]     Checking fastrand v2.3.0
[INFO] [stderr]     Checking slab v0.4.11
[INFO] [stderr]    Compiling bumpalo v3.19.0
[INFO] [stderr]     Checking memchr v2.7.5
[INFO] [stderr]     Checking event-listener v5.4.1
[INFO] [stderr]    Compiling rustix v1.0.8
[INFO] [stderr]     Checking futures-lite v2.6.1
[INFO] [stderr]     Checking linux-raw-sys v0.9.4
[INFO] [stderr]     Checking codespan-reporting v0.11.1
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling wasm-bindgen v0.2.100
[INFO] [stderr]     Checking event-listener-strategy v0.5.4
[INFO] [stderr]     Checking utf8parse v0.2.2
[INFO] [stderr]     Checking anstyle-parse v0.2.7
[INFO] [stderr]     Checking async-lock v3.4.1
[INFO] [stderr]     Checking async-task v4.7.1
[INFO] [stderr]     Checking is_terminal_polyfill v1.70.1
[INFO] [stderr]     Checking anstyle-query v1.1.4
[INFO] [stderr]     Checking ascii_tree v0.1.1
[INFO] [stderr]     Checking colorchoice v1.0.4
[INFO] [stderr]     Checking anstyle v1.0.11
[INFO] [stderr]     Checking async-channel v2.5.0
[INFO] [stderr]     Checking strsim v0.11.1
[INFO] [stderr]    Compiling serde_json v1.0.142
[INFO] [stderr]     Checking anstream v0.6.20
[INFO] [stderr]     Checking clap_lex v0.7.5
[INFO] [stderr]     Checking atomic-waker v1.1.2
[INFO] [stderr]     Checking futures-sink v0.3.31
[INFO] [stderr]     Checking piper v0.2.4
[INFO] [stderr]     Checking pin-utils v0.1.0
[INFO] [stderr]     Checking ryu v1.0.20
[INFO] [stderr]     Checking itoa v1.0.15
[INFO] [stderr]     Checking futures-channel v0.3.31
[INFO] [stderr]     Checking signal-hook-registry v1.4.6
[INFO] [stderr]     Checking futures-task v0.3.31
[INFO] [stderr]     Checking clap_builder v4.5.44
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]     Checking half v2.6.0
[INFO] [stderr]    Compiling getrandom v0.3.3
[INFO] [stderr]     Checking linux-raw-sys v0.4.15
[INFO] [stderr]     Checking ciborium-io v0.2.2
[INFO] [stderr]     Checking plotters-backend v0.3.7
[INFO] [stderr]    Compiling thiserror v2.0.14
[INFO] [stderr]    Compiling fe-uitest v0.26.0 (/opt/rustwide/workdir/crates/uitest)
[INFO] [stderr]     Checking itertools v0.10.5
[INFO] [stderr]     Checking plotters-svg v0.3.7
[INFO] [stderr]     Checking mio v1.0.4
[INFO] [stderr]     Checking ciborium-ll v0.2.2
[INFO] [stderr]     Checking socket2 v0.6.0
[INFO] [stderr]    Compiling anyhow v1.0.99
[INFO] [stderr]     Checking bytes v1.10.1
[INFO] [stderr]     Checking tower-layer v0.3.3
[INFO] [stderr]     Checking tower-service v0.3.3
[INFO] [stderr]     Checking event-listener v2.5.3
[INFO] [stderr]    Compiling serde-semver-derive v0.1.1
[INFO] [stderr]     Checking bitflags v1.3.2
[INFO] [stderr]     Checking cast v0.3.0
[INFO] [stderr]     Checking plotters v0.3.7
[INFO] [stderr]     Checking is-terminal v0.4.16
[INFO] [stderr]     Checking kv-log-macro v1.0.7
[INFO] [stderr]     Checking async-channel v1.9.0
[INFO] [stderr]     Checking futures-timer v3.0.3
[INFO] [stderr]     Checking oorandom v11.1.5
[INFO] [stderr]     Checking anes v0.1.6
[INFO] [stderr]     Checking tower v0.5.2
[INFO] [stderr]     Checking blocking v1.6.2
[INFO] [stderr]     Checking async-executor v1.13.2
[INFO] [stderr]     Checking async-fs v2.1.3
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling wasm-bindgen-backend v0.2.100
[INFO] [stderr]     Checking criterion-plot v0.5.0
[INFO] [stderr]    Compiling proc-macro-crate v3.3.0
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.0
[INFO] [stderr]    Compiling serde_derive v1.0.219
[INFO] [stderr]    Compiling zerovec-derive v0.11.1
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling tracing-attributes v0.1.30
[INFO] [stderr]    Compiling derive_more-impl v1.0.0
[INFO] [stderr]    Compiling dir-test-macros v0.4.1
[INFO] [stderr]    Compiling rust-embed-impl v8.7.2
[INFO] [stderr]    Compiling salsa-macros v0.20.0
[INFO] [stderr]     Checking dir-test v0.4.1
[INFO] [stderr]    Compiling wasm-bindgen-test-macro v0.3.50
[INFO] [stderr]    Compiling clap_derive v4.5.45
[INFO] [stderr]     Checking rust-embed v8.7.2
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling tokio-macros v2.5.0
[INFO] [stderr]    Compiling thiserror-impl v2.0.14
[INFO] [stderr]    Compiling serde_repr v0.1.20
[INFO] [stderr]     Checking tokio v1.47.1
[INFO] [stderr]    Compiling num_enum_derive v0.7.4
[INFO] [stderr]     Checking derive_more v1.0.0
[INFO] [stderr]    Compiling wasm-bindgen-macro-support v0.2.100
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]     Checking tracing-subscriber v0.3.19
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]     Checking waitpid-any v0.2.1
[INFO] [stderr]     Checking yoke v0.8.0
[INFO] [stderr]    Compiling logos-derive v0.15.1
[INFO] [stderr]     Checking zerovec v0.11.4
[INFO] [stderr]     Checking zerotrie v0.2.2
[INFO] [stderr]     Checking salsa v0.20.0
[INFO] [stderr]     Checking logos v0.15.1
[INFO] [stderr]     Checking num_enum v0.7.4
[INFO] [stderr]     Checking clap v4.5.45
[INFO] [stderr]    Compiling wasm-bindgen-macro v0.2.100
[INFO] [stderr]     Checking tracing-tree v0.4.0
[INFO] [stdout] warning: unreachable call
[INFO] [stdout]    --> crates/parser/src/parser/mod.rs:690:37
[INFO] [stdout]     |
[INFO] [stdout] 690 |         Self(recovery.0, recovery.1.into())
[INFO] [stdout]     |                          ---------- ^^^^ unreachable call
[INFO] [stdout]     |                          |
[INFO] [stdout]     |                          any code following this expression is unreachable
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking polling v3.10.0
[INFO] [stderr]     Checking tempfile v3.20.0
[INFO] [stderr]     Checking async-io v2.5.0
[INFO] [stderr]     Checking tinystr v0.8.1
[INFO] [stderr]     Checking potential_utf v0.1.2
[INFO] [stderr]     Checking async-signal v0.2.12
[INFO] [stderr]     Checking async-net v2.0.0
[INFO] [stderr]     Checking async-global-executor v2.4.1
[INFO] [stderr]     Checking icu_collections v2.0.0
[INFO] [stderr]     Checking async-process v2.4.0
[INFO] [stderr]     Checking icu_locale_core v2.0.0
[INFO] [stderr]     Checking async-std v1.13.2
[INFO] [stderr]     Checking js-sys v0.3.77
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]   --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]    |
[INFO] [stdout] 35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout] 57 |                       __syntax: node.into(),
[INFO] [stdout]    |                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: crates/parser/src/ast/attr.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | / ast_node! {
[INFO] [stdout]  7 | |     pub struct AttrList,
[INFO] [stdout]  8 | |     SK::AttrList,
[INFO] [stdout]  9 | |     IntoIterator<Item=Attr>,
[INFO] [stdout] 10 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout]    = note: `#[deny(self_type_conversion)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]   --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]    |
[INFO] [stdout] 35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout] 57 |                       __syntax: node.into(),
[INFO] [stdout]    |                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: crates/parser/src/ast/attr.rs:29:1
[INFO] [stdout]    |
[INFO] [stdout] 29 | / ast_node! {
[INFO] [stdout] 30 | |     /// An attribute, which can be either a normal attribute or a doc comment attribute.
[INFO] [stdout] 31 | |     pub struct Attr,
[INFO] [stdout] 32 | |     SK::Attr | SK::DocCommentAttr,
[INFO] [stdout] 33 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]   --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]    |
[INFO] [stdout] 35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout] 57 |                       __syntax: node.into(),
[INFO] [stdout]    |                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: crates/parser/src/ast/attr.rs:47:1
[INFO] [stdout]    |
[INFO] [stdout] 47 | / ast_node! {
[INFO] [stdout] 48 | |     /// A normal attribute.
[INFO] [stdout] 49 | |     /// `#attr(arg1: Arg, arg2: Arg)`
[INFO] [stdout] 50 | |     pub struct NormalAttr,
[INFO] [stdout] 51 | |     SK::Attr,
[INFO] [stdout] 52 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]   --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]    |
[INFO] [stdout] 35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout] 57 |                       __syntax: node.into(),
[INFO] [stdout]    |                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: crates/parser/src/ast/attr.rs:65:1
[INFO] [stdout]    |
[INFO] [stdout] 65 | / ast_node! {
[INFO] [stdout] 66 | |     /// An attribute argument list.
[INFO] [stdout] 67 | |     /// `(arg1: Arg, arg2: Arg)` in `#foo(arg1: Arg, arg2: Arg)`
[INFO] [stdout] 68 | |     pub struct AttrArgList,
[INFO] [stdout] 69 | |     SK::AttrArgList,
[INFO] [stdout] 70 | |     IntoIterator<Item=AttrArg>,
[INFO] [stdout] 71 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]   --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]    |
[INFO] [stdout] 35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout] 57 |                       __syntax: node.into(),
[INFO] [stdout]    |                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: crates/parser/src/ast/attr.rs:73:1
[INFO] [stdout]    |
[INFO] [stdout] 73 | / ast_node! {
[INFO] [stdout] 74 | |     /// An Attribute argument.
[INFO] [stdout] 75 | |     /// `arg1: Arg` in `#foo(arg1: Arg, arg2: Arg)`
[INFO] [stdout] 76 | |     pub struct AttrArg,
[INFO] [stdout] 77 | |     SK::AttrArg
[INFO] [stdout] 78 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/attr.rs:99:1
[INFO] [stdout]     |
[INFO] [stdout]  99 | / ast_node! {
[INFO] [stdout] 100 | |     pub struct DocCommentAttr,
[INFO] [stdout] 101 | |     SK::DocCommentAttr,
[INFO] [stdout] 102 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]   --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]    |
[INFO] [stdout] 35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout] 57 |                       __syntax: node.into(),
[INFO] [stdout]    |                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: crates/parser/src/ast/expr.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | / ast_node! {
[INFO] [stdout]  7 | |     /// An expression.
[INFO] [stdout]  8 | |     /// Use [`Self::kind`] to determine the type of expression.
[INFO] [stdout]  9 | |     pub struct Expr,
[INFO] [stdout] ...  |
[INFO] [stdout] 27 | |     | SK::AugAssignExpr,
[INFO] [stdout] 28 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]   --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]    |
[INFO] [stdout] 35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout] 57 |                       __syntax: node.into(),
[INFO] [stdout]    |                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: crates/parser/src/ast/expr.rs:61:1
[INFO] [stdout]    |
[INFO] [stdout] 61 | / ast_node! {
[INFO] [stdout] 62 | |     /// `{ stmt1\n stmt2\n ..}`
[INFO] [stdout] 63 | |     pub struct BlockExpr,
[INFO] [stdout] 64 | |     SK::BlockExpr,
[INFO] [stdout] 65 | |     IntoIterator<Item=super::Stmt>,
[INFO] [stdout] 66 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]   --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]    |
[INFO] [stdout] 35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout] 57 |                       __syntax: node.into(),
[INFO] [stdout]    |                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: crates/parser/src/ast/expr.rs:79:1
[INFO] [stdout]    |
[INFO] [stdout] 79 | / ast_node! {
[INFO] [stdout] 80 | |     /// `lhs op rhs`
[INFO] [stdout] 81 | |     pub struct BinExpr,
[INFO] [stdout] 82 | |     SK::BinExpr
[INFO] [stdout] 83 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/expr.rs:103:1
[INFO] [stdout]     |
[INFO] [stdout] 103 | / ast_node! {
[INFO] [stdout] 104 | |     /// `op expr`
[INFO] [stdout] 105 | |     pub struct UnExpr,
[INFO] [stdout] 106 | |     SK::UnExpr
[INFO] [stdout] 107 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/expr.rs:123:1
[INFO] [stdout]     |
[INFO] [stdout] 123 | / ast_node! {
[INFO] [stdout] 124 | |     /// `func<Arg, ..>(arg1, arg2, ..)`
[INFO] [stdout] 125 | |     pub struct CallExpr,
[INFO] [stdout] 126 | |     SK::CallExpr,
[INFO] [stdout] 127 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/expr.rs:140:1
[INFO] [stdout]     |
[INFO] [stdout] 140 | / ast_node! {
[INFO] [stdout] 141 | |     /// `obj.method<Arg, ...>(arg1, arg2, ..)`
[INFO] [stdout] 142 | |     pub struct MethodCallExpr,
[INFO] [stdout] 143 | |     SK::MethodCallExpr
[INFO] [stdout] 144 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/expr.rs:163:1
[INFO] [stdout]     |
[INFO] [stdout] 163 | / ast_node! {
[INFO] [stdout] 164 | |     /// `path`
[INFO] [stdout] 165 | |     pub struct PathExpr,
[INFO] [stdout] 166 | |     SK::PathExpr
[INFO] [stdout] 167 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/expr.rs:175:1
[INFO] [stdout]     |
[INFO] [stdout] 175 | / ast_node! {
[INFO] [stdout] 176 | |     /// `path { field1: expr1, field2: expr2, .. }`
[INFO] [stdout] 177 | |     pub struct RecordInitExpr,
[INFO] [stdout] 178 | |     SK::RecordInitExpr
[INFO] [stdout] 179 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/expr.rs:192:1
[INFO] [stdout]     |
[INFO] [stdout] 192 | / ast_node! {
[INFO] [stdout] 193 | |     /// `expr.field` or `expr.0`
[INFO] [stdout] 194 | |     pub struct FieldExpr,
[INFO] [stdout] 195 | |     SK::FieldExpr
[INFO] [stdout] 196 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/expr.rs:219:1
[INFO] [stdout]     |
[INFO] [stdout] 219 | / ast_node! {
[INFO] [stdout] 220 | |     /// `expr[index]`
[INFO] [stdout] 221 | |     pub struct IndexExpr,
[INFO] [stdout] 222 | |     SK::IndexExpr
[INFO] [stdout] 223 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/expr.rs:236:1
[INFO] [stdout]     |
[INFO] [stdout] 236 | / ast_node! {
[INFO] [stdout] 237 | |     /// `(expr1, expr2, ..)`
[INFO] [stdout] 238 | |     pub struct TupleExpr,
[INFO] [stdout] 239 | |     SK::TupleExpr,
[INFO] [stdout] 240 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/expr.rs:248:1
[INFO] [stdout]     |
[INFO] [stdout] 248 | / ast_node! {
[INFO] [stdout] 249 | |     /// `[expr1, expr2, ..]`
[INFO] [stdout] 250 | |     pub struct ArrayExpr,
[INFO] [stdout] 251 | |     SK::ArrayExpr,
[INFO] [stdout] 252 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/expr.rs:261:1
[INFO] [stdout]     |
[INFO] [stdout] 261 | / ast_node! {
[INFO] [stdout] 262 | |     /// `[expr; size]`
[INFO] [stdout] 263 | |     pub struct ArrayRepExpr,
[INFO] [stdout] 264 | |     SK::ArrayRepExpr,
[INFO] [stdout] 265 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/expr.rs:278:1
[INFO] [stdout]     |
[INFO] [stdout] 278 | / ast_node! {
[INFO] [stdout] 279 | |     pub struct LitExpr,
[INFO] [stdout] 280 | |     SK::LitExpr
[INFO] [stdout] 281 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/expr.rs:289:1
[INFO] [stdout]     |
[INFO] [stdout] 289 | / ast_node! {
[INFO] [stdout] 290 | |     /// `if cond { then } else { else_ }`
[INFO] [stdout] 291 | |     pub struct IfExpr,
[INFO] [stdout] 292 | |     SK::IfExpr
[INFO] [stdout] 293 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/expr.rs:311:1
[INFO] [stdout]     |
[INFO] [stdout] 311 | / ast_node! {
[INFO] [stdout] 312 | |     /// `match expr { arm1, arm2, .. }`
[INFO] [stdout] 313 | |     pub struct MatchExpr,
[INFO] [stdout] 314 | |     SK::MatchExpr
[INFO] [stdout] 315 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/expr.rs:328:1
[INFO] [stdout]     |
[INFO] [stdout] 328 | / ast_node! {
[INFO] [stdout] 329 | |     /// `(expr)`
[INFO] [stdout] 330 | |     pub struct ParenExpr,
[INFO] [stdout] 331 | |     SK::ParenExpr
[INFO] [stdout] 332 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/expr.rs:340:1
[INFO] [stdout]     |
[INFO] [stdout] 340 | / ast_node! {
[INFO] [stdout] 341 | |     /// `x = 1`
[INFO] [stdout] 342 | |     pub struct AssignExpr,
[INFO] [stdout] 343 | |     SK::AssignExpr,
[INFO] [stdout] 344 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/expr.rs:360:1
[INFO] [stdout]     |
[INFO] [stdout] 360 | / ast_node! {
[INFO] [stdout] 361 | |     /// `x += 1`
[INFO] [stdout] 362 | |     pub struct AugAssignExpr,
[INFO] [stdout] 363 | |     SK::AugAssignExpr,
[INFO] [stdout] 364 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/expr.rs:405:1
[INFO] [stdout]     |
[INFO] [stdout] 405 | / ast_node! {
[INFO] [stdout] 406 | |     /// `{ label1: expr1, expr2 }`
[INFO] [stdout] 407 | |     pub struct FieldList,
[INFO] [stdout] 408 | |     SK::RecordFieldList,
[INFO] [stdout] 409 | |     IntoIterator<Item=RecordField>
[INFO] [stdout] 410 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/expr.rs:411:1
[INFO] [stdout]     |
[INFO] [stdout] 411 | / ast_node! {
[INFO] [stdout] 412 | |     pub struct RecordField,
[INFO] [stdout] 413 | |     SK::RecordField,
[INFO] [stdout] 414 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/expr.rs:427:1
[INFO] [stdout]     |
[INFO] [stdout] 427 | / ast_node! {
[INFO] [stdout] 428 | |     pub struct MatchArmList,
[INFO] [stdout] 429 | |     SK::MatchArmList,
[INFO] [stdout] 430 | |     IntoIterator<Item=MatchArm>
[INFO] [stdout] 431 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/expr.rs:432:1
[INFO] [stdout]     |
[INFO] [stdout] 432 | / ast_node! {
[INFO] [stdout] 433 | |     pub struct MatchArm,
[INFO] [stdout] 434 | |     SK::MatchArm
[INFO] [stdout] 435 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]   --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]    |
[INFO] [stdout] 35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout] 57 |                       __syntax: node.into(),
[INFO] [stdout]    |                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: crates/parser/src/ast/item.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | / ast_node! {
[INFO] [stdout]  7 | |     /// The top-level node of the AST tree.
[INFO] [stdout]  8 | |     pub struct Root,
[INFO] [stdout]  9 | |     SK::Root,
[INFO] [stdout] 10 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]   --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]    |
[INFO] [stdout] 35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout] 57 |                       __syntax: node.into(),
[INFO] [stdout]    |                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: crates/parser/src/ast/item.rs:17:1
[INFO] [stdout]    |
[INFO] [stdout] 17 | / ast_node! {
[INFO] [stdout] 18 | |     /// A list of items in a module.
[INFO] [stdout] 19 | |     pub struct ItemList,
[INFO] [stdout] 20 | |     SK::ItemList,
[INFO] [stdout] 21 | |     IntoIterator<Item=Item>
[INFO] [stdout] 22 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]   --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]    |
[INFO] [stdout] 35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout] 57 |                       __syntax: node.into(),
[INFO] [stdout]    |                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: crates/parser/src/ast/item.rs:24:1
[INFO] [stdout]    |
[INFO] [stdout] 24 | / ast_node! {
[INFO] [stdout] 25 | |     /// A single item in a module.
[INFO] [stdout] 26 | |     /// Use `[Item::kind]` to get the specific type of item.
[INFO] [stdout] 27 | |     pub struct Item,
[INFO] [stdout] 28 | |     SK::Item
[INFO] [stdout] 29 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]   --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]    |
[INFO] [stdout] 35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout] 57 |                       __syntax: node.into(),
[INFO] [stdout]    |                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: crates/parser/src/ast/item.rs:48:1
[INFO] [stdout]    |
[INFO] [stdout] 48 | / ast_node! {
[INFO] [stdout] 49 | |     pub struct Mod,
[INFO] [stdout] 50 | |     SK::Mod,
[INFO] [stdout] 51 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]   --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]    |
[INFO] [stdout] 35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout] 57 |                       __syntax: node.into(),
[INFO] [stdout]    |                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: crates/parser/src/ast/item.rs:66:1
[INFO] [stdout]    |
[INFO] [stdout] 66 | / ast_node! {
[INFO] [stdout] 67 | |     /// `pub fn foo<T, U: Trait>(_ x: T, from u: U) -> T where T: Trait2 { ... }`
[INFO] [stdout] 68 | |     pub struct Func,
[INFO] [stdout] 69 | |     SK::Func,
[INFO] [stdout] 70 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/item.rs:97:1
[INFO] [stdout]     |
[INFO] [stdout]  97 | / ast_node! {
[INFO] [stdout]  98 | |     pub struct Struct,
[INFO] [stdout]  99 | |     SK::Struct,
[INFO] [stdout] 100 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/item.rs:117:1
[INFO] [stdout]     |
[INFO] [stdout] 117 | / ast_node! {
[INFO] [stdout] 118 | |     pub struct Contract,
[INFO] [stdout] 119 | |     SK::Contract,
[INFO] [stdout] 120 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/item.rs:136:1
[INFO] [stdout]     |
[INFO] [stdout] 136 | / ast_node! {
[INFO] [stdout] 137 | |     pub struct Enum,
[INFO] [stdout] 138 | |     SK::Enum,
[INFO] [stdout] 139 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/item.rs:156:1
[INFO] [stdout]     |
[INFO] [stdout] 156 | / ast_node! {
[INFO] [stdout] 157 | |     /// `type Foo<T> = Bar<T>`
[INFO] [stdout] 158 | |     pub struct TypeAlias,
[INFO] [stdout] 159 | |     SK::TypeAlias,
[INFO] [stdout] 160 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/item.rs:178:1
[INFO] [stdout]     |
[INFO] [stdout] 178 | / ast_node! {
[INFO] [stdout] 179 | |     /// `trait Foo<..> where .. { .. }`
[INFO] [stdout] 180 | |     pub struct Trait,
[INFO] [stdout] 181 | |     SK::Trait,
[INFO] [stdout] 182 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/item.rs:205:1
[INFO] [stdout]     |
[INFO] [stdout] 205 | / ast_node! {
[INFO] [stdout] 206 | |     pub struct SuperTraitList,
[INFO] [stdout] 207 | |     SK::SuperTraitList,
[INFO] [stdout] 208 | |     IntoIterator<Item=TraitRef>
[INFO] [stdout] 209 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/item.rs:216:1
[INFO] [stdout]     |
[INFO] [stdout] 216 | / ast_node! {
[INFO] [stdout] 217 | |     /// `type Bar` in trait definition
[INFO] [stdout] 218 | |     /// or `type Bar = i32` in trait implementation
[INFO] [stdout] 219 | |     pub struct TraitTypeItem,
[INFO] [stdout] 220 | |     SK::TraitTypeItem,
[INFO] [stdout] 221 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/item.rs:238:1
[INFO] [stdout]     |
[INFO] [stdout] 238 | / ast_node! {
[INFO] [stdout] 239 | |     pub struct TraitItem,
[INFO] [stdout] 240 | |     SK::Func | SK::TraitTypeItem
[INFO] [stdout] 241 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/item.rs:259:1
[INFO] [stdout]     |
[INFO] [stdout] 259 | / ast_node! {
[INFO] [stdout] 260 | |     /// `impl Foo::Bar<T> where .. { .. }`
[INFO] [stdout] 261 | |     pub struct Impl,
[INFO] [stdout] 262 | |     SK::Impl,
[INFO] [stdout] 263 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/item.rs:282:1
[INFO] [stdout]     |
[INFO] [stdout] 282 | / ast_node! {
[INFO] [stdout] 283 | |     /// `impl<T> Foo for Bar<T> { .. }`
[INFO] [stdout] 284 | |     pub struct ImplTrait,
[INFO] [stdout] 285 | |     SK::ImplTrait,
[INFO] [stdout] 286 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/item.rs:310:1
[INFO] [stdout]     |
[INFO] [stdout] 310 | / ast_node! {
[INFO] [stdout] 311 | |     /// `const FOO: u32 = 42;`
[INFO] [stdout] 312 | |     pub struct Const,
[INFO] [stdout] 313 | |     SK::Const,
[INFO] [stdout] 314 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/item.rs:337:1
[INFO] [stdout]     |
[INFO] [stdout] 337 | / ast_node! {
[INFO] [stdout] 338 | |     /// `use foo::{bar, Baz::*}`
[INFO] [stdout] 339 | |     pub struct Use,
[INFO] [stdout] 340 | |     SK::Use,
[INFO] [stdout] 341 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/item.rs:356:1
[INFO] [stdout]     |
[INFO] [stdout] 356 | / ast_node! {
[INFO] [stdout] 357 | |     /// `extern { .. }`
[INFO] [stdout] 358 | |     pub struct Extern,
[INFO] [stdout] 359 | |     SK::Extern,
[INFO] [stdout] 360 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/item.rs:370:1
[INFO] [stdout]     |
[INFO] [stdout] 370 | / ast_node! {
[INFO] [stdout] 371 | |     pub struct RecordFieldDefList,
[INFO] [stdout] 372 | |     SK::RecordFieldDefList,
[INFO] [stdout] 373 | |     IntoIterator<Item=RecordFieldDef>
[INFO] [stdout] 374 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/item.rs:375:1
[INFO] [stdout]     |
[INFO] [stdout] 375 | / ast_node! {
[INFO] [stdout] 376 | |     pub struct RecordFieldDef,
[INFO] [stdout] 377 | |     SK::RecordFieldDef,
[INFO] [stdout] 378 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/item.rs:397:1
[INFO] [stdout]     |
[INFO] [stdout] 397 | / ast_node! {
[INFO] [stdout] 398 | |     pub struct VariantDefList,
[INFO] [stdout] 399 | |     SK::VariantDefList,
[INFO] [stdout] 400 | |     IntoIterator<Item=VariantDef>
[INFO] [stdout] 401 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/item.rs:403:1
[INFO] [stdout]     |
[INFO] [stdout] 403 | / ast_node! {
[INFO] [stdout] 404 | |     /// `Foo(i32, u32)`
[INFO] [stdout] 405 | |     pub struct VariantDef,
[INFO] [stdout] 406 | |     SK::VariantDef,
[INFO] [stdout] 407 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/item.rs:441:1
[INFO] [stdout]     |
[INFO] [stdout] 441 | / ast_node! {
[INFO] [stdout] 442 | |     pub struct TraitItemList,
[INFO] [stdout] 443 | |     SK::TraitItemList,
[INFO] [stdout] 444 | |     IntoIterator<Item=TraitItem>,
[INFO] [stdout] 445 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/item.rs:447:1
[INFO] [stdout]     |
[INFO] [stdout] 447 | / ast_node! {
[INFO] [stdout] 448 | |     pub struct ImplItemList,
[INFO] [stdout] 449 | |     SK::ImplItemList,
[INFO] [stdout] 450 | |     IntoIterator<Item=Func>, // TODO: ImplTraitItem
[INFO] [stdout] 451 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/item.rs:453:1
[INFO] [stdout]     |
[INFO] [stdout] 453 | / ast_node! {
[INFO] [stdout] 454 | |     pub struct ExternItemList,
[INFO] [stdout] 455 | |     SK::ExternItemList,
[INFO] [stdout] 456 | |     IntoIterator<Item=Func>,
[INFO] [stdout] 457 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/item.rs:459:1
[INFO] [stdout]     |
[INFO] [stdout] 459 | / ast_node! {
[INFO] [stdout] 460 | |     /// A modifier on an item.
[INFO] [stdout] 461 | |     /// `pub unsafe`
[INFO] [stdout] 462 | |     pub struct ItemModifier,
[INFO] [stdout] 463 | |     SK::ItemModifier,
[INFO] [stdout] 464 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]   --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]    |
[INFO] [stdout] 35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout] 57 |                       __syntax: node.into(),
[INFO] [stdout]    |                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: crates/parser/src/ast/lit.rs:7:1
[INFO] [stdout]    |
[INFO] [stdout]  7 | / ast_node! {
[INFO] [stdout]  8 | |     pub struct Lit,
[INFO] [stdout]  9 | |     SK::Lit
[INFO] [stdout] 10 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]   --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]    |
[INFO] [stdout] 35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout] 57 |                       __syntax: node.into(),
[INFO] [stdout]    |                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: crates/parser/src/ast/param.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | / ast_node! {
[INFO] [stdout]  7 | |     /// A list of parameters.
[INFO] [stdout]  8 | |     /// `(self, a: u256, b: u256)`
[INFO] [stdout]  9 | |     pub struct FuncParamList,
[INFO] [stdout] 10 | |     SK::FuncParamList,
[INFO] [stdout] 11 | |     IntoIterator<Item=FuncParam>,
[INFO] [stdout] 12 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking smol v2.0.2
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]   --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]    |
[INFO] [stdout] 35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout] 57 |                       __syntax: node.into(),
[INFO] [stdout]    |                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: crates/parser/src/ast/param.rs:14:1
[INFO] [stdout]    |
[INFO] [stdout] 14 | / ast_node! {
[INFO] [stdout] 15 | |     /// A single parameter.
[INFO] [stdout] 16 | |     /// `self`
[INFO] [stdout] 17 | |     /// `label a: u256`
[INFO] [stdout] 18 | |     pub struct FuncParam,
[INFO] [stdout] 19 | |     SK::FnParam,
[INFO] [stdout] 20 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]   --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]    |
[INFO] [stdout] 35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout] 57 |                       __syntax: node.into(),
[INFO] [stdout]    |                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: crates/parser/src/ast/param.rs:63:1
[INFO] [stdout]    |
[INFO] [stdout] 63 | / ast_node! {
[INFO] [stdout] 64 | |     /// A list of generic parameters.
[INFO] [stdout] 65 | |     /// `<T: Trait, U>`
[INFO] [stdout] 66 | |     pub struct GenericParamList,
[INFO] [stdout] ...  |
[INFO] [stdout] 70 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]   --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]    |
[INFO] [stdout] 35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout] 57 |                       __syntax: node.into(),
[INFO] [stdout]    |                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: crates/parser/src/ast/param.rs:72:1
[INFO] [stdout]    |
[INFO] [stdout] 72 | / ast_node! {
[INFO] [stdout] 73 | |     /// A generic parameter.
[INFO] [stdout] 74 | |     /// `T`
[INFO] [stdout] 75 | |     /// `T: Trait`
[INFO] [stdout] ...  |
[INFO] [stdout] 78 | |     SK::TypeGenericParam | SK::ConstGenericParam,
[INFO] [stdout] 79 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/param.rs:113:1
[INFO] [stdout]     |
[INFO] [stdout] 113 | / ast_node! {
[INFO] [stdout] 114 | |     /// `(label1: arg1, arg2, ..)`
[INFO] [stdout] 115 | |     pub struct CallArgList,
[INFO] [stdout] 116 | |     SK::CallArgList,
[INFO] [stdout] 117 | |     IntoIterator<Item=CallArg>,
[INFO] [stdout] 118 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/param.rs:120:1
[INFO] [stdout]     |
[INFO] [stdout] 120 | / ast_node! {
[INFO] [stdout] 121 | |     /// `label1: arg1`
[INFO] [stdout] 122 | |     pub struct CallArg,
[INFO] [stdout] 123 | |     SK::CallArg,
[INFO] [stdout] 124 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/param.rs:139:1
[INFO] [stdout]     |
[INFO] [stdout] 139 | / ast_node! {
[INFO] [stdout] 140 | |     /// A type generic parameter.
[INFO] [stdout] 141 | |     /// `T`
[INFO] [stdout] 142 | |     /// `T: Trait`
[INFO] [stdout] 143 | |     pub struct TypeGenericParam,
[INFO] [stdout] 144 | |     SK::TypeGenericParam,
[INFO] [stdout] 145 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/param.rs:160:1
[INFO] [stdout]     |
[INFO] [stdout] 160 | / ast_node! {
[INFO] [stdout] 161 | |     /// A const generic parameter.
[INFO] [stdout] 162 | |     /// `const N: usize`.
[INFO] [stdout] 163 | |     pub struct ConstGenericParam,
[INFO] [stdout] 164 | |     SK::ConstGenericParam,
[INFO] [stdout] 165 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/param.rs:182:1
[INFO] [stdout]     |
[INFO] [stdout] 182 | / ast_node! {
[INFO] [stdout] 183 | |     /// A list of generic arguments.
[INFO] [stdout] 184 | |     /// `<T,
[INFO] [stdout] 185 | |     pub struct GenericArgList,
[INFO] [stdout] ...   |
[INFO] [stdout] 189 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/param.rs:191:1
[INFO] [stdout]     |
[INFO] [stdout] 191 | / ast_node! {
[INFO] [stdout] 192 | |     /// A generic argument.
[INFO] [stdout] 193 | |     /// `T`
[INFO] [stdout] 194 | |     /// `T: Trait`
[INFO] [stdout] ...   |
[INFO] [stdout] 199 | |     SK::TypeGenericArg | SK::ConstGenericArg | SK::AssocTypeGenericArg,
[INFO] [stdout] 200 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/param.rs:218:1
[INFO] [stdout]     |
[INFO] [stdout] 218 | / ast_node! {
[INFO] [stdout] 219 | |     pub struct TypeGenericArg,
[INFO] [stdout] 220 | |     SK::TypeGenericArg,
[INFO] [stdout] 221 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/param.rs:228:1
[INFO] [stdout]     |
[INFO] [stdout] 228 | / ast_node! {
[INFO] [stdout] 229 | |     pub struct ConstGenericArg,
[INFO] [stdout] 230 | |     SK::ConstGenericArg,
[INFO] [stdout] 231 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/param.rs:238:1
[INFO] [stdout]     |
[INFO] [stdout] 238 | / ast_node! {
[INFO] [stdout] 239 | |     pub struct AssocTypeGenericArg,
[INFO] [stdout] 240 | |     SK::AssocTypeGenericArg,
[INFO] [stdout] 241 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/param.rs:252:1
[INFO] [stdout]     |
[INFO] [stdout] 252 | / ast_node! {
[INFO] [stdout] 253 | |     /// `where T: Trait`
[INFO] [stdout] 254 | |     pub struct WhereClause,
[INFO] [stdout] 255 | |     SK::WhereClause,
[INFO] [stdout] 256 | |     IntoIterator<Item=WherePredicate>,
[INFO] [stdout] 257 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/param.rs:264:1
[INFO] [stdout]     |
[INFO] [stdout] 264 | / ast_node! {
[INFO] [stdout] 265 | |     /// `T: Trait`
[INFO] [stdout] 266 | |     pub struct WherePredicate,
[INFO] [stdout] 267 | |     SK::WherePredicate,
[INFO] [stdout] 268 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/param.rs:292:1
[INFO] [stdout]     |
[INFO] [stdout] 292 | / ast_node! {
[INFO] [stdout] 293 | |     /// A type bound list.
[INFO] [stdout] 294 | |     /// `: Trait + Trait2`
[INFO] [stdout] 295 | |     pub struct TypeBoundList,
[INFO] [stdout] 296 | |     SK::TypeBoundList,
[INFO] [stdout] 297 | |     IntoIterator<Item=TypeBound>,
[INFO] [stdout] 298 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/param.rs:300:1
[INFO] [stdout]     |
[INFO] [stdout] 300 | / ast_node! {
[INFO] [stdout] 301 | |     /// A type bound.
[INFO] [stdout] 302 | |     /// `Trait`
[INFO] [stdout] 303 | |     /// `Trait<T, U>`
[INFO] [stdout] ...   |
[INFO] [stdout] 306 | |     SK::TypeBound,
[INFO] [stdout] 307 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/param.rs:319:1
[INFO] [stdout]     |
[INFO] [stdout] 319 | / ast_node! {
[INFO] [stdout] 320 | |     pub struct TraitRef,
[INFO] [stdout] 321 | |     SK::TraitRef
[INFO] [stdout] 322 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/param.rs:335:1
[INFO] [stdout]     |
[INFO] [stdout] 335 | / ast_node! {
[INFO] [stdout] 336 | |     pub struct KindBound,
[INFO] [stdout] 337 | |      SK::KindBoundAbs | SK::KindBoundMono
[INFO] [stdout] 338 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/param.rs:355:1
[INFO] [stdout]     |
[INFO] [stdout] 355 | / ast_node! {
[INFO] [stdout] 356 | |     pub struct KindBoundMono,
[INFO] [stdout] 357 | |     SK::KindBoundMono,
[INFO] [stdout] 358 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/param.rs:360:1
[INFO] [stdout]     |
[INFO] [stdout] 360 | / ast_node! {
[INFO] [stdout] 361 | |     pub struct KindBoundAbs,
[INFO] [stdout] 362 | |     SK::KindBoundAbs,
[INFO] [stdout] 363 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]   --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]    |
[INFO] [stdout] 35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout] 57 |                       __syntax: node.into(),
[INFO] [stdout]    |                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: crates/parser/src/ast/pat.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | / ast_node! {
[INFO] [stdout]  7 | |     /// A pattern.
[INFO] [stdout]  8 | |     /// Use [`Self::kind`] to get the specific kind of the pattern.
[INFO] [stdout]  9 | |     pub struct Pat,
[INFO] [stdout] ...  |
[INFO] [stdout] 17 | |     | SK::OrPat
[INFO] [stdout] 18 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]   --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]    |
[INFO] [stdout] 35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout] 57 |                       __syntax: node.into(),
[INFO] [stdout]    |                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: crates/parser/src/ast/pat.rs:38:1
[INFO] [stdout]    |
[INFO] [stdout] 38 | / ast_node! {
[INFO] [stdout] 39 | |     /// `_`
[INFO] [stdout] 40 | |     pub struct WildCardPat,
[INFO] [stdout] 41 | |     SK::WildCardPat,
[INFO] [stdout] 42 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]   --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]    |
[INFO] [stdout] 35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout] 57 |                       __syntax: node.into(),
[INFO] [stdout]    |                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: crates/parser/src/ast/pat.rs:44:1
[INFO] [stdout]    |
[INFO] [stdout] 44 | / ast_node! {
[INFO] [stdout] 45 | |     /// `..`
[INFO] [stdout] 46 | |     pub struct RestPat,
[INFO] [stdout] 47 | |     SK::RestPat,
[INFO] [stdout] 48 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]   --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]    |
[INFO] [stdout] 35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout] 57 |                       __syntax: node.into(),
[INFO] [stdout]    |                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: crates/parser/src/ast/pat.rs:50:1
[INFO] [stdout]    |
[INFO] [stdout] 50 | / ast_node! {
[INFO] [stdout] 51 | |     /// `1`
[INFO] [stdout] 52 | |     pub struct LitPat,
[INFO] [stdout] 53 | |     SK::LitPat,
[INFO] [stdout] 54 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]   --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]    |
[INFO] [stdout] 35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout] 57 |                       __syntax: node.into(),
[INFO] [stdout]    |                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: crates/parser/src/ast/pat.rs:62:1
[INFO] [stdout]    |
[INFO] [stdout] 62 | / ast_node! {
[INFO] [stdout] 63 | |     /// `(Foo::Bar, 1, ..)`
[INFO] [stdout] 64 | |     pub struct TuplePat,
[INFO] [stdout] 65 | |     SK::TuplePat,
[INFO] [stdout] 66 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]   --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]    |
[INFO] [stdout] 35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout] 57 |                       __syntax: node.into(),
[INFO] [stdout]    |                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: crates/parser/src/ast/pat.rs:73:1
[INFO] [stdout]    |
[INFO] [stdout] 73 | / ast_node! {
[INFO] [stdout] 74 | |     /// `(Foo::Bar, 1, ..)`
[INFO] [stdout] 75 | |     pub struct TuplePatElemList,
[INFO] [stdout] 76 | |     SK::TuplePatElemList,
[INFO] [stdout] 77 | |     IntoIterator<Item=Pat>
[INFO] [stdout] 78 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]   --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]    |
[INFO] [stdout] 35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout] 57 |                       __syntax: node.into(),
[INFO] [stdout]    |                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: crates/parser/src/ast/pat.rs:80:1
[INFO] [stdout]    |
[INFO] [stdout] 80 | / ast_node! {
[INFO] [stdout] 81 | |     /// `Foo::Bar`
[INFO] [stdout] 82 | |     pub struct PathPat,
[INFO] [stdout] 83 | |     SK::PathPat,
[INFO] [stdout] 84 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/pat.rs:96:1
[INFO] [stdout]     |
[INFO] [stdout]  96 | / ast_node! {
[INFO] [stdout]  97 | |     /// `Foo::Bar(1, 2)`
[INFO] [stdout]  98 | |     pub struct PathTuplePat,
[INFO] [stdout]  99 | |     SK::PathTuplePat,
[INFO] [stdout] 100 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/pat.rs:110:1
[INFO] [stdout]     |
[INFO] [stdout] 110 | / ast_node! {
[INFO] [stdout] 111 | |     /// `Foo::Bar{a: 1, b: Foo::baz, c}
[INFO] [stdout] 112 | |     pub struct RecordPat,
[INFO] [stdout] 113 | |     SK::RecordPat,
[INFO] [stdout] 114 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/pat.rs:125:1
[INFO] [stdout]     |
[INFO] [stdout] 125 | / ast_node! {
[INFO] [stdout] 126 | |     /// `{a: 1, b: Foo::baz, c}`
[INFO] [stdout] 127 | |     pub struct RecordPatFieldList,
[INFO] [stdout] 128 | |     SK::RecordPatFieldList,
[INFO] [stdout] 129 | |     IntoIterator<Item=RecordPatField>
[INFO] [stdout] 130 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/pat.rs:132:1
[INFO] [stdout]     |
[INFO] [stdout] 132 | / ast_node! {
[INFO] [stdout] 133 | |     /// `a: 1`
[INFO] [stdout] 134 | |     pub struct RecordPatField,
[INFO] [stdout] 135 | |     SK::RecordPatField,
[INFO] [stdout] 136 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/pat.rs:149:1
[INFO] [stdout]     |
[INFO] [stdout] 149 | / ast_node! {
[INFO] [stdout] 150 | |     /// `Foo::Bar | 1`
[INFO] [stdout] 151 | |     pub struct OrPat,
[INFO] [stdout] 152 | |     SK::OrPat,
[INFO] [stdout] 153 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]   --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]    |
[INFO] [stdout] 35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout] 57 |                       __syntax: node.into(),
[INFO] [stdout]    |                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: crates/parser/src/ast/path.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | / ast_node! {
[INFO] [stdout]  7 | |     /// A path.
[INFO] [stdout]  8 | |     /// `foo::bar::baz`
[INFO] [stdout]  9 | |     pub struct Path,
[INFO] [stdout] 10 | |     SK::Path,
[INFO] [stdout] 11 | |     IntoIterator<Item=PathSegment>,
[INFO] [stdout] 12 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]   --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]    |
[INFO] [stdout] 35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout] 57 |                       __syntax: node.into(),
[INFO] [stdout]    |                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: crates/parser/src/ast/path.rs:20:1
[INFO] [stdout]    |
[INFO] [stdout] 20 | / ast_node! {
[INFO] [stdout] 21 | |     /// A path segment.
[INFO] [stdout] 22 | |     pub struct PathSegment,
[INFO] [stdout] 23 | |     SK::PathSegment
[INFO] [stdout] 24 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]   --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]    |
[INFO] [stdout] 35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout] 57 |                       __syntax: node.into(),
[INFO] [stdout]    |                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: crates/parser/src/ast/path.rs:91:1
[INFO] [stdout]    |
[INFO] [stdout] 91 | / ast_node! {
[INFO] [stdout] 92 | |     pub struct QualifiedType,
[INFO] [stdout] 93 | |     SK::QualifiedType
[INFO] [stdout] 94 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]   --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]    |
[INFO] [stdout] 35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout] 57 |                       __syntax: node.into(),
[INFO] [stdout]    |                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: crates/parser/src/ast/stmt.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | / ast_node! {
[INFO] [stdout]  7 | |     /// A statement.
[INFO] [stdout]  8 | |     /// Use [`Self::kind`] to get the specific kind of the statement.
[INFO] [stdout]  9 | |     pub struct Stmt,
[INFO] [stdout] ...  |
[INFO] [stdout] 16 | |     | SK::ExprStmt
[INFO] [stdout] 17 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]   --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]    |
[INFO] [stdout] 35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout] 57 |                       __syntax: node.into(),
[INFO] [stdout]    |                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: crates/parser/src/ast/stmt.rs:34:1
[INFO] [stdout]    |
[INFO] [stdout] 34 | / ast_node! {
[INFO] [stdout] 35 | |     /// `let x: i32 = 1`
[INFO] [stdout] 36 | |     pub struct LetStmt,
[INFO] [stdout] 37 | |     SK::LetStmt,
[INFO] [stdout] 38 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]   --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]    |
[INFO] [stdout] 35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout] 57 |                       __syntax: node.into(),
[INFO] [stdout]    |                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: crates/parser/src/ast/stmt.rs:56:1
[INFO] [stdout]    |
[INFO] [stdout] 56 | / ast_node! {
[INFO] [stdout] 57 | |     /// `for pat in expr {..}`
[INFO] [stdout] 58 | |     pub struct ForStmt,
[INFO] [stdout] 59 | |     SK::ForStmt
[INFO] [stdout] 60 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]   --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]    |
[INFO] [stdout] 35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout] 57 |                       __syntax: node.into(),
[INFO] [stdout]    |                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: crates/parser/src/ast/stmt.rs:82:1
[INFO] [stdout]    |
[INFO] [stdout] 82 | / ast_node! {
[INFO] [stdout] 83 | |     /// `while cond {..}`
[INFO] [stdout] 84 | |     pub struct WhileStmt,
[INFO] [stdout] 85 | |     SK::WhileStmt
[INFO] [stdout] 86 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/stmt.rs:103:1
[INFO] [stdout]     |
[INFO] [stdout] 103 | / ast_node! {
[INFO] [stdout] 104 | |     /// `continue`
[INFO] [stdout] 105 | |     pub struct ContinueStmt,
[INFO] [stdout] 106 | |     SK::ContinueStmt
[INFO] [stdout] 107 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/stmt.rs:109:1
[INFO] [stdout]     |
[INFO] [stdout] 109 | / ast_node! {
[INFO] [stdout] 110 | |     /// `break`
[INFO] [stdout] 111 | |     pub struct BreakStmt,
[INFO] [stdout] 112 | |     SK::BreakStmt
[INFO] [stdout] 113 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/stmt.rs:115:1
[INFO] [stdout]     |
[INFO] [stdout] 115 | / ast_node! {
[INFO] [stdout] 116 | |     /// `return` or
[INFO] [stdout] 117 | |     /// `return expr`
[INFO] [stdout] 118 | |     pub struct ReturnStmt,
[INFO] [stdout] 119 | |     SK::ReturnStmt
[INFO] [stdout] 120 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/stmt.rs:134:1
[INFO] [stdout]     |
[INFO] [stdout] 134 | / ast_node! {
[INFO] [stdout] 135 | |     pub struct ExprStmt,
[INFO] [stdout] 136 | |     SK::ExprStmt
[INFO] [stdout] 137 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]   --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]    |
[INFO] [stdout] 35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout] 57 |                       __syntax: node.into(),
[INFO] [stdout]    |                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: crates/parser/src/ast/types.rs:6:1
[INFO] [stdout]    |
[INFO] [stdout]  6 | / ast_node! {
[INFO] [stdout]  7 | |     /// A type node.
[INFO] [stdout]  8 | |     /// If you want to match a specific kind of type, use `[Type::kind]`.
[INFO] [stdout]  9 | |     pub struct Type,
[INFO] [stdout] ...  |
[INFO] [stdout] 15 | |     | SK::NeverType
[INFO] [stdout] 16 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]   --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]    |
[INFO] [stdout] 35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout] 57 |                       __syntax: node.into(),
[INFO] [stdout]    |                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: crates/parser/src/ast/types.rs:30:1
[INFO] [stdout]    |
[INFO] [stdout] 30 | / ast_node! {
[INFO] [stdout] 31 | |     /// A pointer type.
[INFO] [stdout] 32 | |     /// `*i32`
[INFO] [stdout] 33 | |     pub struct PtrType,
[INFO] [stdout] 34 | |     SK::PtrType,
[INFO] [stdout] 35 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]   --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]    |
[INFO] [stdout] 35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout] 57 |                       __syntax: node.into(),
[INFO] [stdout]    |                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: crates/parser/src/ast/types.rs:48:1
[INFO] [stdout]    |
[INFO] [stdout] 48 | / ast_node! {
[INFO] [stdout] 49 | |     /// A path type.
[INFO] [stdout] 50 | |     /// `foo::Type<T, U + 2>`
[INFO] [stdout] 51 | |     pub struct PathType,
[INFO] [stdout] 52 | |     SK::PathType
[INFO] [stdout] 53 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]   --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]    |
[INFO] [stdout] 35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout] 57 |                       __syntax: node.into(),
[INFO] [stdout]    |                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: crates/parser/src/ast/types.rs:62:1
[INFO] [stdout]    |
[INFO] [stdout] 62 | / ast_node! {
[INFO] [stdout] 63 | |     /// A tuple type.
[INFO] [stdout] 64 | |     /// `(i32, foo::Bar)`
[INFO] [stdout] 65 | |     pub struct TupleType,
[INFO] [stdout] 66 | |     SK::TupleType,
[INFO] [stdout] 67 | |     IntoIterator<Item=Type>,
[INFO] [stdout] 68 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]   --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]    |
[INFO] [stdout] 35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout] 57 |                       __syntax: node.into(),
[INFO] [stdout]    |                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: crates/parser/src/ast/types.rs:84:1
[INFO] [stdout]    |
[INFO] [stdout] 84 | / ast_node! {
[INFO] [stdout] 85 | |     /// An array type.
[INFO] [stdout] 86 | |     /// `[i32; 4]`
[INFO] [stdout] 87 | |     pub struct ArrayType,
[INFO] [stdout] 88 | |     SK::ArrayType,
[INFO] [stdout] 89 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]    --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]     |
[INFO] [stdout]  35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout]  57 |                       __syntax: node.into(),
[INFO] [stdout]     |                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]    ::: crates/parser/src/ast/types.rs:109:1
[INFO] [stdout]     |
[INFO] [stdout] 109 | / ast_node! {
[INFO] [stdout] 110 | |     pub struct NeverType,
[INFO] [stdout] 111 | |     SK::NeverType,
[INFO] [stdout] 112 | | }
[INFO] [stdout]     | |_- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]     = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]   --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]    |
[INFO] [stdout] 35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout] 57 |                       __syntax: node.into(),
[INFO] [stdout]    |                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: crates/parser/src/ast/use_tree.rs:7:1
[INFO] [stdout]    |
[INFO] [stdout]  7 | / ast_node! {
[INFO] [stdout]  8 | |     /// A use tree.
[INFO] [stdout]  9 | |     /// `Foo::Foo2::{Bar::*, Baz::{x, y}}`
[INFO] [stdout] 10 | |     pub struct UseTree,
[INFO] [stdout] 11 | |     SK::UseTree,
[INFO] [stdout] 12 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]   --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]    |
[INFO] [stdout] 35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout] 57 |                       __syntax: node.into(),
[INFO] [stdout]    |                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: crates/parser/src/ast/use_tree.rs:42:1
[INFO] [stdout]    |
[INFO] [stdout] 42 | / ast_node! {
[INFO] [stdout] 43 | |     pub struct UseTreeList,
[INFO] [stdout] 44 | |     SK::UseTreeList,
[INFO] [stdout] 45 | |     IntoIterator<Item=UseTree>,
[INFO] [stdout] 46 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]   --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]    |
[INFO] [stdout] 35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout] 57 |                       __syntax: node.into(),
[INFO] [stdout]    |                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: crates/parser/src/ast/use_tree.rs:48:1
[INFO] [stdout]    |
[INFO] [stdout] 48 | / ast_node! {
[INFO] [stdout] 49 | |     pub struct UsePath,
[INFO] [stdout] 50 | |     SK::UsePath,
[INFO] [stdout] 51 | |     IntoIterator<Item = UsePathSegment>,
[INFO] [stdout] 52 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]   --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]    |
[INFO] [stdout] 35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout] 57 |                       __syntax: node.into(),
[INFO] [stdout]    |                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: crates/parser/src/ast/use_tree.rs:54:1
[INFO] [stdout]    |
[INFO] [stdout] 54 | / ast_node! {
[INFO] [stdout] 55 | |     pub struct UsePathSegment,
[INFO] [stdout] 56 | |     SK::UsePathSegment,
[INFO] [stdout] 57 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `rowan::SyntaxNode<FeLang>`
[INFO] [stdout]   --> crates/parser/src/ast/mod.rs:57:31
[INFO] [stdout]    |
[INFO] [stdout] 35 |   macro_rules! ast_node {
[INFO] [stdout] ...
[INFO] [stdout] 57 |                       __syntax: node.into(),
[INFO] [stdout]    |                                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]   ::: crates/parser/src/ast/use_tree.rs:94:1
[INFO] [stdout]    |
[INFO] [stdout] 94 | / ast_node! {
[INFO] [stdout] 95 | |     pub struct UseAlias,
[INFO] [stdout] 96 | |     SK::UseTreeRename,
[INFO] [stdout] 97 | | }
[INFO] [stdout]    | |_- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: you can instead use the fully-qualified path `<rowan::SyntaxNode<FeLang> as Into<rowan::SyntaxNode<FeLang>>::into(val) to avoid triggering this lint
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `fe-parser` (lib) due to 111 previous errors; 1 warning emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] running `Command { std: "docker" "inspect" "d8678211b5bbd4b673f1b07b9c69cd29a3b3121e941d48f6d0db07958ad2d74a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d8678211b5bbd4b673f1b07b9c69cd29a3b3121e941d48f6d0db07958ad2d74a", kill_on_drop: false }`
[INFO] [stdout] d8678211b5bbd4b673f1b07b9c69cd29a3b3121e941d48f6d0db07958ad2d74a
