[INFO] updating cached repository paulcacheux/hai [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/paulcacheux/hai [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/paulcacheux/hai" "work/ex/clippy-test-run/sources/stable/gh/paulcacheux/hai"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/paulcacheux/hai'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/paulcacheux/hai" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/paulcacheux/hai"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/paulcacheux/hai'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 9e6839977b977d06643d8c53fff1f90214577ea8 [INFO] sha for GitHub repo paulcacheux/hai: 9e6839977b977d06643d8c53fff1f90214577ea8 [INFO] validating manifest of paulcacheux/hai 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 paulcacheux/hai 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 paulcacheux/hai [INFO] finished frobbing paulcacheux/hai [INFO] frobbed toml for paulcacheux/hai written to work/ex/clippy-test-run/sources/stable/gh/paulcacheux/hai/Cargo.toml [INFO] started frobbing paulcacheux/hai [INFO] finished frobbing paulcacheux/hai [INFO] frobbed toml for paulcacheux/hai written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/paulcacheux/hai/Cargo.toml [INFO] crate paulcacheux/hai has a lockfile. skipping [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 paulcacheux/hai against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-3/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/paulcacheux/hai:/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] 967588b0c8f6853478466781fe5eb598651eab916b120d15a2c052a9b633a729 [INFO] running `"docker" "start" "-a" "967588b0c8f6853478466781fe5eb598651eab916b120d15a2c052a9b633a729"` [INFO] [stderr] Checking id-arena v1.0.1 [INFO] [stderr] Compiling syn v0.14.9 [INFO] [stderr] Compiling pest_generator v2.0.0 [INFO] [stderr] Compiling pest_derive v2.0.1 [INFO] [stderr] Checking hai v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/convertor.rs:13:5 [INFO] [stderr] | [INFO] [stderr] 13 | module [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/convertor.rs:9:18 [INFO] [stderr] | [INFO] [stderr] 9 | let module = program [INFO] [stderr] | __________________^ [INFO] [stderr] 10 | | .accept_program_visitor(&mut program_convertor) [INFO] [stderr] 11 | | .unwrap(); [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: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/convertor.rs:13:5 [INFO] [stderr] | [INFO] [stderr] 13 | module [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/convertor.rs:9:18 [INFO] [stderr] | [INFO] [stderr] 9 | let module = program [INFO] [stderr] | __________________^ [INFO] [stderr] 10 | | .accept_program_visitor(&mut program_convertor) [INFO] [stderr] 11 | | .unwrap(); [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: unused variable: `function_convertor` [INFO] [stderr] --> src/convertor.rs:45:17 [INFO] [stderr] | [INFO] [stderr] 45 | let mut function_convertor = FunctionConvertor::new(name, parameters); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider using `_function_convertor` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `program` [INFO] [stderr] --> src/convertor.rs:40:9 [INFO] [stderr] | [INFO] [stderr] 40 | program: &ast::Program, [INFO] [stderr] | ^^^^^^^ help: consider using `_program` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `statement` [INFO] [stderr] --> src/convertor.rs:43:9 [INFO] [stderr] | [INFO] [stderr] 43 | statement: ast::StatementId, [INFO] [stderr] | ^^^^^^^^^ help: consider using `_statement` instead [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/convertor.rs:45:13 [INFO] [stderr] | [INFO] [stderr] 45 | let mut function_convertor = FunctionConvertor::new(name, parameters); [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `function_convertor` [INFO] [stderr] --> src/convertor.rs:45:17 [INFO] [stderr] | [INFO] [stderr] 45 | let mut function_convertor = FunctionConvertor::new(name, parameters); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider using `_function_convertor` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `program` [INFO] [stderr] --> src/convertor.rs:40:9 [INFO] [stderr] | [INFO] [stderr] 40 | program: &ast::Program, [INFO] [stderr] | ^^^^^^^ help: consider using `_program` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `statement` [INFO] [stderr] --> src/convertor.rs:43:9 [INFO] [stderr] | [INFO] [stderr] 43 | statement: ast::StatementId, [INFO] [stderr] | ^^^^^^^^^ help: consider using `_statement` instead [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/convertor.rs:45:13 [INFO] [stderr] | [INFO] [stderr] 45 | let mut function_convertor = FunctionConvertor::new(name, parameters); [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `end_scope` [INFO] [stderr] --> src/convertor.rs:107:5 [INFO] [stderr] | [INFO] [stderr] 107 | fn end_scope(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `lookup_variable` [INFO] [stderr] --> src/convertor.rs:118:5 [INFO] [stderr] | [INFO] [stderr] 118 | fn lookup_variable(&mut self, name: &str) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `into_function` [INFO] [stderr] --> src/ir/builder.rs:34:5 [INFO] [stderr] | [INFO] [stderr] 34 | pub fn into_function(self) -> Function { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `create_new_bb` [INFO] [stderr] --> src/ir/builder.rs:62:5 [INFO] [stderr] | [INFO] [stderr] 62 | pub fn create_new_bb(&mut self) -> BB { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `switch_to_bb` [INFO] [stderr] --> src/ir/builder.rs:71:5 [INFO] [stderr] | [INFO] [stderr] 71 | pub fn switch_to_bb(&mut self, bb: BB) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `terminate_bb` [INFO] [stderr] --> src/ir/builder.rs:75:5 [INFO] [stderr] | [INFO] [stderr] 75 | pub fn terminate_bb(&mut self, terminator: Terminator) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `append_value_operation` [INFO] [stderr] --> src/ir/builder.rs:79:5 [INFO] [stderr] | [INFO] [stderr] 79 | pub fn append_value_operation(&mut self, operation: Operation) -> Value { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `append_no_value_operation` [INFO] [stderr] --> src/ir/builder.rs:88:5 [INFO] [stderr] | [INFO] [stderr] 88 | pub fn append_no_value_operation(&mut self, operation: Operation) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `WithDestination` [INFO] [stderr] --> src/ir/mod.rs:24:5 [INFO] [stderr] | [INFO] [stderr] 24 | WithDestination(Value, Operation), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Operation` [INFO] [stderr] --> src/ir/mod.rs:25:5 [INFO] [stderr] | [INFO] [stderr] 25 | Operation(Operation), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Literal` [INFO] [stderr] --> src/ir/mod.rs:26:5 [INFO] [stderr] | [INFO] [stderr] 26 | Literal(Literal), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `BinaryAdd` [INFO] [stderr] --> src/ir/mod.rs:31:5 [INFO] [stderr] | [INFO] [stderr] 31 | BinaryAdd(Value, Value), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `BinarySub` [INFO] [stderr] --> src/ir/mod.rs:32:5 [INFO] [stderr] | [INFO] [stderr] 32 | BinarySub(Value, Value), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `BinaryMul` [INFO] [stderr] --> src/ir/mod.rs:33:5 [INFO] [stderr] | [INFO] [stderr] 33 | BinaryMul(Value, Value), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `BinaryDivide` [INFO] [stderr] --> src/ir/mod.rs:34:5 [INFO] [stderr] | [INFO] [stderr] 34 | BinaryDivide(Value, Value), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `LoadParam` [INFO] [stderr] --> src/ir/mod.rs:35:5 [INFO] [stderr] | [INFO] [stderr] 35 | LoadParam(usize), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `LoadVariable` [INFO] [stderr] --> src/ir/mod.rs:36:5 [INFO] [stderr] | [INFO] [stderr] 36 | LoadVariable(Variable), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `StoreVariable` [INFO] [stderr] --> src/ir/mod.rs:37:5 [INFO] [stderr] | [INFO] [stderr] 37 | StoreVariable(Variable, Value), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Return` [INFO] [stderr] --> src/ir/mod.rs:42:5 [INFO] [stderr] | [INFO] [stderr] 42 | Return(Value), [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Int` [INFO] [stderr] --> src/ir/mod.rs:56:5 [INFO] [stderr] | [INFO] [stderr] 56 | Int(i32), [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Boolean` [INFO] [stderr] --> src/ir/mod.rs:57:5 [INFO] [stderr] | [INFO] [stderr] 57 | Boolean(bool), [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `end_scope` [INFO] [stderr] --> src/convertor.rs:107:5 [INFO] [stderr] | [INFO] [stderr] 107 | fn end_scope(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `lookup_variable` [INFO] [stderr] --> src/convertor.rs:118:5 [INFO] [stderr] | [INFO] [stderr] 118 | fn lookup_variable(&mut self, name: &str) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `into_function` [INFO] [stderr] --> src/ir/builder.rs:34:5 [INFO] [stderr] | [INFO] [stderr] 34 | pub fn into_function(self) -> Function { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `create_new_bb` [INFO] [stderr] --> src/ir/builder.rs:62:5 [INFO] [stderr] | [INFO] [stderr] 62 | pub fn create_new_bb(&mut self) -> BB { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `switch_to_bb` [INFO] [stderr] --> src/ir/builder.rs:71:5 [INFO] [stderr] | [INFO] [stderr] 71 | pub fn switch_to_bb(&mut self, bb: BB) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `terminate_bb` [INFO] [stderr] --> src/ir/builder.rs:75:5 [INFO] [stderr] | [INFO] [stderr] 75 | pub fn terminate_bb(&mut self, terminator: Terminator) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `append_value_operation` [INFO] [stderr] --> src/ir/builder.rs:79:5 [INFO] [stderr] | [INFO] [stderr] 79 | pub fn append_value_operation(&mut self, operation: Operation) -> Value { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `append_no_value_operation` [INFO] [stderr] --> src/ir/builder.rs:88:5 [INFO] [stderr] | [INFO] [stderr] 88 | pub fn append_no_value_operation(&mut self, operation: Operation) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `WithDestination` [INFO] [stderr] --> src/ir/mod.rs:24:5 [INFO] [stderr] | [INFO] [stderr] 24 | WithDestination(Value, Operation), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Operation` [INFO] [stderr] --> src/ir/mod.rs:25:5 [INFO] [stderr] | [INFO] [stderr] 25 | Operation(Operation), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Literal` [INFO] [stderr] --> src/ir/mod.rs:26:5 [INFO] [stderr] | [INFO] [stderr] 26 | Literal(Literal), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `BinaryAdd` [INFO] [stderr] --> src/ir/mod.rs:31:5 [INFO] [stderr] | [INFO] [stderr] 31 | BinaryAdd(Value, Value), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `BinarySub` [INFO] [stderr] --> src/ir/mod.rs:32:5 [INFO] [stderr] | [INFO] [stderr] 32 | BinarySub(Value, Value), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `BinaryMul` [INFO] [stderr] --> src/ir/mod.rs:33:5 [INFO] [stderr] | [INFO] [stderr] 33 | BinaryMul(Value, Value), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `BinaryDivide` [INFO] [stderr] --> src/ir/mod.rs:34:5 [INFO] [stderr] | [INFO] [stderr] 34 | BinaryDivide(Value, Value), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `LoadParam` [INFO] [stderr] --> src/ir/mod.rs:35:5 [INFO] [stderr] | [INFO] [stderr] 35 | LoadParam(usize), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `LoadVariable` [INFO] [stderr] --> src/ir/mod.rs:36:5 [INFO] [stderr] | [INFO] [stderr] 36 | LoadVariable(Variable), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `StoreVariable` [INFO] [stderr] --> src/ir/mod.rs:37:5 [INFO] [stderr] | [INFO] [stderr] 37 | StoreVariable(Variable, Value), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Return` [INFO] [stderr] --> src/ir/mod.rs:42:5 [INFO] [stderr] | [INFO] [stderr] 42 | Return(Value), [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Int` [INFO] [stderr] --> src/ir/mod.rs:56:5 [INFO] [stderr] | [INFO] [stderr] 56 | Int(i32), [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Boolean` [INFO] [stderr] --> src/ir/mod.rs:57:5 [INFO] [stderr] | [INFO] [stderr] 57 | Boolean(bool), [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/convertor.rs:69:60 [INFO] [stderr] | [INFO] [stderr] 69 | sym_table.register_variable(param.to_string(), param_tys[index].clone(), var); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `param_tys[index]` [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/convertor.rs:69:60 [INFO] [stderr] | [INFO] [stderr] 69 | sym_table.register_variable(param.to_string(), param_tys[index].clone(), var); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `param_tys[index]` [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/parser.rs:10:1 [INFO] [stderr] | [INFO] [stderr] 10 | / pub fn convert_program<'i>(pair: Pair<'i, Rule>) -> ast::Program { [INFO] [stderr] 11 | | assert_eq!(pair.as_rule(), Rule::program); [INFO] [stderr] 12 | | [INFO] [stderr] 13 | | let mut program = ast::Program::new(); [INFO] [stderr] ... | [INFO] [stderr] 20 | | program [INFO] [stderr] 21 | | } [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/parser.rs:57:1 [INFO] [stderr] | [INFO] [stderr] 57 | / pub fn convert_parameter_list<'i>(pair: Pair<'i, Rule>) -> Vec<(String, ast::Type)> { [INFO] [stderr] 58 | | assert_eq!(pair.as_rule(), Rule::parameter_list); [INFO] [stderr] 59 | | pair.into_inner().map(|p| convert_parameter(p)).collect() [INFO] [stderr] 60 | | } [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: redundant closure found [INFO] [stderr] --> src/parser.rs:59:27 [INFO] [stderr] | [INFO] [stderr] 59 | pair.into_inner().map(|p| convert_parameter(p)).collect() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `convert_parameter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [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/parser.rs:62:1 [INFO] [stderr] | [INFO] [stderr] 62 | / pub fn convert_parameter<'i>(pair: Pair<'i, Rule>) -> (String, ast::Type) { [INFO] [stderr] 63 | | assert_eq!(pair.as_rule(), Rule::parameter); [INFO] [stderr] 64 | | [INFO] [stderr] 65 | | let mut iter = pair.into_inner(); [INFO] [stderr] ... | [INFO] [stderr] 69 | | (name, ty) [INFO] [stderr] 70 | | } [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/parser.rs:217:1 [INFO] [stderr] | [INFO] [stderr] 217 | / pub fn convert_leaf<'i>(pair: Pair<'i, Rule>) -> ast::Expression { [INFO] [stderr] 218 | | let inner = pair.into_inner().next().unwrap(); [INFO] [stderr] 219 | | match inner.as_rule() { [INFO] [stderr] 220 | | Rule::integer => convert_integer(inner), [INFO] [stderr] ... | [INFO] [stderr] 223 | | } [INFO] [stderr] 224 | | } [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/parser.rs:226:1 [INFO] [stderr] | [INFO] [stderr] 226 | / pub fn convert_identifier<'i>(pair: Pair<'i, Rule>) -> ast::Expression { [INFO] [stderr] 227 | | assert_eq!(pair.as_rule(), Rule::identifier); [INFO] [stderr] 228 | | ast::Expression::Identifier(String::from(pair.as_str())) [INFO] [stderr] 229 | | } [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/parser.rs:231:1 [INFO] [stderr] | [INFO] [stderr] 231 | / pub fn convert_integer<'i>(pair: Pair<'i, Rule>) -> ast::Expression { [INFO] [stderr] 232 | | assert_eq!(pair.as_rule(), Rule::integer); [INFO] [stderr] 233 | | ast::Expression::Integer(pair.as_str().parse().unwrap()) [INFO] [stderr] 234 | | } [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/parser.rs:236:1 [INFO] [stderr] | [INFO] [stderr] 236 | / pub fn convert_type<'i>(pair: Pair<'i, Rule>) -> ast::Type { [INFO] [stderr] 237 | | assert_eq!(pair.as_rule(), Rule::ty); [INFO] [stderr] 238 | | match pair.as_str() { [INFO] [stderr] 239 | | "int" => ast::Type::Int, [INFO] [stderr] ... | [INFO] [stderr] 245 | | } [INFO] [stderr] 246 | | } [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/parser.rs:10:1 [INFO] [stderr] | [INFO] [stderr] 10 | / pub fn convert_program<'i>(pair: Pair<'i, Rule>) -> ast::Program { [INFO] [stderr] 11 | | assert_eq!(pair.as_rule(), Rule::program); [INFO] [stderr] 12 | | [INFO] [stderr] 13 | | let mut program = ast::Program::new(); [INFO] [stderr] ... | [INFO] [stderr] 20 | | program [INFO] [stderr] 21 | | } [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/parser.rs:57:1 [INFO] [stderr] | [INFO] [stderr] 57 | / pub fn convert_parameter_list<'i>(pair: Pair<'i, Rule>) -> Vec<(String, ast::Type)> { [INFO] [stderr] 58 | | assert_eq!(pair.as_rule(), Rule::parameter_list); [INFO] [stderr] 59 | | pair.into_inner().map(|p| convert_parameter(p)).collect() [INFO] [stderr] 60 | | } [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: redundant closure found [INFO] [stderr] --> src/parser.rs:59:27 [INFO] [stderr] | [INFO] [stderr] 59 | pair.into_inner().map(|p| convert_parameter(p)).collect() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `convert_parameter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [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/parser.rs:62:1 [INFO] [stderr] | [INFO] [stderr] 62 | / pub fn convert_parameter<'i>(pair: Pair<'i, Rule>) -> (String, ast::Type) { [INFO] [stderr] 63 | | assert_eq!(pair.as_rule(), Rule::parameter); [INFO] [stderr] 64 | | [INFO] [stderr] 65 | | let mut iter = pair.into_inner(); [INFO] [stderr] ... | [INFO] [stderr] 69 | | (name, ty) [INFO] [stderr] 70 | | } [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/parser.rs:217:1 [INFO] [stderr] | [INFO] [stderr] 217 | / pub fn convert_leaf<'i>(pair: Pair<'i, Rule>) -> ast::Expression { [INFO] [stderr] 218 | | let inner = pair.into_inner().next().unwrap(); [INFO] [stderr] 219 | | match inner.as_rule() { [INFO] [stderr] 220 | | Rule::integer => convert_integer(inner), [INFO] [stderr] ... | [INFO] [stderr] 223 | | } [INFO] [stderr] 224 | | } [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/parser.rs:226:1 [INFO] [stderr] | [INFO] [stderr] 226 | / pub fn convert_identifier<'i>(pair: Pair<'i, Rule>) -> ast::Expression { [INFO] [stderr] 227 | | assert_eq!(pair.as_rule(), Rule::identifier); [INFO] [stderr] 228 | | ast::Expression::Identifier(String::from(pair.as_str())) [INFO] [stderr] 229 | | } [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/parser.rs:231:1 [INFO] [stderr] | [INFO] [stderr] 231 | / pub fn convert_integer<'i>(pair: Pair<'i, Rule>) -> ast::Expression { [INFO] [stderr] 232 | | assert_eq!(pair.as_rule(), Rule::integer); [INFO] [stderr] 233 | | ast::Expression::Integer(pair.as_str().parse().unwrap()) [INFO] [stderr] 234 | | } [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/parser.rs:236:1 [INFO] [stderr] | [INFO] [stderr] 236 | / pub fn convert_type<'i>(pair: Pair<'i, Rule>) -> ast::Type { [INFO] [stderr] 237 | | assert_eq!(pair.as_rule(), Rule::ty); [INFO] [stderr] 238 | | match pair.as_str() { [INFO] [stderr] 239 | | "int" => ast::Type::Int, [INFO] [stderr] ... | [INFO] [stderr] 245 | | } [INFO] [stderr] 246 | | } [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] Finished dev [unoptimized + debuginfo] target(s) in 12.05s [INFO] running `"docker" "inspect" "967588b0c8f6853478466781fe5eb598651eab916b120d15a2c052a9b633a729"` [INFO] running `"docker" "rm" "-f" "967588b0c8f6853478466781fe5eb598651eab916b120d15a2c052a9b633a729"` [INFO] [stdout] 967588b0c8f6853478466781fe5eb598651eab916b120d15a2c052a9b633a729