[INFO] updating cached repository meddle0x53/mscheme [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/meddle0x53/mscheme [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/meddle0x53/mscheme" "work/ex/clippy-test-run/sources/stable/gh/meddle0x53/mscheme"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/meddle0x53/mscheme'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/meddle0x53/mscheme" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/meddle0x53/mscheme"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/meddle0x53/mscheme'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 84dafecf41861185cba65f3cfea7c347f31241dd [INFO] sha for GitHub repo meddle0x53/mscheme: 84dafecf41861185cba65f3cfea7c347f31241dd [INFO] validating manifest of meddle0x53/mscheme 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 meddle0x53/mscheme 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 meddle0x53/mscheme [INFO] finished frobbing meddle0x53/mscheme [INFO] frobbed toml for meddle0x53/mscheme written to work/ex/clippy-test-run/sources/stable/gh/meddle0x53/mscheme/Cargo.toml [INFO] started frobbing meddle0x53/mscheme [INFO] finished frobbing meddle0x53/mscheme [INFO] frobbed toml for meddle0x53/mscheme written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/meddle0x53/mscheme/Cargo.toml [INFO] crate meddle0x53/mscheme 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] [stderr] Blocking waiting for file lock on the registry index [INFO] linting meddle0x53/mscheme 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/meddle0x53/mscheme:/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] 3ca9ce2091afdf5158def8c8e76096c7335a8d05bd5aadad76ceed5d6813f5c2 [INFO] running `"docker" "start" "-a" "3ca9ce2091afdf5158def8c8e76096c7335a8d05bd5aadad76ceed5d6813f5c2"` [INFO] [stderr] Checking nix v0.5.1 [INFO] [stderr] Checking rustyline v1.0.0 [INFO] [stderr] Checking mscheme v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer/iterator.rs:84:21 [INFO] [stderr] | [INFO] [stderr] 84 | None => return Err(SyntaxError::UnexpectedEOL), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(SyntaxError::UnexpectedEOL)` [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] [INFO] [stderr] warning: unnecessary parentheses around function argument [INFO] [stderr] --> src/main.rs:16:23 [INFO] [stderr] | [INFO] [stderr] 16 | repl::start("> ", (|s, runtime| interpreter::run(&s, runtime))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer/iterator.rs:84:21 [INFO] [stderr] | [INFO] [stderr] 84 | None => return Err(SyntaxError::UnexpectedEOL), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(SyntaxError::UnexpectedEOL)` [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] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lexer/mod.rs:150:45 [INFO] [stderr] | [INFO] [stderr] 150 | OpenParen, id("-"), Integer(778899), OpenParen, id("+"), [INFO] [stderr] | ^^^^^^ help: consider: `778_899` [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: unnecessary parentheses around function argument [INFO] [stderr] --> src/main.rs:16:23 [INFO] [stderr] | [INFO] [stderr] 16 | repl::start("> ", (|s, runtime| interpreter::run(&s, runtime))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/errors.rs:13:9 [INFO] [stderr] | [INFO] [stderr] 13 | / match self { [INFO] [stderr] 14 | | &SyntaxError::InvalidSymbol(line, column, ref message) => { [INFO] [stderr] 15 | | write!( [INFO] [stderr] 16 | | f, [INFO] [stderr] ... | [INFO] [stderr] 26 | | } [INFO] [stderr] 27 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 13 | match *self { [INFO] [stderr] 14 | SyntaxError::InvalidSymbol(line, column, ref message) => { [INFO] [stderr] 15 | write!( [INFO] [stderr] 16 | f, [INFO] [stderr] 17 | "SyntaxError: {} (line: {}, column: {})", [INFO] [stderr] 18 | message, line, column + 1 [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/errors.rs:54:9 [INFO] [stderr] | [INFO] [stderr] 54 | / match self { [INFO] [stderr] 55 | | &ParseError::ClosingParenWithoutOpening => { [INFO] [stderr] 56 | | write!( [INFO] [stderr] 57 | | f, "ParseError: Closing parens don't match the opening ones" [INFO] [stderr] ... | [INFO] [stderr] 62 | | } [INFO] [stderr] 63 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 54 | match *self { [INFO] [stderr] 55 | ParseError::ClosingParenWithoutOpening => { [INFO] [stderr] 56 | write!( [INFO] [stderr] 57 | f, "ParseError: Closing parens don't match the opening ones" [INFO] [stderr] 58 | ) [INFO] [stderr] 59 | }, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: Negation by multiplying with -1 [INFO] [stderr] --> src/lexer/iterator.rs:69:37 [INFO] [stderr] | [INFO] [stderr] 69 | Ok(Integer(if sign == '-' { -1 * value } else { value })) [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::neg_multiply)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_multiply [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `for` loop [INFO] [stderr] --> src/lexer/iterator.rs:111:36 [INFO] [stderr] | [INFO] [stderr] 111 | while let Some((_, chr)) = self.next() { [INFO] [stderr] | ^^^^^^^^^^^ help: try: `for (_, chr) in self { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_on_iterator)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/parser/mod.rs:17:22 [INFO] [stderr] | [INFO] [stderr] 17 | pub fn parse(tokens: &Vec) -> Result, ParseError> { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Token]` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser/mod.rs:25:9 [INFO] [stderr] | [INFO] [stderr] 25 | / match token { [INFO] [stderr] 26 | | &Token::OpenParen => { [INFO] [stderr] 27 | | let inner = try!(parse_level(tokens, level + 1)); [INFO] [stderr] 28 | | ast_nodes.push(List(inner)); [INFO] [stderr] ... | [INFO] [stderr] 48 | | }, [INFO] [stderr] 49 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 25 | match *token { [INFO] [stderr] 26 | Token::OpenParen => { [INFO] [stderr] 27 | let inner = try!(parse_level(tokens, level + 1)); [INFO] [stderr] 28 | ast_nodes.push(List(inner)); [INFO] [stderr] 29 | }, [INFO] [stderr] 30 | Token::CloseParen => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/parser/mod.rs:41:40 [INFO] [stderr] | [INFO] [stderr] 41 | ast_nodes.push(Integer(val.clone())); [INFO] [stderr] | ^^^^^^^^^^^ help: try dereferencing it: `*val` [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/parser/mod.rs:44:40 [INFO] [stderr] | [INFO] [stderr] 44 | ast_nodes.push(Boolean(val.clone())); [INFO] [stderr] | ^^^^^^^^^^^ help: try dereferencing it: `*val` [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 don't need to add `&` to all patterns [INFO] [stderr] --> src/interpreter/value.rs:33:9 [INFO] [stderr] | [INFO] [stderr] 33 | / match self { [INFO] [stderr] 34 | | &Symbol(_) => format!("'{}", self.display()), [INFO] [stderr] 35 | | &List(_) => format!("'{}", self.display()), [INFO] [stderr] 36 | | _ => self.display() [INFO] [stderr] 37 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 33 | match *self { [INFO] [stderr] 34 | Symbol(_) => format!("'{}", self.display()), [INFO] [stderr] 35 | List(_) => format!("'{}", self.display()), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/interpreter/value.rs:41:9 [INFO] [stderr] | [INFO] [stderr] 41 | / match self { [INFO] [stderr] 42 | | &Symbol(ref val) => format!("{}", val), [INFO] [stderr] 43 | | &Integer(val) => format!("{}", val), [INFO] [stderr] 44 | | &Boolean(val) => format!("#{}", if val { "t" } else { "f" }), [INFO] [stderr] ... | [INFO] [stderr] 59 | | &Func(_, _) => format!("#") [INFO] [stderr] 60 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 41 | match *self { [INFO] [stderr] 42 | Symbol(ref val) => format!("{}", val), [INFO] [stderr] 43 | Integer(val) => format!("{}", val), [INFO] [stderr] 44 | Boolean(val) => format!("#{}", if val { "t" } else { "f" }), [INFO] [stderr] 45 | StringValue(ref val) => format!("\"{}\"", val), [INFO] [stderr] 46 | List(ref val) => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/interpreter/value.rs:42:33 [INFO] [stderr] | [INFO] [stderr] 42 | &Symbol(ref val) => format!("{}", val), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `val.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: useless use of `format!` [INFO] [stderr] --> src/interpreter/value.rs:59:28 [INFO] [stderr] | [INFO] [stderr] 59 | &Func(_, _) => format!("#") [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"#".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] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/interpreter/runtime.rs:30:39 [INFO] [stderr] | [INFO] [stderr] 30 | pub fn is_var_defined(&self, key: &String) -> bool { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/interpreter/runtime.rs:34:38 [INFO] [stderr] | [INFO] [stderr] 34 | pub fn get_var_value(&self, key: &String) -> Option { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/interpreter/mod.rs:26:24 [INFO] [stderr] | [INFO] [stderr] 26 | pub fn eval(ast_nodes: &Vec, runtime: &RuntimeNode) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^ help: change this to: `&[ASTNode]` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/interpreter/mod.rs:37:5 [INFO] [stderr] | [INFO] [stderr] 37 | / match node { [INFO] [stderr] 38 | | &ASTNode::Identifier(ref v) => { [INFO] [stderr] 39 | | if let Some(val) = runtime.borrow().get_var_value(v) { [INFO] [stderr] 40 | | Ok(val) [INFO] [stderr] ... | [INFO] [stderr] 54 | | } [INFO] [stderr] 55 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 37 | match *node { [INFO] [stderr] 38 | ASTNode::Identifier(ref v) => { [INFO] [stderr] 39 | if let Some(val) = runtime.borrow().get_var_value(v) { [INFO] [stderr] 40 | Ok(val) [INFO] [stderr] 41 | } else { [INFO] [stderr] 42 | runtime_error!("Identifier not found! {:?}", node) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/interpreter/mod.rs:49:16 [INFO] [stderr] | [INFO] [stderr] 49 | if vec.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!vec.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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/interpreter/mod.rs:58:21 [INFO] [stderr] | [INFO] [stderr] 58 | fn eval_list(nodes: &Vec, env: RuntimeNode) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^ help: change this to: `&[ASTNode]` [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: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/interpreter/mod.rs:59:17 [INFO] [stderr] | [INFO] [stderr] 59 | let first = nodes.get(0).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try this: `&nodes[0]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/interpreter/mod.rs:61:5 [INFO] [stderr] | [INFO] [stderr] 61 | / match first { [INFO] [stderr] 62 | | &ASTNode::Identifier(ref func) => { [INFO] [stderr] 63 | | match func.as_str() { [INFO] [stderr] 64 | | "define" => define(nodes, env), [INFO] [stderr] ... | [INFO] [stderr] 90 | | } [INFO] [stderr] 91 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 61 | match *first { [INFO] [stderr] 62 | ASTNode::Identifier(ref func) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/interpreter/mod.rs:95:5 [INFO] [stderr] | [INFO] [stderr] 95 | / match ast_node { [INFO] [stderr] 96 | | &ASTNode::Identifier(ref v) => Ok(Symbol(v.clone())), [INFO] [stderr] 97 | | &ASTNode::Integer(v) => Ok(Integer(v)), [INFO] [stderr] 98 | | &ASTNode::Boolean(v) => Ok(Boolean(v)), [INFO] [stderr] ... | [INFO] [stderr] 104 | | } [INFO] [stderr] 105 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 95 | match *ast_node { [INFO] [stderr] 96 | ASTNode::Identifier(ref v) => Ok(Symbol(v.clone())), [INFO] [stderr] 97 | ASTNode::Integer(v) => Ok(Integer(v)), [INFO] [stderr] 98 | ASTNode::Boolean(v) => Ok(Boolean(v)), [INFO] [stderr] 99 | ASTNode::StringNode(ref v) => Ok(StringValue(v.clone())), [INFO] [stderr] 100 | ASTNode::List(ref values) => { [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] --> src/interpreter/mod.rs:108:22 [INFO] [stderr] | [INFO] [stderr] 108 | fn define(ast_nodes: &Vec, runtime: RuntimeNode) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^ help: change this to: `&[ASTNode]` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/interpreter/mod.rs:111:16 [INFO] [stderr] | [INFO] [stderr] 111 | let name = match node_at!(ast_nodes, 1) { [INFO] [stderr] | ________________^ [INFO] [stderr] 112 | | &ASTNode::Identifier(ref x) => x, [INFO] [stderr] 113 | | _ => runtime_error!("Bad variable name in 'define': {:?}", ast_nodes) [INFO] [stderr] 114 | | }; [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] thread 'main' panicked at 'byte index 38 is out of bounds of ` let mut result = empty!();`', src/libcore/str/mod.rs:2092:9 [INFO] [stderr] stack backtrace: [INFO] [stderr] 0: 0x7fa7cbdf4c53 - std::sys::unix::backtrace::tracing::imp::unwind_backtrace::h00d1e05a61bd440b [INFO] [stderr] at src/libstd/sys/unix/backtrace/tracing/gcc_s.rs:49 [INFO] [stderr] 1: 0x7fa7cbdec368 - std::sys_common::backtrace::_print::hc0d53aca8da62f75 [INFO] [stderr] at src/libstd/sys_common/backtrace.rs:71 [INFO] [stderr] 2: 0x7fa7cbdf16c2 - std::panicking::default_hook::{{closure}}::h46d30bcc4bfff149 [INFO] [stderr] at src/libstd/sys_common/backtrace.rs:59 [INFO] [stderr] at src/libstd/panicking.rs:211 [INFO] [stderr] 3: 0x7fa7cbdf142d - std::panicking::default_hook::h017696c2a8b7b16f [INFO] [stderr] at src/libstd/panicking.rs:227 [INFO] [stderr] 4: 0x7fa7cdd78813 - rustc::util::common::panic_hook::h0c2559a338a9af32 [INFO] [stderr] 5: 0x7fa7cbdf1ea9 - std::panicking::rust_panic_with_hook::h8cbdfe43764887be [INFO] [stderr] at src/libstd/panicking.rs:495 [INFO] [stderr] 6: 0x7fa7cbdf1951 - std::panicking::continue_panic_fmt::h3d3c5a833c00a5e1 [INFO] [stderr] at src/libstd/panicking.rs:398 [INFO] [stderr] 7: 0x7fa7cbdf1835 - rust_begin_unwind [INFO] [stderr] at src/libstd/panicking.rs:325 [INFO] [stderr] 8: 0x7fa7cbe190bc - core::panicking::panic_fmt::h4d67173bc68f6d5a [INFO] [stderr] at src/libcore/panicking.rs:95 [INFO] [stderr] 9: 0x7fa7cbe1b61d - core::str::slice_error_fail::h2f8a3b25099b18dc [INFO] [stderr] at src/libcore/str/mod.rs:0 [INFO] [stderr] 10: 0x7fa7ccc27238 - core::str::traits:: for core::ops::range::RangeTo>::index::{{closure}}::h4971ebf7c303fb06 [INFO] [stderr] 11: 0x7fa7ccc29ced - as core::iter::iterator::Iterator>::fold::h7c7c970f8732e403 [INFO] [stderr] 12: 0x7fa7ccc13b25 - as alloc::vec::SpecExtend>::from_iter::hcf81033af4d7a756 [INFO] [stderr] 13: 0x7fa7ccbfd49f - ::emit::h50e1d2cf7b978a5a [INFO] [stderr] 14: 0x7fa7ccc221b3 - rustc_errors::Handler::emit_db::h60fb65338a7b5561 [INFO] [stderr] 15: 0x7fa7ccc0ee27 - rustc_errors::diagnostic_builder::DiagnosticBuilder::emit::h99e2c4975c3f8028 [INFO] [stderr] 16: 0x563c2b185e08 - clippy_lints::utils::span_lint_and_then::h795763088feffed0 [INFO] [stderr] 17: 0x563c2b138236 - >::check_expr::h5bb1e9cafccfa4fb [INFO] [stderr] 18: 0x7fa7cdd474c0 - as rustc::hir::intravisit::Visitor<'tcx>>::visit_expr::h8a29c722cdf7cb16 [INFO] [stderr] 19: 0x7fa7cdd49361 - as rustc::hir::intravisit::Visitor<'tcx>>::visit_local::hd79792d840fd268c [INFO] [stderr] 20: 0x7fa7cdd495ec - as rustc::hir::intravisit::Visitor<'tcx>>::visit_block::h6655506fe3948600 [INFO] [stderr] 21: 0x7fa7cdd4758a - as rustc::hir::intravisit::Visitor<'tcx>>::visit_expr::h8a29c722cdf7cb16 [INFO] [stderr] 22: 0x7fa7cdd4663f - as rustc::hir::intravisit::Visitor<'tcx>>::visit_body::h21cf9292ae8432c6 [INFO] [stderr] 23: 0x7fa7cdd4647c - as rustc::hir::intravisit::Visitor<'tcx>>::visit_nested_body::he8fb9a062ac4b1c8 [INFO] [stderr] 24: 0x7fa7cdd47cce - as rustc::hir::intravisit::Visitor<'tcx>>::visit_fn::h4aaa2b7e199bfb22 [INFO] [stderr] 25: 0x7fa7cdca82c6 - rustc::hir::intravisit::walk_item::hada2286ef6037169 [INFO] [stderr] 26: 0x7fa7cdd46b0b - as rustc::hir::intravisit::Visitor<'tcx>>::visit_item::h4954886470941d9b [INFO] [stderr] 27: 0x7fa7cdd48fa0 - as rustc::hir::intravisit::Visitor<'tcx>>::visit_mod::h10e5a891f2fbd5fe [INFO] [stderr] 28: 0x7fa7cdca80e8 - rustc::hir::intravisit::walk_item::hada2286ef6037169 [INFO] [stderr] 29: 0x7fa7cdd46b0b - as rustc::hir::intravisit::Visitor<'tcx>>::visit_item::h4954886470941d9b [INFO] [stderr] 30: 0x7fa7cdd48fa0 - as rustc::hir::intravisit::Visitor<'tcx>>::visit_mod::h10e5a891f2fbd5fe [INFO] [stderr] 31: 0x7fa7cdc99c3e - rustc::hir::intravisit::walk_crate::h4afac11c57fcab86 [INFO] [stderr] 32: 0x7fa7cdd5029b - rustc::lint::context::check_crate::hccbef8b90ef472b3 [INFO] [stderr] 33: 0x7fa7ce97bf25 - rustc::util::common::time::hf306edffe5bc1331 [INFO] [stderr] 34: 0x7fa7ce9f5c7e - rustc::ty::context::tls::enter_context::he8336509407aafca [INFO] [stderr] 35: 0x7fa7ce9c4b81 - >::with::h104ad8c2b4754810 [INFO] [stderr] 36: 0x7fa7ce9f8ea5 - rustc::ty::context::TyCtxt::create_and_enter::h74cefb108a2f7b6f [INFO] [stderr] 37: 0x7fa7ce94c915 - rustc_driver::driver::compile_input::hca3f044299fe7ad7 [INFO] [stderr] 38: 0x7fa7cea18352 - rustc_driver::run_compiler_with_pool::hafad319513331ac6 [INFO] [stderr] 39: 0x7fa7ce955415 - >::set::h8ef00e2a892c3c56 [INFO] [stderr] 40: 0x7fa7cea1737a - rustc_driver::run_compiler::h7e74f116e6e5e483 [INFO] [stderr] 41: 0x563c2afeecd7 - >::set::h8ec3c2b8cbec5474 [INFO] [stderr] 42: 0x563c2afdd5d2 - syntax::with_globals::h5a01e3b26631ef2a [INFO] [stderr] 43: 0x7fa7cbe0e319 - __rust_maybe_catch_panic [INFO] [stderr] at src/libpanic_unwind/lib.rs:102 [INFO] [stderr] 44: 0x563c2afde71b - rustc_driver::run::hccd91432ebf6f6b3 [INFO] [stderr] 45: 0x563c2afec92b - clippy_driver::main::hf97ab97bd1d252bd [INFO] [stderr] 46: 0x563c2afeb122 - std::rt::lang_start::{{closure}}::h090d6ed12d543f7e [INFO] [stderr] 47: 0x7fa7cbdf17d2 - std::panicking::try::do_call::h69790245ac2d03fe [INFO] [stderr] at src/libstd/rt.rs:59 [INFO] [stderr] at src/libstd/panicking.rs:310 [INFO] [stderr] 48: 0x7fa7cbe0e319 - __rust_maybe_catch_panic [INFO] [stderr] at src/libpanic_unwind/lib.rs:102 [INFO] [stderr] 49: 0x7fa7cbdf2263 - std::rt::lang_start_internal::h540c897fe52ba9c5 [INFO] [stderr] at src/libstd/panicking.rs:289 [INFO] [stderr] at src/libstd/panic.rs:398 [INFO] [stderr] at src/libstd/rt.rs:58 [INFO] [stderr] 50: 0x563c2afec971 - main [INFO] [stderr] 51: 0x7fa7cb5d82e0 - __libc_start_main [INFO] [stderr] 52: 0x563c2afd5b88 - [INFO] [stderr] query stack during panic: [INFO] [stderr] end of query stack [INFO] [stderr] [INFO] [stderr] error: internal compiler error: unexpected panic [INFO] [stderr] [INFO] [stderr] note: the compiler unexpectedly panicked. this is a bug. [INFO] [stderr] [INFO] [stderr] note: we would appreciate a bug report: https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md#bug-reports [INFO] [stderr] [INFO] [stderr] note: rustc 1.32.0 (9fda7c223 2019-01-16) running on x86_64-unknown-linux-gnu [INFO] [stderr] [INFO] [stderr] note: compiler flags: -C debuginfo=2 --crate-type bin [INFO] [stderr] [INFO] [stderr] note: some of the compiler flags provided by cargo are hidden [INFO] [stderr] [INFO] [stderr] error: Could not compile `mscheme`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/errors.rs:13:9 [INFO] [stderr] | [INFO] [stderr] 13 | / match self { [INFO] [stderr] 14 | | &SyntaxError::InvalidSymbol(line, column, ref message) => { [INFO] [stderr] 15 | | write!( [INFO] [stderr] 16 | | f, [INFO] [stderr] ... | [INFO] [stderr] 26 | | } [INFO] [stderr] 27 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 13 | match *self { [INFO] [stderr] 14 | SyntaxError::InvalidSymbol(line, column, ref message) => { [INFO] [stderr] 15 | write!( [INFO] [stderr] 16 | f, [INFO] [stderr] 17 | "SyntaxError: {} (line: {}, column: {})", [INFO] [stderr] 18 | message, line, column + 1 [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/errors.rs:54:9 [INFO] [stderr] | [INFO] [stderr] 54 | / match self { [INFO] [stderr] 55 | | &ParseError::ClosingParenWithoutOpening => { [INFO] [stderr] 56 | | write!( [INFO] [stderr] 57 | | f, "ParseError: Closing parens don't match the opening ones" [INFO] [stderr] ... | [INFO] [stderr] 62 | | } [INFO] [stderr] 63 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 54 | match *self { [INFO] [stderr] 55 | ParseError::ClosingParenWithoutOpening => { [INFO] [stderr] 56 | write!( [INFO] [stderr] 57 | f, "ParseError: Closing parens don't match the opening ones" [INFO] [stderr] 58 | ) [INFO] [stderr] 59 | }, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: Negation by multiplying with -1 [INFO] [stderr] --> src/lexer/iterator.rs:69:37 [INFO] [stderr] | [INFO] [stderr] 69 | Ok(Integer(if sign == '-' { -1 * value } else { value })) [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::neg_multiply)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_multiply [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `for` loop [INFO] [stderr] --> src/lexer/iterator.rs:111:36 [INFO] [stderr] | [INFO] [stderr] 111 | while let Some((_, chr)) = self.next() { [INFO] [stderr] | ^^^^^^^^^^^ help: try: `for (_, chr) in self { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_on_iterator)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/parser/mod.rs:17:22 [INFO] [stderr] | [INFO] [stderr] 17 | pub fn parse(tokens: &Vec) -> Result, ParseError> { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Token]` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser/mod.rs:25:9 [INFO] [stderr] | [INFO] [stderr] 25 | / match token { [INFO] [stderr] 26 | | &Token::OpenParen => { [INFO] [stderr] 27 | | let inner = try!(parse_level(tokens, level + 1)); [INFO] [stderr] 28 | | ast_nodes.push(List(inner)); [INFO] [stderr] ... | [INFO] [stderr] 48 | | }, [INFO] [stderr] 49 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 25 | match *token { [INFO] [stderr] 26 | Token::OpenParen => { [INFO] [stderr] 27 | let inner = try!(parse_level(tokens, level + 1)); [INFO] [stderr] 28 | ast_nodes.push(List(inner)); [INFO] [stderr] 29 | }, [INFO] [stderr] 30 | Token::CloseParen => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/parser/mod.rs:41:40 [INFO] [stderr] | [INFO] [stderr] 41 | ast_nodes.push(Integer(val.clone())); [INFO] [stderr] | ^^^^^^^^^^^ help: try dereferencing it: `*val` [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/parser/mod.rs:44:40 [INFO] [stderr] | [INFO] [stderr] 44 | ast_nodes.push(Boolean(val.clone())); [INFO] [stderr] | ^^^^^^^^^^^ help: try dereferencing it: `*val` [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 don't need to add `&` to all patterns [INFO] [stderr] --> src/interpreter/value.rs:33:9 [INFO] [stderr] | [INFO] [stderr] 33 | / match self { [INFO] [stderr] 34 | | &Symbol(_) => format!("'{}", self.display()), [INFO] [stderr] 35 | | &List(_) => format!("'{}", self.display()), [INFO] [stderr] 36 | | _ => self.display() [INFO] [stderr] 37 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 33 | match *self { [INFO] [stderr] 34 | Symbol(_) => format!("'{}", self.display()), [INFO] [stderr] 35 | List(_) => format!("'{}", self.display()), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/interpreter/value.rs:41:9 [INFO] [stderr] | [INFO] [stderr] 41 | / match self { [INFO] [stderr] 42 | | &Symbol(ref val) => format!("{}", val), [INFO] [stderr] 43 | | &Integer(val) => format!("{}", val), [INFO] [stderr] 44 | | &Boolean(val) => format!("#{}", if val { "t" } else { "f" }), [INFO] [stderr] ... | [INFO] [stderr] 59 | | &Func(_, _) => format!("#") [INFO] [stderr] 60 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 41 | match *self { [INFO] [stderr] 42 | Symbol(ref val) => format!("{}", val), [INFO] [stderr] 43 | Integer(val) => format!("{}", val), [INFO] [stderr] 44 | Boolean(val) => format!("#{}", if val { "t" } else { "f" }), [INFO] [stderr] 45 | StringValue(ref val) => format!("\"{}\"", val), [INFO] [stderr] 46 | List(ref val) => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/interpreter/value.rs:42:33 [INFO] [stderr] | [INFO] [stderr] 42 | &Symbol(ref val) => format!("{}", val), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `val.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: useless use of `format!` [INFO] [stderr] --> src/interpreter/value.rs:59:28 [INFO] [stderr] | [INFO] [stderr] 59 | &Func(_, _) => format!("#") [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"#".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] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/interpreter/runtime.rs:30:39 [INFO] [stderr] | [INFO] [stderr] 30 | pub fn is_var_defined(&self, key: &String) -> bool { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/interpreter/runtime.rs:34:38 [INFO] [stderr] | [INFO] [stderr] 34 | pub fn get_var_value(&self, key: &String) -> Option { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/interpreter/mod.rs:26:24 [INFO] [stderr] | [INFO] [stderr] 26 | pub fn eval(ast_nodes: &Vec, runtime: &RuntimeNode) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^ help: change this to: `&[ASTNode]` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/interpreter/mod.rs:37:5 [INFO] [stderr] | [INFO] [stderr] 37 | / match node { [INFO] [stderr] 38 | | &ASTNode::Identifier(ref v) => { [INFO] [stderr] 39 | | if let Some(val) = runtime.borrow().get_var_value(v) { [INFO] [stderr] 40 | | Ok(val) [INFO] [stderr] ... | [INFO] [stderr] 54 | | } [INFO] [stderr] 55 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 37 | match *node { [INFO] [stderr] 38 | ASTNode::Identifier(ref v) => { [INFO] [stderr] 39 | if let Some(val) = runtime.borrow().get_var_value(v) { [INFO] [stderr] 40 | Ok(val) [INFO] [stderr] 41 | } else { [INFO] [stderr] 42 | runtime_error!("Identifier not found! {:?}", node) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/interpreter/mod.rs:49:16 [INFO] [stderr] | [INFO] [stderr] 49 | if vec.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!vec.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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/interpreter/mod.rs:58:21 [INFO] [stderr] | [INFO] [stderr] 58 | fn eval_list(nodes: &Vec, env: RuntimeNode) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^ help: change this to: `&[ASTNode]` [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: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/interpreter/mod.rs:59:17 [INFO] [stderr] | [INFO] [stderr] 59 | let first = nodes.get(0).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try this: `&nodes[0]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/interpreter/mod.rs:61:5 [INFO] [stderr] | [INFO] [stderr] 61 | / match first { [INFO] [stderr] 62 | | &ASTNode::Identifier(ref func) => { [INFO] [stderr] 63 | | match func.as_str() { [INFO] [stderr] 64 | | "define" => define(nodes, env), [INFO] [stderr] ... | [INFO] [stderr] 90 | | } [INFO] [stderr] 91 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 61 | match *first { [INFO] [stderr] 62 | ASTNode::Identifier(ref func) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/interpreter/mod.rs:95:5 [INFO] [stderr] | [INFO] [stderr] 95 | / match ast_node { [INFO] [stderr] 96 | | &ASTNode::Identifier(ref v) => Ok(Symbol(v.clone())), [INFO] [stderr] 97 | | &ASTNode::Integer(v) => Ok(Integer(v)), [INFO] [stderr] 98 | | &ASTNode::Boolean(v) => Ok(Boolean(v)), [INFO] [stderr] ... | [INFO] [stderr] 104 | | } [INFO] [stderr] 105 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 95 | match *ast_node { [INFO] [stderr] 96 | ASTNode::Identifier(ref v) => Ok(Symbol(v.clone())), [INFO] [stderr] 97 | ASTNode::Integer(v) => Ok(Integer(v)), [INFO] [stderr] 98 | ASTNode::Boolean(v) => Ok(Boolean(v)), [INFO] [stderr] 99 | ASTNode::StringNode(ref v) => Ok(StringValue(v.clone())), [INFO] [stderr] 100 | ASTNode::List(ref values) => { [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] --> src/interpreter/mod.rs:108:22 [INFO] [stderr] | [INFO] [stderr] 108 | fn define(ast_nodes: &Vec, runtime: RuntimeNode) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^ help: change this to: `&[ASTNode]` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/interpreter/mod.rs:111:16 [INFO] [stderr] | [INFO] [stderr] 111 | let name = match node_at!(ast_nodes, 1) { [INFO] [stderr] | ________________^ [INFO] [stderr] 112 | | &ASTNode::Identifier(ref x) => x, [INFO] [stderr] 113 | | _ => runtime_error!("Bad variable name in 'define': {:?}", ast_nodes) [INFO] [stderr] 114 | | }; [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] thread 'main' panicked at 'byte index 38 is out of bounds of ` let mut result = empty!();`', src/libcore/str/mod.rs:2092:9 [INFO] [stderr] stack backtrace: [INFO] [stderr] 0: 0x7f3b6598ac53 - std::sys::unix::backtrace::tracing::imp::unwind_backtrace::h00d1e05a61bd440b [INFO] [stderr] at src/libstd/sys/unix/backtrace/tracing/gcc_s.rs:49 [INFO] [stderr] 1: 0x7f3b65982368 - std::sys_common::backtrace::_print::hc0d53aca8da62f75 [INFO] [stderr] at src/libstd/sys_common/backtrace.rs:71 [INFO] [stderr] 2: 0x7f3b659876c2 - std::panicking::default_hook::{{closure}}::h46d30bcc4bfff149 [INFO] [stderr] at src/libstd/sys_common/backtrace.rs:59 [INFO] [stderr] at src/libstd/panicking.rs:211 [INFO] [stderr] 3: 0x7f3b6598742d - std::panicking::default_hook::h017696c2a8b7b16f [INFO] [stderr] at src/libstd/panicking.rs:227 [INFO] [stderr] 4: 0x7f3b6790e813 - rustc::util::common::panic_hook::h0c2559a338a9af32 [INFO] [stderr] 5: 0x7f3b65987ea9 - std::panicking::rust_panic_with_hook::h8cbdfe43764887be [INFO] [stderr] at src/libstd/panicking.rs:495 [INFO] [stderr] 6: 0x7f3b65987951 - std::panicking::continue_panic_fmt::h3d3c5a833c00a5e1 [INFO] [stderr] at src/libstd/panicking.rs:398 [INFO] [stderr] 7: 0x7f3b65987835 - rust_begin_unwind [INFO] [stderr] at src/libstd/panicking.rs:325 [INFO] [stderr] 8: 0x7f3b659af0bc - core::panicking::panic_fmt::h4d67173bc68f6d5a [INFO] [stderr] at src/libcore/panicking.rs:95 [INFO] [stderr] 9: 0x7f3b659b161d - core::str::slice_error_fail::h2f8a3b25099b18dc [INFO] [stderr] at src/libcore/str/mod.rs:0 [INFO] [stderr] 10: 0x7f3b667bd238 - core::str::traits:: for core::ops::range::RangeTo>::index::{{closure}}::h4971ebf7c303fb06 [INFO] [stderr] 11: 0x7f3b667bfced - as core::iter::iterator::Iterator>::fold::h7c7c970f8732e403 [INFO] [stderr] 12: 0x7f3b667a9b25 - as alloc::vec::SpecExtend>::from_iter::hcf81033af4d7a756 [INFO] [stderr] 13: 0x7f3b6679349f - ::emit::h50e1d2cf7b978a5a [INFO] [stderr] 14: 0x7f3b667b81b3 - rustc_errors::Handler::emit_db::h60fb65338a7b5561 [INFO] [stderr] 15: 0x7f3b667a4e27 - rustc_errors::diagnostic_builder::DiagnosticBuilder::emit::h99e2c4975c3f8028 [INFO] [stderr] 16: 0x55fac5705e08 - clippy_lints::utils::span_lint_and_then::h795763088feffed0 [INFO] [stderr] 17: 0x55fac56b8236 - >::check_expr::h5bb1e9cafccfa4fb [INFO] [stderr] 18: 0x7f3b678dd4c0 - as rustc::hir::intravisit::Visitor<'tcx>>::visit_expr::h8a29c722cdf7cb16 [INFO] [stderr] 19: 0x7f3b678df361 - as rustc::hir::intravisit::Visitor<'tcx>>::visit_local::hd79792d840fd268c [INFO] [stderr] 20: 0x7f3b678df5ec - as rustc::hir::intravisit::Visitor<'tcx>>::visit_block::h6655506fe3948600 [INFO] [stderr] 21: 0x7f3b678dd58a - as rustc::hir::intravisit::Visitor<'tcx>>::visit_expr::h8a29c722cdf7cb16 [INFO] [stderr] 22: 0x7f3b678dc63f - as rustc::hir::intravisit::Visitor<'tcx>>::visit_body::h21cf9292ae8432c6 [INFO] [stderr] 23: 0x7f3b678dc47c - as rustc::hir::intravisit::Visitor<'tcx>>::visit_nested_body::he8fb9a062ac4b1c8 [INFO] [stderr] 24: 0x7f3b678ddcce - as rustc::hir::intravisit::Visitor<'tcx>>::visit_fn::h4aaa2b7e199bfb22 [INFO] [stderr] 25: 0x7f3b6783e2c6 - rustc::hir::intravisit::walk_item::hada2286ef6037169 [INFO] [stderr] 26: 0x7f3b678dcb0b - as rustc::hir::intravisit::Visitor<'tcx>>::visit_item::h4954886470941d9b [INFO] [stderr] 27: 0x7f3b678defa0 - as rustc::hir::intravisit::Visitor<'tcx>>::visit_mod::h10e5a891f2fbd5fe [INFO] [stderr] 28: 0x7f3b6783e0e8 - rustc::hir::intravisit::walk_item::hada2286ef6037169 [INFO] [stderr] 29: 0x7f3b678dcb0b - as rustc::hir::intravisit::Visitor<'tcx>>::visit_item::h4954886470941d9b [INFO] [stderr] 30: 0x7f3b678defa0 - as rustc::hir::intravisit::Visitor<'tcx>>::visit_mod::h10e5a891f2fbd5fe [INFO] [stderr] 31: 0x7f3b6782fc3e - rustc::hir::intravisit::walk_crate::h4afac11c57fcab86 [INFO] [stderr] 32: 0x7f3b678e629b - rustc::lint::context::check_crate::hccbef8b90ef472b3 [INFO] [stderr] 33: 0x7f3b68511f25 - rustc::util::common::time::hf306edffe5bc1331 [INFO] [stderr] 34: 0x7f3b6858bc7e - rustc::ty::context::tls::enter_context::he8336509407aafca [INFO] [stderr] 35: 0x7f3b6855ab81 - >::with::h104ad8c2b4754810 [INFO] [stderr] 36: 0x7f3b6858eea5 - rustc::ty::context::TyCtxt::create_and_enter::h74cefb108a2f7b6f [INFO] [stderr] 37: 0x7f3b684e2915 - rustc_driver::driver::compile_input::hca3f044299fe7ad7 [INFO] [stderr] 38: 0x7f3b685ae352 - rustc_driver::run_compiler_with_pool::hafad319513331ac6 [INFO] [stderr] 39: 0x7f3b684eb415 - >::set::h8ef00e2a892c3c56 [INFO] [stderr] 40: 0x7f3b685ad37a - rustc_driver::run_compiler::h7e74f116e6e5e483 [INFO] [stderr] 41: 0x55fac556ecd7 - >::set::h8ec3c2b8cbec5474 [INFO] [stderr] 42: 0x55fac555d5d2 - syntax::with_globals::h5a01e3b26631ef2a [INFO] [stderr] 43: 0x7f3b659a4319 - __rust_maybe_catch_panic [INFO] [stderr] at src/libpanic_unwind/lib.rs:102 [INFO] [stderr] 44: 0x55fac555e71b - rustc_driver::run::hccd91432ebf6f6b3 [INFO] [stderr] 45: 0x55fac556c92b - clippy_driver::main::hf97ab97bd1d252bd [INFO] [stderr] 46: 0x55fac556b122 - std::rt::lang_start::{{closure}}::h090d6ed12d543f7e [INFO] [stderr] 47: 0x7f3b659877d2 - std::panicking::try::do_call::h69790245ac2d03fe [INFO] [stderr] at src/libstd/rt.rs:59 [INFO] [stderr] at src/libstd/panicking.rs:310 [INFO] [stderr] 48: 0x7f3b659a4319 - __rust_maybe_catch_panic [INFO] [stderr] at src/libpanic_unwind/lib.rs:102 [INFO] [stderr] 49: 0x7f3b65988263 - std::rt::lang_start_internal::h540c897fe52ba9c5 [INFO] [stderr] at src/libstd/panicking.rs:289 [INFO] [stderr] at src/libstd/panic.rs:398 [INFO] [stderr] at src/libstd/rt.rs:58 [INFO] [stderr] 50: 0x55fac556c971 - main [INFO] [stderr] 51: 0x7f3b6516e2e0 - __libc_start_main [INFO] [stderr] 52: 0x55fac5555b88 - [INFO] [stderr] query stack during panic: [INFO] [stderr] end of query stack [INFO] [stderr] [INFO] [stderr] error: internal compiler error: unexpected panic [INFO] [stderr] [INFO] [stderr] note: the compiler unexpectedly panicked. this is a bug. [INFO] [stderr] [INFO] [stderr] note: we would appreciate a bug report: https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md#bug-reports [INFO] [stderr] [INFO] [stderr] note: rustc 1.32.0 (9fda7c223 2019-01-16) running on x86_64-unknown-linux-gnu [INFO] [stderr] [INFO] [stderr] note: compiler flags: -C debuginfo=2 [INFO] [stderr] [INFO] [stderr] note: some of the compiler flags provided by cargo are hidden [INFO] [stderr] [INFO] [stderr] error: Could not compile `mscheme`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "3ca9ce2091afdf5158def8c8e76096c7335a8d05bd5aadad76ceed5d6813f5c2"` [INFO] running `"docker" "rm" "-f" "3ca9ce2091afdf5158def8c8e76096c7335a8d05bd5aadad76ceed5d6813f5c2"` [INFO] [stdout] 3ca9ce2091afdf5158def8c8e76096c7335a8d05bd5aadad76ceed5d6813f5c2