[INFO] crate twig 0.1.0 is already in cache [INFO] extracting crate twig 0.1.0 into work/ex/clippy-test-run/sources/stable/reg/twig/0.1.0 [INFO] extracting crate twig 0.1.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/twig/0.1.0 [INFO] validating manifest of twig-0.1.0 on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of twig-0.1.0 on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing twig-0.1.0 [INFO] finished frobbing twig-0.1.0 [INFO] frobbed toml for twig-0.1.0 written to work/ex/clippy-test-run/sources/stable/reg/twig/0.1.0/Cargo.toml [INFO] started frobbing twig-0.1.0 [INFO] finished frobbing twig-0.1.0 [INFO] frobbed toml for twig-0.1.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/twig/0.1.0/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting twig-0.1.0 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-5/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/twig/0.1.0:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] e76b90d6bd3159f4990bb029cf527c2961a9523a1b07007ae81531817da93106 [INFO] running `"docker" "start" "-a" "e76b90d6bd3159f4990bb029cf527c2961a9523a1b07007ae81531817da93106"` [INFO] [stderr] Checking difference v0.4.1 [INFO] [stderr] Checking sha1 v0.1.1 [INFO] [stderr] Checking little v0.3.0 [INFO] [stderr] Checking uuid v0.1.18 [INFO] [stderr] Checking serde v0.6.15 [INFO] [stderr] Checking twig v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tokens/lexer/delimiters.rs:10:13 [INFO] [stderr] | [INFO] [stderr] 10 | start: start, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `start` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tokens/lexer/delimiters.rs:11:13 [INFO] [stderr] | [INFO] [stderr] 11 | end: end, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `end` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tokens/lexer/iter.rs:104:13 [INFO] [stderr] | [INFO] [stderr] 104 | line_num: line_num, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `line_num` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tokens/lexer/iter.rs:193:13 [INFO] [stderr] | [INFO] [stderr] 193 | lexer: lexer, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `lexer` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tokens/lexer/iter.rs:194:13 [INFO] [stderr] | [INFO] [stderr] 194 | code: code, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `code` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tokens/lexer/iter.rs:203:13 [INFO] [stderr] | [INFO] [stderr] 203 | positions: positions, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `positions` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tokens/lexer/mod.rs:23:13 [INFO] [stderr] | [INFO] [stderr] 23 | options: options, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `options` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/nodes/parser/expr.rs:108:21 [INFO] [stderr] | [INFO] [stderr] 108 | uuid: uuid, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `uuid` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/nodes/parser/expr.rs:109:21 [INFO] [stderr] | [INFO] [stderr] 109 | alias: alias, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `alias` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/nodes/parser/expr.rs:115:17 [INFO] [stderr] | [INFO] [stderr] 115 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/nodes/parser/expr.rs:383:13 [INFO] [stderr] | [INFO] [stderr] 383 | arguments: arguments, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `arguments` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/nodes/parser/expr.rs:384:13 [INFO] [stderr] | [INFO] [stderr] 384 | call_type: call_type [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `call_type` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/nodes/parser/mod.rs:23:13 [INFO] [stderr] | [INFO] [stderr] 23 | uuid: uuid, name: name, alias: alias [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `uuid` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/nodes/parser/mod.rs:23:25 [INFO] [stderr] | [INFO] [stderr] 23 | uuid: uuid, name: name, alias: alias [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/nodes/parser/mod.rs:23:37 [INFO] [stderr] | [INFO] [stderr] 23 | uuid: uuid, name: name, alias: alias [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `alias` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/nodes/parser/mod.rs:72:13 [INFO] [stderr] | [INFO] [stderr] 72 | env: env, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `env` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/nodes/node/expr.rs:12:13 [INFO] [stderr] | [INFO] [stderr] 12 | line: line, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `line` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/nodes/node/expr.rs:13:13 [INFO] [stderr] | [INFO] [stderr] 13 | value: value [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/instructions/compiler/mod.rs:27:13 [INFO] [stderr] | [INFO] [stderr] 27 | origin: origin, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `origin` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/instructions/compiler/mod.rs:36:13 [INFO] [stderr] | [INFO] [stderr] 36 | origin: origin, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `origin` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/instructions/compiler/mod.rs:45:13 [INFO] [stderr] | [INFO] [stderr] 45 | origin: origin, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `origin` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/instructions/compiler/mod.rs:46:13 [INFO] [stderr] | [INFO] [stderr] 46 | stack_length: stack_length, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `stack_length` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/error/runtime.rs:86:13 [INFO] [stderr] | [INFO] [stderr] 86 | stack_trace: stack_trace [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `stack_trace` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/error/runtime.rs:133:13 [INFO] [stderr] | [INFO] [stderr] 133 | message: message, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `message` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/error/mod.rs:58:13 [INFO] [stderr] | [INFO] [stderr] 58 | err: err, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `err` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/error/mod.rs:85:13 [INFO] [stderr] | [INFO] [stderr] 85 | loc: loc, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `loc` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/error/mod.rs:86:13 [INFO] [stderr] | [INFO] [stderr] 86 | err: err, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `err` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/error/mod.rs:130:20 [INFO] [stderr] | [INFO] [stderr] 130 | Location { line: line } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `line` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/extension/core/token_parsers/parser_macro.rs:51:13 [INFO] [stderr] | [INFO] [stderr] 51 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/extension/core/token_parsers/parser_macro.rs:53:13 [INFO] [stderr] | [INFO] [stderr] 53 | arguments: arguments, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `arguments` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/extension/core/token_parsers/parser_macro.rs:54:13 [INFO] [stderr] | [INFO] [stderr] 54 | line: line, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `line` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/operator/mod.rs:20:32 [INFO] [stderr] | [INFO] [stderr] 20 | OperatorKind::Binary { value: value, associativity: associativity } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/operator/mod.rs:20:46 [INFO] [stderr] | [INFO] [stderr] 20 | OperatorKind::Binary { value: value, associativity: associativity } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `associativity` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/operator/mod.rs:24:32 [INFO] [stderr] | [INFO] [stderr] 24 | OperatorKind::Binary { value: value, associativity: Associativity::Left } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/operator/mod.rs:28:32 [INFO] [stderr] | [INFO] [stderr] 28 | OperatorKind::Binary { value: value, associativity: Associativity::Right } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/operator/mod.rs:32:31 [INFO] [stderr] | [INFO] [stderr] 32 | OperatorKind::Unary { value: value } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/function/mod.rs:43:13 [INFO] [stderr] | [INFO] [stderr] 43 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/function/mod.rs:58:13 [INFO] [stderr] | [INFO] [stderr] 58 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/value/ops.rs:94:47 [INFO] [stderr] | [INFO] [stderr] 94 | 'i' => state = State::Float { starts_at: starts_at }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `starts_at` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/value/ops.rs:100:47 [INFO] [stderr] | [INFO] [stderr] 100 | '.' => state = State::Float { starts_at: starts_at }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `starts_at` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/value/ops.rs:101:69 [INFO] [stderr] | [INFO] [stderr] 101 | c if c.is_whitespace() => state = State::MaybeInt { starts_at: starts_at, ends_at: i }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `starts_at` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/value/ops.rs:104:48 [INFO] [stderr] | [INFO] [stderr] 104 | state = State::Float { starts_at: starts_at }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `starts_at` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/engine/mod.rs:128:13 [INFO] [stderr] | [INFO] [stderr] 128 | loader: loader, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `loader` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/tokens/lexer/iter.rs:11:21 [INFO] [stderr] | [INFO] [stderr] 11 | const PUNCTUATION: &'static str = "()[]{}?:.,|"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tokens/lexer/iter.rs:158:26 [INFO] [stderr] | [INFO] [stderr] 158 | (None, _) => return Err( [INFO] [stderr] | __________________________^ [INFO] [stderr] 159 | | TemplateError::ExpectedTokenTypeButReceived( [INFO] [stderr] 160 | | (expected.into(), Received::EndOfStream) [INFO] [stderr] 161 | | ).at(line) [INFO] [stderr] 162 | | ), [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 158 | (None, _) => Err( [INFO] [stderr] 159 | TemplateError::ExpectedTokenTypeButReceived( [INFO] [stderr] 160 | (expected.into(), Received::EndOfStream) [INFO] [stderr] 161 | ).at(line) [INFO] [stderr] 162 | ), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tokens/lexer/iter.rs:166:17 [INFO] [stderr] | [INFO] [stderr] 166 | / return Err( [INFO] [stderr] 167 | | TemplateError::ExpectedTokenTypeButReceived( [INFO] [stderr] 168 | | (expected.into(), Received::Token(token.value.into())) [INFO] [stderr] 169 | | ).at(token.line) [INFO] [stderr] 170 | | ); [INFO] [stderr] | |__________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 166 | Err( [INFO] [stderr] 167 | TemplateError::ExpectedTokenTypeButReceived( [INFO] [stderr] 168 | (expected.into(), Received::Token(token.value.into())) [INFO] [stderr] 169 | ).at(token.line) [INFO] [stderr] 170 | ) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/tokens/lexer/iter.rs:209:9 [INFO] [stderr] | [INFO] [stderr] 209 | iter [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/tokens/lexer/iter.rs:192:20 [INFO] [stderr] | [INFO] [stderr] 192 | let iter = TokenIter { [INFO] [stderr] | ____________________^ [INFO] [stderr] 193 | | lexer: lexer, [INFO] [stderr] 194 | | code: code, [INFO] [stderr] 195 | | cursor: 0, [INFO] [stderr] ... | [INFO] [stderr] 206 | | finished: false, [INFO] [stderr] 207 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/nodes/parser/expr.rs:114:13 [INFO] [stderr] | [INFO] [stderr] 114 | / return Ok(Expr::new_at(ExprValue::FunctionCall { [INFO] [stderr] 115 | | name: name, [INFO] [stderr] 116 | | arguments: try!(parse_named_arguments(parser, false)) [INFO] [stderr] 117 | | }, line)); [INFO] [stderr] | |______________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 114 | Ok(Expr::new_at(ExprValue::FunctionCall { [INFO] [stderr] 115 | name: name, [INFO] [stderr] 116 | arguments: try!(parse_named_arguments(parser, false)) [INFO] [stderr] 117 | }, line)) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/nodes/parser/mod.rs:172:25 [INFO] [stderr] | [INFO] [stderr] 172 | None => return Err(TemplateError::UnexpectedEndOfTemplate.at(line)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(TemplateError::UnexpectedEndOfTemplate.at(line))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/nodes/parser/mod.rs:173:33 [INFO] [stderr] | [INFO] [stderr] 173 | Some(Err(e)) => return Err(e), [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `Err(e)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unused import: `little::Instruction` [INFO] [stderr] --> src/extension/core/mod.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use little::Instruction; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/extension/core/token_parsers/mod.rs:39:26 [INFO] [stderr] | [INFO] [stderr] 39 | const INVALID_LVALUES: [&'static str; 3] = ["true", "false", "none"]; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: unreachable expression [INFO] [stderr] --> src/nodes/parser/expr.rs:379:5 [INFO] [stderr] | [INFO] [stderr] 379 | / Ok(Expr::new_at( [INFO] [stderr] 380 | | ExprValue::GetAttr { [INFO] [stderr] 381 | | node: Box::new(node), [INFO] [stderr] 382 | | arg: Box::new(arg), [INFO] [stderr] ... | [INFO] [stderr] 386 | | line [INFO] [stderr] 387 | | )) [INFO] [stderr] | |______^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unreachable_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `Expect` [INFO] [stderr] --> src/nodes/parser/body.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use Expect; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Expect` [INFO] [stderr] --> src/nodes/parser/expr.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use Expect; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Write` [INFO] [stderr] --> src/engine/mod.rs:11:22 [INFO] [stderr] | [INFO] [stderr] 11 | use std::io::{ Read, Write }; [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable `arguments` is assigned to, but never used [INFO] [stderr] --> src/nodes/parser/expr.rs:346:13 [INFO] [stderr] | [INFO] [stderr] 346 | let mut arguments = Vec::>::new(); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] = note: consider using `_arguments` instead [INFO] [stderr] [INFO] [stderr] warning: variable `call_type` is assigned to, but never used [INFO] [stderr] --> src/nodes/parser/expr.rs:347:13 [INFO] [stderr] | [INFO] [stderr] 347 | let mut call_type = ExprCallType::Any; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: consider using `_call_type` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `arg` [INFO] [stderr] --> src/nodes/parser/expr.rs:349:9 [INFO] [stderr] | [INFO] [stderr] 349 | let arg = match token.value { [INFO] [stderr] | ^^^ help: consider using `_arg` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `arg` [INFO] [stderr] --> src/nodes/parser/expr.rs:352:17 [INFO] [stderr] | [INFO] [stderr] 352 | let arg = match token.value { [INFO] [stderr] | ^^^ help: consider using `_arg` instead [INFO] [stderr] [INFO] [stderr] warning: value assigned to `call_type` is never read [INFO] [stderr] --> src/nodes/parser/expr.rs:362:17 [INFO] [stderr] | [INFO] [stderr] 362 | call_type = ExprCallType::Method; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_assignments)] on by default [INFO] [stderr] [INFO] [stderr] warning: value assigned to `arguments` is never read [INFO] [stderr] --> src/nodes/parser/expr.rs:363:17 [INFO] [stderr] | [INFO] [stderr] 363 | arguments = try!(parse_unnamed_arguments(parser, false)); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: value assigned to `call_type` is never read [INFO] [stderr] --> src/nodes/parser/expr.rs:373:13 [INFO] [stderr] | [INFO] [stderr] 373 | call_type = ExprCallType::Array; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `node` [INFO] [stderr] --> src/nodes/parser/expr.rs:339:72 [INFO] [stderr] | [INFO] [stderr] 339 | pub fn parse_subscript_expression<'p, 'c>(parser: &mut Parser<'p, 'c>, node: Expr<'c>) [INFO] [stderr] | ^^^^ help: consider using `_node` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `parser` [INFO] [stderr] --> src/nodes/parser/expr.rs:390:40 [INFO] [stderr] | [INFO] [stderr] 390 | pub fn parse_filter_expression<'p, 'c>(parser: &mut Parser<'p, 'c>, expr: Expr<'c>) [INFO] [stderr] | ^^^^^^ help: consider using `_parser` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `expr` [INFO] [stderr] --> src/nodes/parser/expr.rs:390:69 [INFO] [stderr] | [INFO] [stderr] 390 | pub fn parse_filter_expression<'p, 'c>(parser: &mut Parser<'p, 'c>, expr: Expr<'c>) [INFO] [stderr] | ^^^^ help: consider using `_expr` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/nodes/parser/expr.rs:442:25 [INFO] [stderr] | [INFO] [stderr] 442 | let (name_expr, token) = if definition { [INFO] [stderr] | ^^^^^ help: consider using `_token` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `other` [INFO] [stderr] --> src/nodes/parser/expr.rs:484:25 [INFO] [stderr] | [INFO] [stderr] 484 | other => unreachable!("twig bug: expected that expression is a name"), [INFO] [stderr] | ^^^^^ help: consider using `_other` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `env` [INFO] [stderr] --> src/instructions/mod.rs:11:16 [INFO] [stderr] | [INFO] [stderr] 11 | pub fn compile(env: (), nodes: &Module) -> Result> { [INFO] [stderr] | ^^^ help: consider using `_env` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `name` [INFO] [stderr] --> src/instructions/compiler/expr.rs:36:39 [INFO] [stderr] | [INFO] [stderr] 36 | ExprValue::FunctionCall { name, ref arguments } => { [INFO] [stderr] | ^^^^ help: try ignoring the field: `name: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `arguments` [INFO] [stderr] --> src/instructions/compiler/expr.rs:36:49 [INFO] [stderr] | [INFO] [stderr] 36 | ExprValue::FunctionCall { name, ref arguments } => { [INFO] [stderr] | ^^^^^^^^^ help: try ignoring the field: `arguments: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `config` [INFO] [stderr] --> src/environment/mod.rs:40:16 [INFO] [stderr] | [INFO] [stderr] 40 | pub fn new(config: Config) -> Environment { [INFO] [stderr] | ^^^^^^ help: consider using `_config` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `parser` [INFO] [stderr] --> src/extension/core/token_parsers/parser_for.rs:15:29 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^^ help: consider using `_parser` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/extension/core/token_parsers/parser_for.rs:15:58 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^ help: consider using `_token` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `parser` [INFO] [stderr] --> src/extension/core/token_parsers/parser_if.rs:15:29 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^^ help: consider using `_parser` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/extension/core/token_parsers/parser_if.rs:15:58 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^ help: consider using `_token` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `parser` [INFO] [stderr] --> src/extension/core/token_parsers/parser_extends.rs:15:29 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^^ help: consider using `_parser` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/extension/core/token_parsers/parser_extends.rs:15:58 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^ help: consider using `_token` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `parser` [INFO] [stderr] --> src/extension/core/token_parsers/parser_include.rs:15:29 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^^ help: consider using `_parser` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/extension/core/token_parsers/parser_include.rs:15:58 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^ help: consider using `_token` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `parser` [INFO] [stderr] --> src/extension/core/token_parsers/parser_block.rs:15:29 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^^ help: consider using `_parser` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/extension/core/token_parsers/parser_block.rs:15:58 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^ help: consider using `_token` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `parser` [INFO] [stderr] --> src/extension/core/token_parsers/parser_use.rs:15:29 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^^ help: consider using `_parser` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/extension/core/token_parsers/parser_use.rs:15:58 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^ help: consider using `_token` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `parser` [INFO] [stderr] --> src/extension/core/token_parsers/parser_filter.rs:15:29 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^^ help: consider using `_parser` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/extension/core/token_parsers/parser_filter.rs:15:58 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^ help: consider using `_token` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `parser` [INFO] [stderr] --> src/extension/core/token_parsers/parser_import.rs:15:29 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^^ help: consider using `_parser` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/extension/core/token_parsers/parser_import.rs:15:58 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^ help: consider using `_token` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `parser` [INFO] [stderr] --> src/extension/core/token_parsers/parser_spaceless.rs:15:29 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^^ help: consider using `_parser` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/extension/core/token_parsers/parser_spaceless.rs:15:58 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^ help: consider using `_token` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `parser` [INFO] [stderr] --> src/extension/core/token_parsers/parser_flush.rs:15:29 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^^ help: consider using `_parser` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/extension/core/token_parsers/parser_flush.rs:15:58 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^ help: consider using `_token` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `parser` [INFO] [stderr] --> src/extension/core/token_parsers/parser_do.rs:15:29 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^^ help: consider using `_parser` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/extension/core/token_parsers/parser_do.rs:15:58 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^ help: consider using `_token` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `parser` [INFO] [stderr] --> src/extension/core/token_parsers/parser_embed.rs:15:29 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^^ help: consider using `_parser` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/extension/core/token_parsers/parser_embed.rs:15:58 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^ help: consider using `_token` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `staging` [INFO] [stderr] --> src/extension/core/mod.rs:70:63 [INFO] [stderr] | [INFO] [stderr] 70 | Function::new_static("include", vec![Arg::Anon], |staging| { [INFO] [stderr] | ^^^^^^^ help: consider using `_staging` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `env` [INFO] [stderr] --> src/extension/escaper/mod.rs:7:14 [INFO] [stderr] | [INFO] [stderr] 7 | fn apply(env: &mut Environment) { [INFO] [stderr] | ^^^ help: consider using `_env` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `data` [INFO] [stderr] --> src/engine/mod.rs:139:55 [INFO] [stderr] | [INFO] [stderr] 139 | pub fn get>(&mut self, name: &str, data: D) [INFO] [stderr] | ^^^^ help: consider using `_data` instead [INFO] [stderr] [INFO] [stderr] warning: field is never used: `functions` [INFO] [stderr] --> src/engine/mod.rs:122:5 [INFO] [stderr] | [INFO] [stderr] 122 | functions: HashMap<&'static str, Box>>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/tokens/token.rs:38:70 [INFO] [stderr] | [INFO] [stderr] 38 | TokenValueRef::Punctuation(s) => TokenValue::Punctuation(s.into()), [INFO] [stderr] | ^^^^^^^^ help: consider removing `.into()`: `s` [INFO] [stderr] Checking serde_json v0.6.1 [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/tokens/token.rs:91:5 [INFO] [stderr] | [INFO] [stderr] 91 | / pub fn new_big_num<'c>(num: &'c str) -> ConstRef<'c> { [INFO] [stderr] 92 | | ConstRef::Num(ConstNumberRef::Big(num)) [INFO] [stderr] 93 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/tokens/token.rs:103:5 [INFO] [stderr] | [INFO] [stderr] 103 | / pub fn new_str<'c>(s: &'c str) -> ConstRef<'c> { [INFO] [stderr] 104 | | ConstRef::Str(s) [INFO] [stderr] 105 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/tokens/lexer/matchers.rs:32:17 [INFO] [stderr] | [INFO] [stderr] 32 | / Regex::new( [INFO] [stderr] 33 | | r#"\A\s+"# [INFO] [stderr] 34 | | ).ok().expect("Failed to init whitespace") [INFO] [stderr] | |__________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ok_expect)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/tokens/lexer/matchers.rs:37:17 [INFO] [stderr] | [INFO] [stderr] 37 | / Regex::new( [INFO] [stderr] 38 | | r#"\A[a-zA-Z_\x7F-\xFF][a-zA-Z0-9_\x7F-\xFF]*"# [INFO] [stderr] 39 | | ).ok().expect("Failed to init regex_name") [INFO] [stderr] | |__________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/tokens/lexer/matchers.rs:42:17 [INFO] [stderr] | [INFO] [stderr] 42 | / Regex::new( [INFO] [stderr] 43 | | r#"\A[0-9]+(?:\.[0-9]+)?"# [INFO] [stderr] 44 | | ).ok().expect("Failed to init regex_number") [INFO] [stderr] | |____________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/tokens/lexer/matchers.rs:47:17 [INFO] [stderr] | [INFO] [stderr] 47 | / Regex::new( [INFO] [stderr] 48 | | r#"\A(?s:"([^#"\\]*(?:\\.[^#"\\]*)*)"|'([^'\\]*(?:\\.[^'\\]*)*)')"# [INFO] [stderr] 49 | | ).ok().expect("Failed to init regex_string") [INFO] [stderr] | |____________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/tokens/lexer/matchers.rs:52:17 [INFO] [stderr] | [INFO] [stderr] 52 | / Regex::new( [INFO] [stderr] 53 | | r#"\A""# [INFO] [stderr] 54 | | ).ok().expect("Failed to init regex_dq_string_delim") [INFO] [stderr] | |_____________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/tokens/lexer/matchers.rs:53:21 [INFO] [stderr] | [INFO] [stderr] 53 | r#"\A""# [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivial_regex)] on by default [INFO] [stderr] = help: consider using `str::starts_with` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/tokens/lexer/matchers.rs:58:17 [INFO] [stderr] | [INFO] [stderr] 58 | / Regex::new( [INFO] [stderr] 59 | | &format!( [INFO] [stderr] 60 | | r#"\A(?:\s*{}{}\s*|\s*{})"#, [INFO] [stderr] 61 | | "e(&options.whitespace_trim), [INFO] [stderr] ... | [INFO] [stderr] 64 | | ) [INFO] [stderr] 65 | | ).ok().expect("Failed to init lex_var") [INFO] [stderr] | |_______________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/tokens/lexer/matchers.rs:68:17 [INFO] [stderr] | [INFO] [stderr] 68 | / Regex::new( [INFO] [stderr] 69 | | &format!( [INFO] [stderr] 70 | | r#"\A\s*(?:{}{}\s*|\s*{})\n?"#, [INFO] [stderr] 71 | | "e(&options.whitespace_trim), [INFO] [stderr] ... | [INFO] [stderr] 74 | | ) [INFO] [stderr] 75 | | ).ok().expect("Failed to init lex_block") [INFO] [stderr] | |_________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/tokens/lexer/matchers.rs:78:17 [INFO] [stderr] | [INFO] [stderr] 78 | / Regex::new( [INFO] [stderr] 79 | | &format!( [INFO] [stderr] 80 | | r#"(?s)({}{}|{})\s*(?:endraw)\s*(?:{}{}\s*|\s*{})"#, [INFO] [stderr] 81 | | "e(&options.tag_block.start), [INFO] [stderr] ... | [INFO] [stderr] 87 | | ) [INFO] [stderr] 88 | | ).ok().expect("Failed to init lex_raw_data") [INFO] [stderr] | |____________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/tokens/lexer/matchers.rs:91:17 [INFO] [stderr] | [INFO] [stderr] 91 | / Regex::new( [INFO] [stderr] 92 | | &format!( [INFO] [stderr] 93 | | r#"(?s)({}{}|{})\s*(?:endverbatim)\s*(?:{}{}\s*|\s*{})"#, [INFO] [stderr] 94 | | "e(&options.tag_block.start), [INFO] [stderr] ... | [INFO] [stderr] 100 | | ) [INFO] [stderr] 101 | | ).ok().expect("Failed to init lex_verbatim_data") [INFO] [stderr] | |_________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/tokens/lexer/matchers.rs:107:17 [INFO] [stderr] | [INFO] [stderr] 107 | / Regex::new( [INFO] [stderr] 108 | | &format!( [INFO] [stderr] 109 | | r#"(?s)(?:{}{}\s*|{})\n?"#, [INFO] [stderr] 110 | | "e(&options.whitespace_trim), [INFO] [stderr] ... | [INFO] [stderr] 113 | | ) [INFO] [stderr] 114 | | ).ok().expect("Failed to init lex_comment") [INFO] [stderr] | |___________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/tokens/lexer/matchers.rs:117:17 [INFO] [stderr] | [INFO] [stderr] 117 | / Regex::new( [INFO] [stderr] 118 | | &format!( [INFO] [stderr] 119 | | r#"\A(?s)\s*(raw|verbatim)\s*(?:{}{}\s*|\s*{})"#, [INFO] [stderr] 120 | | "e(&options.whitespace_trim), [INFO] [stderr] ... | [INFO] [stderr] 123 | | ) [INFO] [stderr] 124 | | ).ok().expect("Failed to init lex_block_raw") [INFO] [stderr] | |_____________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/tokens/lexer/matchers.rs:127:17 [INFO] [stderr] | [INFO] [stderr] 127 | / Regex::new( [INFO] [stderr] 128 | | &format!( [INFO] [stderr] 129 | | r#"\A(?s)\s*line\s+(\d+)\s*{}"#, [INFO] [stderr] 130 | | "e(&options.tag_block.end) [INFO] [stderr] 131 | | ) [INFO] [stderr] 132 | | ).ok().expect("Failed to init lex_block_line") [INFO] [stderr] | |______________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/tokens/lexer/matchers.rs:135:17 [INFO] [stderr] | [INFO] [stderr] 135 | / Regex::new( [INFO] [stderr] 136 | | &format!( [INFO] [stderr] 137 | | r#"(?s)({}|{}|{})({})?"#, [INFO] [stderr] 138 | | "e(&options.tag_variable.start), [INFO] [stderr] ... | [INFO] [stderr] 142 | | ) [INFO] [stderr] 143 | | ).ok().expect("Failed to init lex_tokens_start") [INFO] [stderr] | |________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/tokens/lexer/matchers.rs:146:17 [INFO] [stderr] | [INFO] [stderr] 146 | / Regex::new( [INFO] [stderr] 147 | | &format!( [INFO] [stderr] 148 | | r#"\A{}\s*"#, [INFO] [stderr] 149 | | "e(&options.interpolation.start) [INFO] [stderr] 150 | | ) [INFO] [stderr] 151 | | ).ok().expect("Failed to init interpolation_start") [INFO] [stderr] | |___________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/tokens/lexer/matchers.rs:154:17 [INFO] [stderr] | [INFO] [stderr] 154 | / Regex::new( [INFO] [stderr] 155 | | &format!( [INFO] [stderr] 156 | | r#"\A\s*{}"#, [INFO] [stderr] 157 | | "e(&options.interpolation.end) [INFO] [stderr] 158 | | ) [INFO] [stderr] 159 | | ).ok().expect("Failed to init interpolation_end") [INFO] [stderr] | |_________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/tokens/lexer/matchers.rs:209:17 [INFO] [stderr] | [INFO] [stderr] 209 | / operators.iter() [INFO] [stderr] 210 | | .map(|v| *v) [INFO] [stderr] | |________________________________^ help: Consider calling the dedicated `cloned` method: `operators.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/tokens/lexer/matchers.rs:231:22 [INFO] [stderr] | [INFO] [stderr] 231 | _ => format!( [INFO] [stderr] | ______________________^ [INFO] [stderr] 232 | | "{}", [INFO] [stderr] 233 | | quote(operator) [INFO] [stderr] 234 | | ), [INFO] [stderr] | |_________________^ help: consider using .to_string(): `quote(operator).to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tokens/lexer/iter.rs:144:12 [INFO] [stderr] | [INFO] [stderr] 144 | if self.tokens.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.tokens.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/tokens/lexer/iter.rs:184:29 [INFO] [stderr] | [INFO] [stderr] 184 | .filter_map(|c| match c.is_empty() { [INFO] [stderr] | _____________________________^ [INFO] [stderr] 185 | | true => None, [INFO] [stderr] 186 | | false => Some(Position::from_capture(&lexer.options, c)), [INFO] [stderr] 187 | | }) [INFO] [stderr] | |_____________^ help: consider using an if/else expression: `if c.is_empty() { None } else { Some(Position::from_capture(&lexer.options, c)) }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/tokens/lexer/iter.rs:221:17 [INFO] [stderr] | [INFO] [stderr] 221 | / match self.brackets.pop() { [INFO] [stderr] 222 | | Some(bracket) => { [INFO] [stderr] 223 | | self.push_error( [INFO] [stderr] 224 | | TemplateError::Unclosed(format!("{}", bracket.open)), [INFO] [stderr] ... | [INFO] [stderr] 229 | | _ => (), [INFO] [stderr] 230 | | }; [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 221 | if let Some(bracket) = self.brackets.pop() { [INFO] [stderr] 222 | self.push_error( [INFO] [stderr] 223 | TemplateError::Unclosed(format!("{}", bracket.open)), [INFO] [stderr] 224 | Some(bracket.line_num) [INFO] [stderr] 225 | ); [INFO] [stderr] 226 | break; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tokens/lexer/iter.rs:236:16 [INFO] [stderr] | [INFO] [stderr] 236 | if self.tokens.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.tokens.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/tokens/lexer/iter.rs:267:28 [INFO] [stderr] | [INFO] [stderr] 267 | let mut position = self.positions[self.position].clone(); self.position += 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.positions[self.position]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/tokens/lexer/iter.rs:273:24 [INFO] [stderr] | [INFO] [stderr] 273 | position = self.positions[self.position].clone(); self.position += 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.positions[self.position]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/tokens/lexer/iter.rs:313:45 [INFO] [stderr] | [INFO] [stderr] 313 | self.line_num = line_num.parse() [INFO] [stderr] | _____________________________________________^ [INFO] [stderr] 314 | | .ok() [INFO] [stderr] 315 | | .expect("twig bug: expected regexp matched as digit to be parseable as line number"); [INFO] [stderr] | |____________________________________________________________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tokens/lexer/iter.rs:339:12 [INFO] [stderr] | [INFO] [stderr] 339 | if 0 == self.brackets.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.brackets.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tokens/lexer/iter.rs:362:12 [INFO] [stderr] | [INFO] [stderr] 362 | if 0 == self.brackets.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.brackets.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/tokens/lexer/iter.rs:540:36 [INFO] [stderr] | [INFO] [stderr] 540 | let next_char = &self.code[loc .. loc + 1]; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: use: `loc..=loc` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/tokens/lexer/iter.rs:544:17 [INFO] [stderr] | [INFO] [stderr] 544 | format!("{}", next_char) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `next_char.to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/tokens/lexer/iter.rs:660:46 [INFO] [stderr] | [INFO] [stderr] 660 | if end_text.contains("-") { [INFO] [stderr] | ^^^ help: try using a char instead: `'-'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/tokens/lexer/iter.rs:673:25 [INFO] [stderr] | [INFO] [stderr] 673 | format!("{}", tag) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `tag.to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tokens/lexer/iter.rs:684:16 [INFO] [stderr] | [INFO] [stderr] 684 | if text.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `text.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/nodes/parser/body.rs:32:16 [INFO] [stderr] | [INFO] [stderr] 32 | if let None = maybe_line { [INFO] [stderr] | _________- ^^^^ [INFO] [stderr] 33 | | maybe_line = Some(token.line); [INFO] [stderr] 34 | | } [INFO] [stderr] | |_________- help: try this: `if maybe_line.is_none()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/nodes/parser/expr.rs:86:16 [INFO] [stderr] | [INFO] [stderr] 86 | if let Err(_) = parser.expect(TokenValueRef::Punctuation(')')) { [INFO] [stderr] | _________- ^^^^^^ [INFO] [stderr] 87 | | return Err(TemplateError::ParenthesisNotClosed.at(token.line)); [INFO] [stderr] 88 | | } [INFO] [stderr] | |_________- help: try this: `if parser.expect(TokenValueRef::Punctuation(')')).is_err()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/nodes/parser/expr.rs:167:1 [INFO] [stderr] | [INFO] [stderr] 167 | / pub fn get_number_expr<'c>(num: ConstNumberRef<'c>, line: usize) -> Expr<'c> { [INFO] [stderr] 168 | | Expr::new_at(ExprValue::Constant(match num { [INFO] [stderr] 169 | | ConstNumberRef::Big(v) => ExprConstant::Big(v), [INFO] [stderr] 170 | | ConstNumberRef::Float(v) => ExprConstant::Float(v), [INFO] [stderr] 171 | | ConstNumberRef::Int(v) => ExprConstant::Int(v), [INFO] [stderr] 172 | | }), line) [INFO] [stderr] 173 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/nodes/parser/expr.rs:407:12 [INFO] [stderr] | [INFO] [stderr] 407 | if args.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!args.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/nodes/parser/expr.rs:438:12 [INFO] [stderr] | [INFO] [stderr] 438 | if args.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!args.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `nodes::parser::ImportedSymbols<'c>` [INFO] [stderr] --> src/nodes/parser/mod.rs:33:5 [INFO] [stderr] | [INFO] [stderr] 33 | / pub fn new<'r>() -> ImportedSymbols<'r> { [INFO] [stderr] 34 | | ImportedSymbols { [INFO] [stderr] 35 | | functions: HashMap::new() [INFO] [stderr] 36 | | } [INFO] [stderr] 37 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 28 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/nodes/parser/mod.rs:78:5 [INFO] [stderr] | [INFO] [stderr] 78 | / pub fn push_local_scope<'r>(&'r mut self) { [INFO] [stderr] 79 | | self.imported_symbols.push(ImportedSymbols::new()); [INFO] [stderr] 80 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/nodes/parser/mod.rs:82:5 [INFO] [stderr] | [INFO] [stderr] 82 | / pub fn pop_local_scope<'r>(&'r mut self) { [INFO] [stderr] 83 | | self.imported_symbols.pop(); [INFO] [stderr] 84 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/nodes/parser/mod.rs:93:54 [INFO] [stderr] | [INFO] [stderr] 93 | .insert(alias, ImportedFunction::new(uuid.clone(), alias, name)); [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `uuid` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: defining a method called `next` on this type; consider implementing the `std::iter::Iterator` trait or choosing a less ambiguous name [INFO] [stderr] --> src/nodes/parser/mod.rs:138:5 [INFO] [stderr] | [INFO] [stderr] 138 | / pub fn next<'r>(&'r mut self) -> TemplateResult> [INFO] [stderr] 139 | | { [INFO] [stderr] 140 | | let token = match self.tokens.peek() { [INFO] [stderr] 141 | | Some(&Ok(ref t)) => t.clone(), [INFO] [stderr] ... | [INFO] [stderr] 152 | | Ok(token) [INFO] [stderr] 153 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::should_implement_trait)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `nodes::node::body::Body<'c>` [INFO] [stderr] --> src/nodes/node/body.rs:31:5 [INFO] [stderr] | [INFO] [stderr] 31 | / pub fn new() -> Body<'c> { [INFO] [stderr] 32 | | Body::List { items: Vec::new() } [INFO] [stderr] 33 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 30 | impl Default for nodes::node::body::Body<'c> { [INFO] [stderr] 31 | fn default() -> Self { [INFO] [stderr] 32 | Self::new() [INFO] [stderr] 33 | } [INFO] [stderr] 34 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/nodes/node/expr.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | / pub fn new_at<'r>(value: ExprValue<'r>, line: usize) -> Expr<'r> { [INFO] [stderr] 11 | | Expr { [INFO] [stderr] 12 | | line: line, [INFO] [stderr] 13 | | value: value [INFO] [stderr] 14 | | } [INFO] [stderr] 15 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/nodes/node/expr.rs:25:5 [INFO] [stderr] | [INFO] [stderr] 25 | / pub fn new_str_constant<'r>(value: &'r str, line: usize) -> Expr<'r> { [INFO] [stderr] 26 | | Expr::new_at(ExprValue::Constant(ExprConstant::Str(value)), line) [INFO] [stderr] 27 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/nodes/node/expr.rs:41:5 [INFO] [stderr] | [INFO] [stderr] 41 | / pub fn new_name<'r>(name: &'r str, line: usize) -> Expr<'r> { [INFO] [stderr] 42 | | Expr::new_at(ExprValue::Name(name), line) [INFO] [stderr] 43 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `nodes::node::module::Module<'c>` [INFO] [stderr] --> src/nodes/node/module.rs:26:5 [INFO] [stderr] | [INFO] [stderr] 26 | / pub fn new() -> Module<'c> { [INFO] [stderr] 27 | | Module { [INFO] [stderr] 28 | | body: Body::new(), [INFO] [stderr] 29 | | // blocks: vec![], [INFO] [stderr] ... | [INFO] [stderr] 42 | | } [INFO] [stderr] 43 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 25 | impl Default for nodes::node::module::Module<'c> { [INFO] [stderr] 26 | fn default() -> Self { [INFO] [stderr] 27 | Self::new() [INFO] [stderr] 28 | } [INFO] [stderr] 29 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/instructions/compiler/mod.rs:53:9 [INFO] [stderr] | [INFO] [stderr] 53 | self.result.clone() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.result` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/error/engine.rs:20:20 [INFO] [stderr] | [INFO] [stderr] 20 | if search_paths.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `search_paths.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/error/mod.rs:98:21 [INFO] [stderr] | [INFO] [stderr] 98 | / if &raw_message[len - 1 ..] == "." { [INFO] [stderr] 99 | | true [INFO] [stderr] 100 | | } else { [INFO] [stderr] 101 | | false [INFO] [stderr] 102 | | } [INFO] [stderr] | |_____________________^ help: you can reduce it to: `&raw_message[len - 1 ..] == "."` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/extension/core/token_parsers/parser_from.rs:29:13 [INFO] [stderr] | [INFO] [stderr] 29 | / let mut alias = name; [INFO] [stderr] 30 | | if try!(parser.skip_to_next_if(TokenValueRef::Name("as"))) { [INFO] [stderr] 31 | | alias = try!(parser.expect_name()); [INFO] [stderr] 32 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] help: it is more idiomatic to write [INFO] [stderr] | [INFO] [stderr] 29 | let alias = if match $ expr { [INFO] [stderr] 30 | $ crate :: result :: Result :: Ok ( val ) => val , $ crate :: result :: Result [INFO] [stderr] 31 | :: Err ( err ) => { [INFO] [stderr] 32 | return $ crate :: result :: Result :: Err ( [INFO] [stderr] 33 | $ crate :: convert :: From :: from ( err ) ) } } { match $ expr { [INFO] [stderr] 34 | $ crate :: result :: Result :: Ok ( val ) => val , $ crate :: result :: Result [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/function/mod.rs:15:13 [INFO] [stderr] | [INFO] [stderr] 15 | Dynamic(Box< [INFO] [stderr] | _____________^ [INFO] [stderr] 16 | | for<'e> Fn(&'e [Value]) -> RuntimeResult [INFO] [stderr] 17 | | >), [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/function/mod.rs:21:18 [INFO] [stderr] | [INFO] [stderr] 21 | compile: Box< [INFO] [stderr] | __________________^ [INFO] [stderr] 22 | | for<'c> Fn(&mut Staging<'c, Value>) -> TemplateResult [INFO] [stderr] 23 | | > [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/value/mod.rs:39:10 [INFO] [stderr] | [INFO] [stderr] 39 | Func(Rc Fn(&'r [Value]) -> Option >), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/value/mod.rs:68:45 [INFO] [stderr] | [INFO] [stderr] 68 | Value::Int(ref v) => Value::Int(v.clone()), [INFO] [stderr] | ^^^^^^^^^ help: try dereferencing it: `*v` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/value/mod.rs:69:49 [INFO] [stderr] | [INFO] [stderr] 69 | Value::Float(ref v) => Value::Float(v.clone()), [INFO] [stderr] | ^^^^^^^^^ help: try dereferencing it: `*v` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `mold::Staging<'c, V>` [INFO] [stderr] --> src/mold/mod.rs:13:5 [INFO] [stderr] | [INFO] [stderr] 13 | / pub fn new<'r>() -> Staging<'r, V> { [INFO] [stderr] 14 | | let mut st = Staging { [INFO] [stderr] 15 | | next_constant: Constant(0), [INFO] [stderr] 16 | | unique_constants: HashMap::new(), [INFO] [stderr] ... | [INFO] [stderr] 23 | | st [INFO] [stderr] 24 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 12 | impl Default for mold::Staging<'c, V> { [INFO] [stderr] 13 | fn default() -> Self { [INFO] [stderr] 14 | Self::new() [INFO] [stderr] 15 | } [INFO] [stderr] 16 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/mold/mod.rs:69:42 [INFO] [stderr] | [INFO] [stderr] 69 | return Some(Mem::Binding(binding.clone())); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try dereferencing it: `*binding` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/mold/mod.rs:106:44 [INFO] [stderr] | [INFO] [stderr] 106 | let result = self.map.entry(&name).or_insert(current.clone()).clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| current.clone())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/engine/mod.rs:155:9 [INFO] [stderr] | [INFO] [stderr] 155 | / loop { [INFO] [stderr] 156 | | match interpreter.read_to_string(&mut res) { [INFO] [stderr] 157 | | Err(e) => { [INFO] [stderr] 158 | | match e.description() { [INFO] [stderr] ... | [INFO] [stderr] 166 | | } [INFO] [stderr] 167 | | } [INFO] [stderr] | |_________^ help: try: `while let Err(e) = interpreter.read_to_string(&mut res) { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tokens/lexer/delimiters.rs:10:13 [INFO] [stderr] | [INFO] [stderr] 10 | start: start, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `start` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tokens/lexer/delimiters.rs:11:13 [INFO] [stderr] | [INFO] [stderr] 11 | end: end, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `end` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tokens/lexer/iter.rs:104:13 [INFO] [stderr] | [INFO] [stderr] 104 | line_num: line_num, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `line_num` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tokens/lexer/iter.rs:193:13 [INFO] [stderr] | [INFO] [stderr] 193 | lexer: lexer, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `lexer` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tokens/lexer/iter.rs:194:13 [INFO] [stderr] | [INFO] [stderr] 194 | code: code, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `code` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tokens/lexer/iter.rs:203:13 [INFO] [stderr] | [INFO] [stderr] 203 | positions: positions, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `positions` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tokens/lexer/mod.rs:23:13 [INFO] [stderr] | [INFO] [stderr] 23 | options: options, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `options` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/nodes/parser/expr.rs:108:21 [INFO] [stderr] | [INFO] [stderr] 108 | uuid: uuid, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `uuid` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/nodes/parser/expr.rs:109:21 [INFO] [stderr] | [INFO] [stderr] 109 | alias: alias, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `alias` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/nodes/parser/expr.rs:115:17 [INFO] [stderr] | [INFO] [stderr] 115 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/nodes/parser/expr.rs:383:13 [INFO] [stderr] | [INFO] [stderr] 383 | arguments: arguments, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `arguments` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/nodes/parser/expr.rs:384:13 [INFO] [stderr] | [INFO] [stderr] 384 | call_type: call_type [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `call_type` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/nodes/parser/mod.rs:23:13 [INFO] [stderr] | [INFO] [stderr] 23 | uuid: uuid, name: name, alias: alias [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `uuid` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/nodes/parser/mod.rs:23:25 [INFO] [stderr] | [INFO] [stderr] 23 | uuid: uuid, name: name, alias: alias [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/nodes/parser/mod.rs:23:37 [INFO] [stderr] | [INFO] [stderr] 23 | uuid: uuid, name: name, alias: alias [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `alias` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/nodes/parser/mod.rs:72:13 [INFO] [stderr] | [INFO] [stderr] 72 | env: env, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `env` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/nodes/node/expr.rs:12:13 [INFO] [stderr] | [INFO] [stderr] 12 | line: line, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `line` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/nodes/node/expr.rs:13:13 [INFO] [stderr] | [INFO] [stderr] 13 | value: value [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/instructions/compiler/mod.rs:27:13 [INFO] [stderr] | [INFO] [stderr] 27 | origin: origin, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `origin` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/instructions/compiler/mod.rs:36:13 [INFO] [stderr] | [INFO] [stderr] 36 | origin: origin, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `origin` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/instructions/compiler/mod.rs:45:13 [INFO] [stderr] | [INFO] [stderr] 45 | origin: origin, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `origin` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/instructions/compiler/mod.rs:46:13 [INFO] [stderr] | [INFO] [stderr] 46 | stack_length: stack_length, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `stack_length` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/error/runtime.rs:86:13 [INFO] [stderr] | [INFO] [stderr] 86 | stack_trace: stack_trace [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `stack_trace` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/error/runtime.rs:133:13 [INFO] [stderr] | [INFO] [stderr] 133 | message: message, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `message` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/error/mod.rs:58:13 [INFO] [stderr] | [INFO] [stderr] 58 | err: err, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `err` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/error/mod.rs:85:13 [INFO] [stderr] | [INFO] [stderr] 85 | loc: loc, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `loc` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/error/mod.rs:86:13 [INFO] [stderr] | [INFO] [stderr] 86 | err: err, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `err` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/error/mod.rs:130:20 [INFO] [stderr] | [INFO] [stderr] 130 | Location { line: line } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `line` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/extension/core/token_parsers/parser_macro.rs:51:13 [INFO] [stderr] | [INFO] [stderr] 51 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/extension/core/token_parsers/parser_macro.rs:53:13 [INFO] [stderr] | [INFO] [stderr] 53 | arguments: arguments, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `arguments` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/extension/core/token_parsers/parser_macro.rs:54:13 [INFO] [stderr] | [INFO] [stderr] 54 | line: line, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `line` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/operator/mod.rs:20:32 [INFO] [stderr] | [INFO] [stderr] 20 | OperatorKind::Binary { value: value, associativity: associativity } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/operator/mod.rs:20:46 [INFO] [stderr] | [INFO] [stderr] 20 | OperatorKind::Binary { value: value, associativity: associativity } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `associativity` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/operator/mod.rs:24:32 [INFO] [stderr] | [INFO] [stderr] 24 | OperatorKind::Binary { value: value, associativity: Associativity::Left } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/operator/mod.rs:28:32 [INFO] [stderr] | [INFO] [stderr] 28 | OperatorKind::Binary { value: value, associativity: Associativity::Right } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/operator/mod.rs:32:31 [INFO] [stderr] | [INFO] [stderr] 32 | OperatorKind::Unary { value: value } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `value` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/function/mod.rs:43:13 [INFO] [stderr] | [INFO] [stderr] 43 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/function/mod.rs:58:13 [INFO] [stderr] | [INFO] [stderr] 58 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/value/ops.rs:94:47 [INFO] [stderr] | [INFO] [stderr] 94 | 'i' => state = State::Float { starts_at: starts_at }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `starts_at` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/value/ops.rs:100:47 [INFO] [stderr] | [INFO] [stderr] 100 | '.' => state = State::Float { starts_at: starts_at }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `starts_at` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/value/ops.rs:101:69 [INFO] [stderr] | [INFO] [stderr] 101 | c if c.is_whitespace() => state = State::MaybeInt { starts_at: starts_at, ends_at: i }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `starts_at` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/value/ops.rs:104:48 [INFO] [stderr] | [INFO] [stderr] 104 | state = State::Float { starts_at: starts_at }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `starts_at` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/engine/mod.rs:128:13 [INFO] [stderr] | [INFO] [stderr] 128 | loader: loader, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `loader` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> tests/fixture_tests.rs:306:5 [INFO] [stderr] | [INFO] [stderr] 306 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> examples/lex_tokens.rs:15:17 [INFO] [stderr] | [INFO] [stderr] 15 | let mut f = File::open(&path) [INFO] [stderr] | _________________^ [INFO] [stderr] 16 | | .ok() [INFO] [stderr] 17 | | .expect(&format!("failed to open example template at {:?}", path)); [INFO] [stderr] | |__________________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ok_expect)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> examples/lex_tokens.rs:17:10 [INFO] [stderr] | [INFO] [stderr] 17 | .expect(&format!("failed to open example template at {:?}", path)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("failed to open example template at {:?}", path))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::expect_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/tokens/lexer/iter.rs:11:21 [INFO] [stderr] | [INFO] [stderr] 11 | const PUNCTUATION: &'static str = "()[]{}?:.,|"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tokens/lexer/iter.rs:158:26 [INFO] [stderr] | [INFO] [stderr] 158 | (None, _) => return Err( [INFO] [stderr] | __________________________^ [INFO] [stderr] 159 | | TemplateError::ExpectedTokenTypeButReceived( [INFO] [stderr] 160 | | (expected.into(), Received::EndOfStream) [INFO] [stderr] 161 | | ).at(line) [INFO] [stderr] 162 | | ), [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 158 | (None, _) => Err( [INFO] [stderr] 159 | TemplateError::ExpectedTokenTypeButReceived( [INFO] [stderr] 160 | (expected.into(), Received::EndOfStream) [INFO] [stderr] 161 | ).at(line) [INFO] [stderr] 162 | ), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tokens/lexer/iter.rs:166:17 [INFO] [stderr] | [INFO] [stderr] 166 | / return Err( [INFO] [stderr] 167 | | TemplateError::ExpectedTokenTypeButReceived( [INFO] [stderr] 168 | | (expected.into(), Received::Token(token.value.into())) [INFO] [stderr] 169 | | ).at(token.line) [INFO] [stderr] 170 | | ); [INFO] [stderr] | |__________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 166 | Err( [INFO] [stderr] 167 | TemplateError::ExpectedTokenTypeButReceived( [INFO] [stderr] 168 | (expected.into(), Received::Token(token.value.into())) [INFO] [stderr] 169 | ).at(token.line) [INFO] [stderr] 170 | ) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/tokens/lexer/iter.rs:209:9 [INFO] [stderr] | [INFO] [stderr] 209 | iter [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/tokens/lexer/iter.rs:192:20 [INFO] [stderr] | [INFO] [stderr] 192 | let iter = TokenIter { [INFO] [stderr] | ____________________^ [INFO] [stderr] 193 | | lexer: lexer, [INFO] [stderr] 194 | | code: code, [INFO] [stderr] 195 | | cursor: 0, [INFO] [stderr] ... | [INFO] [stderr] 206 | | finished: false, [INFO] [stderr] 207 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/nodes/parser/expr.rs:114:13 [INFO] [stderr] | [INFO] [stderr] 114 | / return Ok(Expr::new_at(ExprValue::FunctionCall { [INFO] [stderr] 115 | | name: name, [INFO] [stderr] 116 | | arguments: try!(parse_named_arguments(parser, false)) [INFO] [stderr] 117 | | }, line)); [INFO] [stderr] | |______________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 114 | Ok(Expr::new_at(ExprValue::FunctionCall { [INFO] [stderr] 115 | name: name, [INFO] [stderr] 116 | arguments: try!(parse_named_arguments(parser, false)) [INFO] [stderr] 117 | }, line)) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/nodes/parser/mod.rs:172:25 [INFO] [stderr] | [INFO] [stderr] 172 | None => return Err(TemplateError::UnexpectedEndOfTemplate.at(line)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(TemplateError::UnexpectedEndOfTemplate.at(line))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/nodes/parser/mod.rs:173:33 [INFO] [stderr] | [INFO] [stderr] 173 | Some(Err(e)) => return Err(e), [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `Err(e)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unused import: `little::Instruction` [INFO] [stderr] --> src/extension/core/mod.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use little::Instruction; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/extension/core/token_parsers/mod.rs:39:26 [INFO] [stderr] | [INFO] [stderr] 39 | const INVALID_LVALUES: [&'static str; 3] = ["true", "false", "none"]; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/value/ops.rs:211:27 [INFO] [stderr] | [INFO] [stderr] 211 | ("145354534", 145354534), [INFO] [stderr] | ^^^^^^^^^ help: consider: `145_354_534` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/value/ops.rs:246:9 [INFO] [stderr] | [INFO] [stderr] 246 | / if a.is_infinite() && b.is_infinite() { [INFO] [stderr] 247 | | if a.is_sign_positive() == b.is_sign_positive() { [INFO] [stderr] 248 | | return; [INFO] [stderr] 249 | | } [INFO] [stderr] 250 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 246 | if a.is_infinite() && b.is_infinite() && a.is_sign_positive() == b.is_sign_positive() { [INFO] [stderr] 247 | return; [INFO] [stderr] 248 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/value/ops.rs:252:24 [INFO] [stderr] | [INFO] [stderr] 252 | const e: f64 = 0.0000001; [INFO] [stderr] | ^^^^^^^^^ help: consider: `0.000_000_1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> tests/parser/can_only_assign_to_names.rs:15:37 [INFO] [stderr] | [INFO] [stderr] 15 | fn get_failing_tests_for_assignment<'r>() -> Vec<&'static str> { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::extra_unused_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> tests/parser/array_expression.rs:111:32 [INFO] [stderr] | [INFO] [stderr] 111 | fn get_failing_tests_for_array<'r>() -> Vec<&'static str> { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> tests/lexer/mod.rs:67:28 [INFO] [stderr] | [INFO] [stderr] 67 | &*repeat("*").take(100000).collect::(), [INFO] [stderr] | ^^^^^^ help: consider: `100_000` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> tests/lexer/mod.rs:119:35 [INFO] [stderr] | [INFO] [stderr] 119 | let text = &*repeat("*").take(100000).collect::(); [INFO] [stderr] | ^^^^^^ help: consider: `100_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> tests/lexer/mod.rs:136:35 [INFO] [stderr] | [INFO] [stderr] 136 | let text = &*repeat("x").take(100000).collect::(); [INFO] [stderr] | ^^^^^^ help: consider: `100_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> tests/lexer/mod.rs:154:35 [INFO] [stderr] | [INFO] [stderr] 154 | let text = &*repeat("x").take(100000).collect::(); [INFO] [stderr] | ^^^^^^ help: consider: `100_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> tests/lexer/mod.rs:191:60 [INFO] [stderr] | [INFO] [stderr] 191 | _s = expect(_s, TokenValueRef::Value(ConstRef::new_int(9223372036854775807))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider: `9_223_372_036_854_775_807` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unused `#[macro_use]` import [INFO] [stderr] --> tests/fixture_tests.rs:5:1 [INFO] [stderr] | [INFO] [stderr] 5 | #[macro_use] extern crate log; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> tests/fixture_tests.rs:112:20 [INFO] [stderr] | [INFO] [stderr] 112 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 113 | | if let Some(Some("test")) = entry.path().extension().map(|v| v.to_str()) { [INFO] [stderr] 114 | | if let Some(err) = cb(&entry) { [INFO] [stderr] 115 | | errors.push(err); [INFO] [stderr] 116 | | } [INFO] [stderr] 117 | | } [INFO] [stderr] 118 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 112 | } else if let Some(Some("test")) = entry.path().extension().map(|v| v.to_str()) { [INFO] [stderr] 113 | if let Some(err) = cb(&entry) { [INFO] [stderr] 114 | errors.push(err); [INFO] [stderr] 115 | } [INFO] [stderr] 116 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> tests/fixture_tests.rs:155:29 [INFO] [stderr] | [INFO] [stderr] 155 | const TEMPLATE_NAME_START: &'static str = "--TEMPLATE("; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> tests/fixture_tests.rs:156:27 [INFO] [stderr] | [INFO] [stderr] 156 | const TEMPLATE_NAME_END: &'static str = ")--"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> tests/lexer/mod.rs:426:1 [INFO] [stderr] | [INFO] [stderr] 426 | / fn expect_end<'i, 'c>(mut stream: TokenIter<'i, 'c>) { [INFO] [stderr] 427 | | match stream.next() { [INFO] [stderr] 428 | | Some(other) => panic!("expected the stream to be at the end, but got {:?}", other), [INFO] [stderr] 429 | | _ => (), [INFO] [stderr] 430 | | } [INFO] [stderr] 431 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> tests/lexer/mod.rs:427:5 [INFO] [stderr] | [INFO] [stderr] 427 | / match stream.next() { [INFO] [stderr] 428 | | Some(other) => panic!("expected the stream to be at the end, but got {:?}", other), [INFO] [stderr] 429 | | _ => (), [INFO] [stderr] 430 | | } [INFO] [stderr] | |_____^ help: try this: `if let Some(other) = stream.next() { panic!("expected the stream to be at the end, but got {:?}", other) }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: unreachable expression [INFO] [stderr] --> src/nodes/parser/expr.rs:379:5 [INFO] [stderr] | [INFO] [stderr] 379 | / Ok(Expr::new_at( [INFO] [stderr] 380 | | ExprValue::GetAttr { [INFO] [stderr] 381 | | node: Box::new(node), [INFO] [stderr] 382 | | arg: Box::new(arg), [INFO] [stderr] ... | [INFO] [stderr] 386 | | line [INFO] [stderr] 387 | | )) [INFO] [stderr] | |______^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unreachable_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> tests/fixture_tests.rs:204:67 [INFO] [stderr] | [INFO] [stderr] 204 | ReadState::Message(ref mut m) => { if m.len() > 0 { m.push_str("\n"); } m.push_str(&line); }, [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!m.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> tests/fixture_tests.rs:205:73 [INFO] [stderr] | [INFO] [stderr] 205 | ReadState::Template((_, ref mut m)) => { if m.len() > 0 { m.push_str("\n"); } m.push_str(&line); }, [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!m.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> tests/fixture_tests.rs:206:64 [INFO] [stderr] | [INFO] [stderr] 206 | ReadState::Data(ref mut m) => { if m.len() > 0 { m.push_str("\n"); } m.push_str(&line); }, [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!m.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> tests/fixture_tests.rs:207:66 [INFO] [stderr] | [INFO] [stderr] 207 | ReadState::Config(ref mut m) => { if m.len() > 0 { m.push_str("\n"); } m.push_str(&line); }, [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!m.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> tests/fixture_tests.rs:208:66 [INFO] [stderr] | [INFO] [stderr] 208 | ReadState::Expect(ref mut m) => { if m.len() > 0 { m.push_str("\n"); } m.push_str(&line); }, [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!m.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> tests/fixture_tests.rs:260:26 [INFO] [stderr] | [INFO] [stderr] 260 | fn print_diff(changeset: &Vec) -> io::Result<()> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: change this to: `&[Difference]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `changeset`. [INFO] [stderr] --> tests/fixture_tests.rs:263:14 [INFO] [stderr] | [INFO] [stderr] 263 | for i in 0..changeset.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 263 | for in &changeset { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> tests/fixture_tests.rs:288:31 [INFO] [stderr] | [INFO] [stderr] 288 | fn print_uncolored(changeset: &Vec) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: change this to: `&[Difference]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `changeset`. [INFO] [stderr] --> tests/fixture_tests.rs:289:14 [INFO] [stderr] | [INFO] [stderr] 289 | for i in 0..changeset.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 289 | for in &changeset { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Expect` [INFO] [stderr] --> src/nodes/parser/body.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use Expect; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Expect` [INFO] [stderr] --> src/nodes/parser/expr.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use Expect; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Write` [INFO] [stderr] --> src/engine/mod.rs:11:22 [INFO] [stderr] | [INFO] [stderr] 11 | use std::io::{ Read, Write }; [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable `arguments` is assigned to, but never used [INFO] [stderr] --> src/nodes/parser/expr.rs:346:13 [INFO] [stderr] | [INFO] [stderr] 346 | let mut arguments = Vec::>::new(); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] = note: consider using `_arguments` instead [INFO] [stderr] [INFO] [stderr] warning: variable `call_type` is assigned to, but never used [INFO] [stderr] --> src/nodes/parser/expr.rs:347:13 [INFO] [stderr] | [INFO] [stderr] 347 | let mut call_type = ExprCallType::Any; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: consider using `_call_type` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `arg` [INFO] [stderr] --> src/nodes/parser/expr.rs:349:9 [INFO] [stderr] | [INFO] [stderr] 349 | let arg = match token.value { [INFO] [stderr] | ^^^ help: consider using `_arg` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `arg` [INFO] [stderr] --> src/nodes/parser/expr.rs:352:17 [INFO] [stderr] | [INFO] [stderr] 352 | let arg = match token.value { [INFO] [stderr] | ^^^ help: consider using `_arg` instead [INFO] [stderr] [INFO] [stderr] warning: value assigned to `call_type` is never read [INFO] [stderr] --> src/nodes/parser/expr.rs:362:17 [INFO] [stderr] | [INFO] [stderr] 362 | call_type = ExprCallType::Method; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_assignments)] on by default [INFO] [stderr] [INFO] [stderr] warning: value assigned to `arguments` is never read [INFO] [stderr] --> src/nodes/parser/expr.rs:363:17 [INFO] [stderr] | [INFO] [stderr] 363 | arguments = try!(parse_unnamed_arguments(parser, false)); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: value assigned to `call_type` is never read [INFO] [stderr] --> src/nodes/parser/expr.rs:373:13 [INFO] [stderr] | [INFO] [stderr] 373 | call_type = ExprCallType::Array; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `node` [INFO] [stderr] --> src/nodes/parser/expr.rs:339:72 [INFO] [stderr] | [INFO] [stderr] 339 | pub fn parse_subscript_expression<'p, 'c>(parser: &mut Parser<'p, 'c>, node: Expr<'c>) [INFO] [stderr] | ^^^^ help: consider using `_node` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `parser` [INFO] [stderr] --> src/nodes/parser/expr.rs:390:40 [INFO] [stderr] | [INFO] [stderr] 390 | pub fn parse_filter_expression<'p, 'c>(parser: &mut Parser<'p, 'c>, expr: Expr<'c>) [INFO] [stderr] | ^^^^^^ help: consider using `_parser` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `expr` [INFO] [stderr] --> src/nodes/parser/expr.rs:390:69 [INFO] [stderr] | [INFO] [stderr] 390 | pub fn parse_filter_expression<'p, 'c>(parser: &mut Parser<'p, 'c>, expr: Expr<'c>) [INFO] [stderr] | ^^^^ help: consider using `_expr` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/nodes/parser/expr.rs:442:25 [INFO] [stderr] | [INFO] [stderr] 442 | let (name_expr, token) = if definition { [INFO] [stderr] | ^^^^^ help: consider using `_token` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `other` [INFO] [stderr] --> src/nodes/parser/expr.rs:484:25 [INFO] [stderr] | [INFO] [stderr] 484 | other => unreachable!("twig bug: expected that expression is a name"), [INFO] [stderr] | ^^^^^ help: consider using `_other` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `env` [INFO] [stderr] --> src/instructions/mod.rs:11:16 [INFO] [stderr] | [INFO] [stderr] 11 | pub fn compile(env: (), nodes: &Module) -> Result> { [INFO] [stderr] | ^^^ help: consider using `_env` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `name` [INFO] [stderr] --> src/instructions/compiler/expr.rs:36:39 [INFO] [stderr] | [INFO] [stderr] 36 | ExprValue::FunctionCall { name, ref arguments } => { [INFO] [stderr] | ^^^^ help: try ignoring the field: `name: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `arguments` [INFO] [stderr] --> src/instructions/compiler/expr.rs:36:49 [INFO] [stderr] | [INFO] [stderr] 36 | ExprValue::FunctionCall { name, ref arguments } => { [INFO] [stderr] | ^^^^^^^^^ help: try ignoring the field: `arguments: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `config` [INFO] [stderr] --> src/environment/mod.rs:40:16 [INFO] [stderr] | [INFO] [stderr] 40 | pub fn new(config: Config) -> Environment { [INFO] [stderr] | ^^^^^^ help: consider using `_config` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `parser` [INFO] [stderr] --> src/extension/core/token_parsers/parser_for.rs:15:29 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^^ help: consider using `_parser` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/extension/core/token_parsers/parser_for.rs:15:58 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^ help: consider using `_token` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `parser` [INFO] [stderr] --> src/extension/core/token_parsers/parser_if.rs:15:29 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^^ help: consider using `_parser` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/extension/core/token_parsers/parser_if.rs:15:58 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^ help: consider using `_token` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `parser` [INFO] [stderr] --> src/extension/core/token_parsers/parser_extends.rs:15:29 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^^ help: consider using `_parser` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/extension/core/token_parsers/parser_extends.rs:15:58 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^ help: consider using `_token` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `parser` [INFO] [stderr] --> src/extension/core/token_parsers/parser_include.rs:15:29 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^^ help: consider using `_parser` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/extension/core/token_parsers/parser_include.rs:15:58 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^ help: consider using `_token` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `parser` [INFO] [stderr] --> src/extension/core/token_parsers/parser_block.rs:15:29 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^^ help: consider using `_parser` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/extension/core/token_parsers/parser_block.rs:15:58 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^ help: consider using `_token` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `parser` [INFO] [stderr] --> src/extension/core/token_parsers/parser_use.rs:15:29 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^^ help: consider using `_parser` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/extension/core/token_parsers/parser_use.rs:15:58 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^ help: consider using `_token` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `parser` [INFO] [stderr] --> src/extension/core/token_parsers/parser_filter.rs:15:29 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^^ help: consider using `_parser` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/extension/core/token_parsers/parser_filter.rs:15:58 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^ help: consider using `_token` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `parser` [INFO] [stderr] --> src/extension/core/token_parsers/parser_import.rs:15:29 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^^ help: consider using `_parser` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/extension/core/token_parsers/parser_import.rs:15:58 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^ help: consider using `_token` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `parser` [INFO] [stderr] --> src/extension/core/token_parsers/parser_spaceless.rs:15:29 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^^ help: consider using `_parser` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/extension/core/token_parsers/parser_spaceless.rs:15:58 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^ help: consider using `_token` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `parser` [INFO] [stderr] --> src/extension/core/token_parsers/parser_flush.rs:15:29 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^^ help: consider using `_parser` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/extension/core/token_parsers/parser_flush.rs:15:58 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^ help: consider using `_token` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `parser` [INFO] [stderr] --> src/extension/core/token_parsers/parser_do.rs:15:29 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^^ help: consider using `_parser` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/extension/core/token_parsers/parser_do.rs:15:58 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^ help: consider using `_token` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `parser` [INFO] [stderr] --> src/extension/core/token_parsers/parser_embed.rs:15:29 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^^ help: consider using `_parser` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `token` [INFO] [stderr] --> src/extension/core/token_parsers/parser_embed.rs:15:58 [INFO] [stderr] | [INFO] [stderr] 15 | fn parse<'p, 'c>(&self, parser: &mut Parser<'p, 'c>, token: TokenRef<'c>) [INFO] [stderr] | ^^^^^ help: consider using `_token` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `staging` [INFO] [stderr] --> src/extension/core/mod.rs:70:63 [INFO] [stderr] | [INFO] [stderr] 70 | Function::new_static("include", vec![Arg::Anon], |staging| { [INFO] [stderr] | ^^^^^^^ help: consider using `_staging` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `env` [INFO] [stderr] --> src/extension/escaper/mod.rs:7:14 [INFO] [stderr] | [INFO] [stderr] 7 | fn apply(env: &mut Environment) { [INFO] [stderr] | ^^^ help: consider using `_env` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `data` [INFO] [stderr] --> src/engine/mod.rs:139:55 [INFO] [stderr] | [INFO] [stderr] 139 | pub fn get>(&mut self, name: &str, data: D) [INFO] [stderr] | ^^^^ help: consider using `_data` instead [INFO] [stderr] [INFO] [stderr] warning: field is never used: `functions` [INFO] [stderr] --> src/engine/mod.rs:122:5 [INFO] [stderr] | [INFO] [stderr] 122 | functions: HashMap<&'static str, Box>>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/tokens/token.rs:38:70 [INFO] [stderr] | [INFO] [stderr] 38 | TokenValueRef::Punctuation(s) => TokenValue::Punctuation(s.into()), [INFO] [stderr] | ^^^^^^^^ help: consider removing `.into()`: `s` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/tokens/token.rs:91:5 [INFO] [stderr] | [INFO] [stderr] 91 | / pub fn new_big_num<'c>(num: &'c str) -> ConstRef<'c> { [INFO] [stderr] 92 | | ConstRef::Num(ConstNumberRef::Big(num)) [INFO] [stderr] 93 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/tokens/token.rs:103:5 [INFO] [stderr] | [INFO] [stderr] 103 | / pub fn new_str<'c>(s: &'c str) -> ConstRef<'c> { [INFO] [stderr] 104 | | ConstRef::Str(s) [INFO] [stderr] 105 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/tokens/lexer/matchers.rs:32:17 [INFO] [stderr] | [INFO] [stderr] 32 | / Regex::new( [INFO] [stderr] 33 | | r#"\A\s+"# [INFO] [stderr] 34 | | ).ok().expect("Failed to init whitespace") [INFO] [stderr] | |__________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ok_expect)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/tokens/lexer/matchers.rs:37:17 [INFO] [stderr] | [INFO] [stderr] 37 | / Regex::new( [INFO] [stderr] 38 | | r#"\A[a-zA-Z_\x7F-\xFF][a-zA-Z0-9_\x7F-\xFF]*"# [INFO] [stderr] 39 | | ).ok().expect("Failed to init regex_name") [INFO] [stderr] | |__________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/tokens/lexer/matchers.rs:42:17 [INFO] [stderr] | [INFO] [stderr] 42 | / Regex::new( [INFO] [stderr] 43 | | r#"\A[0-9]+(?:\.[0-9]+)?"# [INFO] [stderr] 44 | | ).ok().expect("Failed to init regex_number") [INFO] [stderr] | |____________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/tokens/lexer/matchers.rs:47:17 [INFO] [stderr] | [INFO] [stderr] 47 | / Regex::new( [INFO] [stderr] 48 | | r#"\A(?s:"([^#"\\]*(?:\\.[^#"\\]*)*)"|'([^'\\]*(?:\\.[^'\\]*)*)')"# [INFO] [stderr] 49 | | ).ok().expect("Failed to init regex_string") [INFO] [stderr] | |____________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/tokens/lexer/matchers.rs:52:17 [INFO] [stderr] | [INFO] [stderr] 52 | / Regex::new( [INFO] [stderr] 53 | | r#"\A""# [INFO] [stderr] 54 | | ).ok().expect("Failed to init regex_dq_string_delim") [INFO] [stderr] | |_____________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/tokens/lexer/matchers.rs:53:21 [INFO] [stderr] | [INFO] [stderr] 53 | r#"\A""# [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivial_regex)] on by default [INFO] [stderr] = help: consider using `str::starts_with` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/tokens/lexer/matchers.rs:58:17 [INFO] [stderr] | [INFO] [stderr] 58 | / Regex::new( [INFO] [stderr] 59 | | &format!( [INFO] [stderr] 60 | | r#"\A(?:\s*{}{}\s*|\s*{})"#, [INFO] [stderr] 61 | | "e(&options.whitespace_trim), [INFO] [stderr] ... | [INFO] [stderr] 64 | | ) [INFO] [stderr] 65 | | ).ok().expect("Failed to init lex_var") [INFO] [stderr] | |_______________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/tokens/lexer/matchers.rs:68:17 [INFO] [stderr] | [INFO] [stderr] 68 | / Regex::new( [INFO] [stderr] 69 | | &format!( [INFO] [stderr] 70 | | r#"\A\s*(?:{}{}\s*|\s*{})\n?"#, [INFO] [stderr] 71 | | "e(&options.whitespace_trim), [INFO] [stderr] ... | [INFO] [stderr] 74 | | ) [INFO] [stderr] 75 | | ).ok().expect("Failed to init lex_block") [INFO] [stderr] | |_________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/tokens/lexer/matchers.rs:78:17 [INFO] [stderr] | [INFO] [stderr] 78 | / Regex::new( [INFO] [stderr] 79 | | &format!( [INFO] [stderr] 80 | | r#"(?s)({}{}|{})\s*(?:endraw)\s*(?:{}{}\s*|\s*{})"#, [INFO] [stderr] 81 | | "e(&options.tag_block.start), [INFO] [stderr] ... | [INFO] [stderr] 87 | | ) [INFO] [stderr] 88 | | ).ok().expect("Failed to init lex_raw_data") [INFO] [stderr] | |____________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/tokens/lexer/matchers.rs:91:17 [INFO] [stderr] | [INFO] [stderr] 91 | / Regex::new( [INFO] [stderr] 92 | | &format!( [INFO] [stderr] 93 | | r#"(?s)({}{}|{})\s*(?:endverbatim)\s*(?:{}{}\s*|\s*{})"#, [INFO] [stderr] 94 | | "e(&options.tag_block.start), [INFO] [stderr] ... | [INFO] [stderr] 100 | | ) [INFO] [stderr] 101 | | ).ok().expect("Failed to init lex_verbatim_data") [INFO] [stderr] | |_________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/tokens/lexer/matchers.rs:107:17 [INFO] [stderr] | [INFO] [stderr] 107 | / Regex::new( [INFO] [stderr] 108 | | &format!( [INFO] [stderr] 109 | | r#"(?s)(?:{}{}\s*|{})\n?"#, [INFO] [stderr] 110 | | "e(&options.whitespace_trim), [INFO] [stderr] ... | [INFO] [stderr] 113 | | ) [INFO] [stderr] 114 | | ).ok().expect("Failed to init lex_comment") [INFO] [stderr] | |___________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/tokens/lexer/matchers.rs:117:17 [INFO] [stderr] | [INFO] [stderr] 117 | / Regex::new( [INFO] [stderr] 118 | | &format!( [INFO] [stderr] 119 | | r#"\A(?s)\s*(raw|verbatim)\s*(?:{}{}\s*|\s*{})"#, [INFO] [stderr] 120 | | "e(&options.whitespace_trim), [INFO] [stderr] ... | [INFO] [stderr] 123 | | ) [INFO] [stderr] 124 | | ).ok().expect("Failed to init lex_block_raw") [INFO] [stderr] | |_____________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/tokens/lexer/matchers.rs:127:17 [INFO] [stderr] | [INFO] [stderr] 127 | / Regex::new( [INFO] [stderr] 128 | | &format!( [INFO] [stderr] 129 | | r#"\A(?s)\s*line\s+(\d+)\s*{}"#, [INFO] [stderr] 130 | | "e(&options.tag_block.end) [INFO] [stderr] 131 | | ) [INFO] [stderr] 132 | | ).ok().expect("Failed to init lex_block_line") [INFO] [stderr] | |______________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/tokens/lexer/matchers.rs:135:17 [INFO] [stderr] | [INFO] [stderr] 135 | / Regex::new( [INFO] [stderr] 136 | | &format!( [INFO] [stderr] 137 | | r#"(?s)({}|{}|{})({})?"#, [INFO] [stderr] 138 | | "e(&options.tag_variable.start), [INFO] [stderr] ... | [INFO] [stderr] 142 | | ) [INFO] [stderr] 143 | | ).ok().expect("Failed to init lex_tokens_start") [INFO] [stderr] | |________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/tokens/lexer/matchers.rs:146:17 [INFO] [stderr] | [INFO] [stderr] 146 | / Regex::new( [INFO] [stderr] 147 | | &format!( [INFO] [stderr] 148 | | r#"\A{}\s*"#, [INFO] [stderr] 149 | | "e(&options.interpolation.start) [INFO] [stderr] 150 | | ) [INFO] [stderr] 151 | | ).ok().expect("Failed to init interpolation_start") [INFO] [stderr] | |___________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/tokens/lexer/matchers.rs:154:17 [INFO] [stderr] | [INFO] [stderr] 154 | / Regex::new( [INFO] [stderr] 155 | | &format!( [INFO] [stderr] 156 | | r#"\A\s*{}"#, [INFO] [stderr] 157 | | "e(&options.interpolation.end) [INFO] [stderr] 158 | | ) [INFO] [stderr] 159 | | ).ok().expect("Failed to init interpolation_end") [INFO] [stderr] | |_________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/tokens/lexer/matchers.rs:209:17 [INFO] [stderr] | [INFO] [stderr] 209 | / operators.iter() [INFO] [stderr] 210 | | .map(|v| *v) [INFO] [stderr] | |________________________________^ help: Consider calling the dedicated `cloned` method: `operators.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/tokens/lexer/matchers.rs:231:22 [INFO] [stderr] | [INFO] [stderr] 231 | _ => format!( [INFO] [stderr] | ______________________^ [INFO] [stderr] 232 | | "{}", [INFO] [stderr] 233 | | quote(operator) [INFO] [stderr] 234 | | ), [INFO] [stderr] | |_________________^ help: consider using .to_string(): `quote(operator).to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tokens/lexer/iter.rs:144:12 [INFO] [stderr] | [INFO] [stderr] 144 | if self.tokens.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.tokens.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/tokens/lexer/iter.rs:184:29 [INFO] [stderr] | [INFO] [stderr] 184 | .filter_map(|c| match c.is_empty() { [INFO] [stderr] | _____________________________^ [INFO] [stderr] 185 | | true => None, [INFO] [stderr] 186 | | false => Some(Position::from_capture(&lexer.options, c)), [INFO] [stderr] 187 | | }) [INFO] [stderr] | |_____________^ help: consider using an if/else expression: `if c.is_empty() { None } else { Some(Position::from_capture(&lexer.options, c)) }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/tokens/lexer/iter.rs:221:17 [INFO] [stderr] | [INFO] [stderr] 221 | / match self.brackets.pop() { [INFO] [stderr] 222 | | Some(bracket) => { [INFO] [stderr] 223 | | self.push_error( [INFO] [stderr] 224 | | TemplateError::Unclosed(format!("{}", bracket.open)), [INFO] [stderr] ... | [INFO] [stderr] 229 | | _ => (), [INFO] [stderr] 230 | | }; [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 221 | if let Some(bracket) = self.brackets.pop() { [INFO] [stderr] 222 | self.push_error( [INFO] [stderr] 223 | TemplateError::Unclosed(format!("{}", bracket.open)), [INFO] [stderr] 224 | Some(bracket.line_num) [INFO] [stderr] 225 | ); [INFO] [stderr] 226 | break; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tokens/lexer/iter.rs:236:16 [INFO] [stderr] | [INFO] [stderr] 236 | if self.tokens.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.tokens.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/tokens/lexer/iter.rs:267:28 [INFO] [stderr] | [INFO] [stderr] 267 | let mut position = self.positions[self.position].clone(); self.position += 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.positions[self.position]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/tokens/lexer/iter.rs:273:24 [INFO] [stderr] | [INFO] [stderr] 273 | position = self.positions[self.position].clone(); self.position += 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.positions[self.position]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/tokens/lexer/iter.rs:313:45 [INFO] [stderr] | [INFO] [stderr] 313 | self.line_num = line_num.parse() [INFO] [stderr] | _____________________________________________^ [INFO] [stderr] 314 | | .ok() [INFO] [stderr] 315 | | .expect("twig bug: expected regexp matched as digit to be parseable as line number"); [INFO] [stderr] | |____________________________________________________________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tokens/lexer/iter.rs:339:12 [INFO] [stderr] | [INFO] [stderr] 339 | if 0 == self.brackets.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.brackets.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tokens/lexer/iter.rs:362:12 [INFO] [stderr] | [INFO] [stderr] 362 | if 0 == self.brackets.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.brackets.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/tokens/lexer/iter.rs:540:36 [INFO] [stderr] | [INFO] [stderr] 540 | let next_char = &self.code[loc .. loc + 1]; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: use: `loc..=loc` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/tokens/lexer/iter.rs:544:17 [INFO] [stderr] | [INFO] [stderr] 544 | format!("{}", next_char) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `next_char.to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/tokens/lexer/iter.rs:660:46 [INFO] [stderr] | [INFO] [stderr] 660 | if end_text.contains("-") { [INFO] [stderr] | ^^^ help: try using a char instead: `'-'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/tokens/lexer/iter.rs:673:25 [INFO] [stderr] | [INFO] [stderr] 673 | format!("{}", tag) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `tag.to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tokens/lexer/iter.rs:684:16 [INFO] [stderr] | [INFO] [stderr] 684 | if text.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `text.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/nodes/parser/body.rs:32:16 [INFO] [stderr] | [INFO] [stderr] 32 | if let None = maybe_line { [INFO] [stderr] | _________- ^^^^ [INFO] [stderr] 33 | | maybe_line = Some(token.line); [INFO] [stderr] 34 | | } [INFO] [stderr] | |_________- help: try this: `if maybe_line.is_none()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/nodes/parser/expr.rs:86:16 [INFO] [stderr] | [INFO] [stderr] 86 | if let Err(_) = parser.expect(TokenValueRef::Punctuation(')')) { [INFO] [stderr] | _________- ^^^^^^ [INFO] [stderr] 87 | | return Err(TemplateError::ParenthesisNotClosed.at(token.line)); [INFO] [stderr] 88 | | } [INFO] [stderr] | |_________- help: try this: `if parser.expect(TokenValueRef::Punctuation(')')).is_err()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/nodes/parser/expr.rs:167:1 [INFO] [stderr] | [INFO] [stderr] 167 | / pub fn get_number_expr<'c>(num: ConstNumberRef<'c>, line: usize) -> Expr<'c> { [INFO] [stderr] 168 | | Expr::new_at(ExprValue::Constant(match num { [INFO] [stderr] 169 | | ConstNumberRef::Big(v) => ExprConstant::Big(v), [INFO] [stderr] 170 | | ConstNumberRef::Float(v) => ExprConstant::Float(v), [INFO] [stderr] 171 | | ConstNumberRef::Int(v) => ExprConstant::Int(v), [INFO] [stderr] 172 | | }), line) [INFO] [stderr] 173 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/nodes/parser/expr.rs:407:12 [INFO] [stderr] | [INFO] [stderr] 407 | if args.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!args.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/nodes/parser/expr.rs:438:12 [INFO] [stderr] | [INFO] [stderr] 438 | if args.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!args.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `nodes::parser::ImportedSymbols<'c>` [INFO] [stderr] --> src/nodes/parser/mod.rs:33:5 [INFO] [stderr] | [INFO] [stderr] 33 | / pub fn new<'r>() -> ImportedSymbols<'r> { [INFO] [stderr] 34 | | ImportedSymbols { [INFO] [stderr] 35 | | functions: HashMap::new() [INFO] [stderr] 36 | | } [INFO] [stderr] 37 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 28 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/nodes/parser/mod.rs:78:5 [INFO] [stderr] | [INFO] [stderr] 78 | / pub fn push_local_scope<'r>(&'r mut self) { [INFO] [stderr] 79 | | self.imported_symbols.push(ImportedSymbols::new()); [INFO] [stderr] 80 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/nodes/parser/mod.rs:82:5 [INFO] [stderr] | [INFO] [stderr] 82 | / pub fn pop_local_scope<'r>(&'r mut self) { [INFO] [stderr] 83 | | self.imported_symbols.pop(); [INFO] [stderr] 84 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/nodes/parser/mod.rs:93:54 [INFO] [stderr] | [INFO] [stderr] 93 | .insert(alias, ImportedFunction::new(uuid.clone(), alias, name)); [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `uuid` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: defining a method called `next` on this type; consider implementing the `std::iter::Iterator` trait or choosing a less ambiguous name [INFO] [stderr] --> src/nodes/parser/mod.rs:138:5 [INFO] [stderr] | [INFO] [stderr] 138 | / pub fn next<'r>(&'r mut self) -> TemplateResult> [INFO] [stderr] 139 | | { [INFO] [stderr] 140 | | let token = match self.tokens.peek() { [INFO] [stderr] 141 | | Some(&Ok(ref t)) => t.clone(), [INFO] [stderr] ... | [INFO] [stderr] 152 | | Ok(token) [INFO] [stderr] 153 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::should_implement_trait)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `nodes::node::body::Body<'c>` [INFO] [stderr] --> src/nodes/node/body.rs:31:5 [INFO] [stderr] | [INFO] [stderr] 31 | / pub fn new() -> Body<'c> { [INFO] [stderr] 32 | | Body::List { items: Vec::new() } [INFO] [stderr] 33 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 30 | impl Default for nodes::node::body::Body<'c> { [INFO] [stderr] 31 | fn default() -> Self { [INFO] [stderr] 32 | Self::new() [INFO] [stderr] 33 | } [INFO] [stderr] 34 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/nodes/node/expr.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | / pub fn new_at<'r>(value: ExprValue<'r>, line: usize) -> Expr<'r> { [INFO] [stderr] 11 | | Expr { [INFO] [stderr] 12 | | line: line, [INFO] [stderr] 13 | | value: value [INFO] [stderr] 14 | | } [INFO] [stderr] 15 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/nodes/node/expr.rs:25:5 [INFO] [stderr] | [INFO] [stderr] 25 | / pub fn new_str_constant<'r>(value: &'r str, line: usize) -> Expr<'r> { [INFO] [stderr] 26 | | Expr::new_at(ExprValue::Constant(ExprConstant::Str(value)), line) [INFO] [stderr] 27 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/nodes/node/expr.rs:41:5 [INFO] [stderr] | [INFO] [stderr] 41 | / pub fn new_name<'r>(name: &'r str, line: usize) -> Expr<'r> { [INFO] [stderr] 42 | | Expr::new_at(ExprValue::Name(name), line) [INFO] [stderr] 43 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `nodes::node::module::Module<'c>` [INFO] [stderr] --> src/nodes/node/module.rs:26:5 [INFO] [stderr] | [INFO] [stderr] 26 | / pub fn new() -> Module<'c> { [INFO] [stderr] 27 | | Module { [INFO] [stderr] 28 | | body: Body::new(), [INFO] [stderr] 29 | | // blocks: vec![], [INFO] [stderr] ... | [INFO] [stderr] 42 | | } [INFO] [stderr] 43 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 25 | impl Default for nodes::node::module::Module<'c> { [INFO] [stderr] 26 | fn default() -> Self { [INFO] [stderr] 27 | Self::new() [INFO] [stderr] 28 | } [INFO] [stderr] 29 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/instructions/compiler/mod.rs:53:9 [INFO] [stderr] | [INFO] [stderr] 53 | self.result.clone() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.result` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/error/engine.rs:20:20 [INFO] [stderr] | [INFO] [stderr] 20 | if search_paths.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `search_paths.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/error/mod.rs:98:21 [INFO] [stderr] | [INFO] [stderr] 98 | / if &raw_message[len - 1 ..] == "." { [INFO] [stderr] 99 | | true [INFO] [stderr] 100 | | } else { [INFO] [stderr] 101 | | false [INFO] [stderr] 102 | | } [INFO] [stderr] | |_____________________^ help: you can reduce it to: `&raw_message[len - 1 ..] == "."` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/extension/core/token_parsers/parser_from.rs:29:13 [INFO] [stderr] | [INFO] [stderr] 29 | / let mut alias = name; [INFO] [stderr] 30 | | if try!(parser.skip_to_next_if(TokenValueRef::Name("as"))) { [INFO] [stderr] 31 | | alias = try!(parser.expect_name()); [INFO] [stderr] 32 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] help: it is more idiomatic to write [INFO] [stderr] | [INFO] [stderr] 29 | let alias = if match $ expr { [INFO] [stderr] 30 | $ crate :: result :: Result :: Ok ( val ) => val , $ crate :: result :: Result [INFO] [stderr] 31 | :: Err ( err ) => { [INFO] [stderr] 32 | return $ crate :: result :: Result :: Err ( [INFO] [stderr] 33 | $ crate :: convert :: From :: from ( err ) ) } } { match $ expr { [INFO] [stderr] 34 | $ crate :: result :: Result :: Ok ( val ) => val , $ crate :: result :: Result [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: equal expressions as operands to `==` [INFO] [stderr] --> src/operator/mod.rs:231:17 [INFO] [stderr] | [INFO] [stderr] 231 | assert!(Associativity::Right == Associativity::Right); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::eq_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#eq_op [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/function/mod.rs:15:13 [INFO] [stderr] | [INFO] [stderr] 15 | Dynamic(Box< [INFO] [stderr] | _____________^ [INFO] [stderr] 16 | | for<'e> Fn(&'e [Value]) -> RuntimeResult [INFO] [stderr] 17 | | >), [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/function/mod.rs:21:18 [INFO] [stderr] | [INFO] [stderr] 21 | compile: Box< [INFO] [stderr] | __________________^ [INFO] [stderr] 22 | | for<'c> Fn(&mut Staging<'c, Value>) -> TemplateResult [INFO] [stderr] 23 | | > [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: constant `e` should have an upper case name such as `E` [INFO] [stderr] --> src/value/ops.rs:252:9 [INFO] [stderr] | [INFO] [stderr] 252 | const e: f64 = 0.0000001; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/value/mod.rs:39:10 [INFO] [stderr] | [INFO] [stderr] 39 | Func(Rc Fn(&'r [Value]) -> Option >), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/value/mod.rs:68:45 [INFO] [stderr] | [INFO] [stderr] 68 | Value::Int(ref v) => Value::Int(v.clone()), [INFO] [stderr] | ^^^^^^^^^ help: try dereferencing it: `*v` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/value/mod.rs:69:49 [INFO] [stderr] | [INFO] [stderr] 69 | Value::Float(ref v) => Value::Float(v.clone()), [INFO] [stderr] | ^^^^^^^^^ help: try dereferencing it: `*v` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/value/mod.rs:227:16 [INFO] [stderr] | [INFO] [stderr] 227 | Ok(match name { [INFO] [stderr] | ________________^ [INFO] [stderr] 228 | | "x" => self.x = try!(value.int()), [INFO] [stderr] 229 | | "y" => self.y = try!(value.int()), [INFO] [stderr] 230 | | _ => return Err(self.property_error(name)), [INFO] [stderr] 231 | | }) [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unit_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 227 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/value/mod.rs:241:9 [INFO] [stderr] | [INFO] [stderr] 241 | point.set("x", Value::Int(42)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/value/mod.rs:242:9 [INFO] [stderr] | [INFO] [stderr] 242 | point.set("y", Value::Int(43)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/value/mod.rs:251:9 [INFO] [stderr] | [INFO] [stderr] 251 | point.set("x", Value::Str("48".into())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `mold::Staging<'c, V>` [INFO] [stderr] --> src/mold/mod.rs:13:5 [INFO] [stderr] | [INFO] [stderr] 13 | / pub fn new<'r>() -> Staging<'r, V> { [INFO] [stderr] 14 | | let mut st = Staging { [INFO] [stderr] 15 | | next_constant: Constant(0), [INFO] [stderr] 16 | | unique_constants: HashMap::new(), [INFO] [stderr] ... | [INFO] [stderr] 23 | | st [INFO] [stderr] 24 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 12 | impl Default for mold::Staging<'c, V> { [INFO] [stderr] 13 | fn default() -> Self { [INFO] [stderr] 14 | Self::new() [INFO] [stderr] 15 | } [INFO] [stderr] 16 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/mold/mod.rs:69:42 [INFO] [stderr] | [INFO] [stderr] 69 | return Some(Mem::Binding(binding.clone())); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try dereferencing it: `*binding` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/mold/mod.rs:106:44 [INFO] [stderr] | [INFO] [stderr] 106 | let result = self.map.entry(&name).or_insert(current.clone()).clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| current.clone())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/engine/mod.rs:155:9 [INFO] [stderr] | [INFO] [stderr] 155 | / loop { [INFO] [stderr] 156 | | match interpreter.read_to_string(&mut res) { [INFO] [stderr] 157 | | Err(e) => { [INFO] [stderr] 158 | | match e.description() { [INFO] [stderr] ... | [INFO] [stderr] 166 | | } [INFO] [stderr] 167 | | } [INFO] [stderr] | |_________^ help: try: `while let Err(e) = interpreter.read_to_string(&mut res) { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `twig`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "e76b90d6bd3159f4990bb029cf527c2961a9523a1b07007ae81531817da93106"` [INFO] running `"docker" "rm" "-f" "e76b90d6bd3159f4990bb029cf527c2961a9523a1b07007ae81531817da93106"` [INFO] [stdout] e76b90d6bd3159f4990bb029cf527c2961a9523a1b07007ae81531817da93106