[INFO] updating cached repository tylerlaberge/rascal [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/tylerlaberge/rascal [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/tylerlaberge/rascal" "work/ex/clippy-test-run/sources/stable/gh/tylerlaberge/rascal"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/tylerlaberge/rascal'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/tylerlaberge/rascal" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/tylerlaberge/rascal"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/tylerlaberge/rascal'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 52475957c947dff2e610a9cd3874766b7e3688cc [INFO] sha for GitHub repo tylerlaberge/rascal: 52475957c947dff2e610a9cd3874766b7e3688cc [INFO] validating manifest of tylerlaberge/rascal 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 tylerlaberge/rascal 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 tylerlaberge/rascal [INFO] finished frobbing tylerlaberge/rascal [INFO] frobbed toml for tylerlaberge/rascal written to work/ex/clippy-test-run/sources/stable/gh/tylerlaberge/rascal/Cargo.toml [INFO] started frobbing tylerlaberge/rascal [INFO] finished frobbing tylerlaberge/rascal [INFO] frobbed toml for tylerlaberge/rascal written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/tylerlaberge/rascal/Cargo.toml [INFO] crate tylerlaberge/rascal 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 tylerlaberge/rascal against stable+rustflags=-Dclippy::into_iter_on_array for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-6/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/tylerlaberge/rascal:/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 -Dclippy::into_iter_on_array" "-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] e3856e07cac141021b69f13093dff9fdce9bce9175a3607df80a04aef72162b0 [INFO] running `"docker" "start" "-a" "e3856e07cac141021b69f13093dff9fdce9bce9175a3607df80a04aef72162b0"` [INFO] [stderr] Checking either v1.2.0 [INFO] [stderr] Checking itertools v0.7.1 [INFO] [stderr] Checking rascal v1.2.0 (/opt/crater/workdir) [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/lexer/mod.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | mod lexer; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer/lexer.rs:20:9 [INFO] [stderr] | [INFO] [stderr] 20 | return lexer; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `lexer` [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: unneeded return statement [INFO] [stderr] --> src/lexer/lexer.rs:24:9 [INFO] [stderr] | [INFO] [stderr] 24 | return self.token_cache.peek(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.token_cache.peek()` [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/lexer/lexer.rs:28:9 [INFO] [stderr] | [INFO] [stderr] 28 | return self.token_cache.peek_ahead(ahead); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.token_cache.peek_ahead(ahead)` [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/lexer/lexer.rs:62:9 [INFO] [stderr] | [INFO] [stderr] 62 | return Ok(final_int); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(final_int)` [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/lexer/lexer.rs:57:17 [INFO] [stderr] | [INFO] [stderr] 57 | return acc; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `acc` [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/lexer/lexer.rs:101:9 [INFO] [stderr] | [INFO] [stderr] 101 | / return match final_id.to_lowercase().as_str() { [INFO] [stderr] 102 | | "program" => Ok(Token::PROGRAM), [INFO] [stderr] 103 | | "procedure" => Ok(Token::PROCEDURE), [INFO] [stderr] 104 | | "function" => Ok(Token::FUNCTION), [INFO] [stderr] ... | [INFO] [stderr] 121 | | _ => Ok(Token::ID(final_id)) [INFO] [stderr] 122 | | }; [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] 101 | match final_id.to_lowercase().as_str() { [INFO] [stderr] 102 | "program" => Ok(Token::PROGRAM), [INFO] [stderr] 103 | "procedure" => Ok(Token::PROCEDURE), [INFO] [stderr] 104 | "function" => Ok(Token::FUNCTION), [INFO] [stderr] 105 | "begin" => Ok(Token::BEGIN), [INFO] [stderr] 106 | "end" => Ok(Token::END), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer/lexer.rs:98:17 [INFO] [stderr] | [INFO] [stderr] 98 | return acc; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `acc` [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/lexer/lexer.rs:143:9 [INFO] [stderr] | [INFO] [stderr] 143 | return Ok(Token::STRING_LITERAL(final_string)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Token::STRING_LITERAL(final_string))` [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/lexer/lexer.rs:135:17 [INFO] [stderr] | [INFO] [stderr] 135 | return acc; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `acc` [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/lexer/lexer.rs:147:9 [INFO] [stderr] | [INFO] [stderr] 147 | / return match (self.source.current_char(), self.source.next()) { [INFO] [stderr] 148 | | (Some(':'), Some('=')) => Ok(Token::ASSIGN), [INFO] [stderr] 149 | | _ => Err(String::from("Internal Lexer Error: Expected ':=' characters")) [INFO] [stderr] 150 | | }; [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] 147 | match (self.source.current_char(), self.source.next()) { [INFO] [stderr] 148 | (Some(':'), Some('=')) => Ok(Token::ASSIGN), [INFO] [stderr] 149 | _ => Err(String::from("Internal Lexer Error: Expected ':=' characters")) [INFO] [stderr] 150 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer/lexer.rs:154:9 [INFO] [stderr] | [INFO] [stderr] 154 | / return match self.source.current_char() { [INFO] [stderr] 155 | | Some('<') => match self.source.peek() { [INFO] [stderr] 156 | | Some('=') => { [INFO] [stderr] 157 | | self.source.next(); [INFO] [stderr] ... | [INFO] [stderr] 174 | | _ => Err(String::from("Internal Lexer Error: Expected comparison character")) [INFO] [stderr] 175 | | }; [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] 154 | match self.source.current_char() { [INFO] [stderr] 155 | Some('<') => match self.source.peek() { [INFO] [stderr] 156 | Some('=') => { [INFO] [stderr] 157 | self.source.next(); [INFO] [stderr] 158 | Ok(Token::LESS_THAN_OR_EQUAL) [INFO] [stderr] 159 | }, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer/lexer.rs:179:9 [INFO] [stderr] | [INFO] [stderr] 179 | / return match self.source.next() { [INFO] [stderr] 180 | | Some(character) if character.is_whitespace() => self.lex(), [INFO] [stderr] 181 | | Some(character) if character.is_digit(10) => self.integer(), [INFO] [stderr] 182 | | Some(character) if character.is_alphabetic() => self.id(), [INFO] [stderr] ... | [INFO] [stderr] 201 | | Some(character) => Err(format!("Lexer Error: Unknown Token '{}'", character)), [INFO] [stderr] 202 | | } [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] 179 | match self.source.next() { [INFO] [stderr] 180 | Some(character) if character.is_whitespace() => self.lex(), [INFO] [stderr] 181 | Some(character) if character.is_digit(10) => self.integer(), [INFO] [stderr] 182 | Some(character) if character.is_alphabetic() => self.id(), [INFO] [stderr] 183 | Some(':') => match self.source.peek() { [INFO] [stderr] 184 | Some('=') => self.assign(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer/lexer.rs:210:9 [INFO] [stderr] | [INFO] [stderr] 210 | return self.token_cache.next(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.token_cache.next()` [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/lexer/token.rs:53:9 [INFO] [stderr] | [INFO] [stderr] 53 | return TokenCache { tokens: vec![] }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `TokenCache { tokens: vec![] }` [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/lexer/token.rs:61:9 [INFO] [stderr] | [INFO] [stderr] 61 | return self.tokens.get(0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.tokens.get(0)` [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/lexer/token.rs:65:9 [INFO] [stderr] | [INFO] [stderr] 65 | return self.tokens.get(ahead); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.tokens.get(ahead)` [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/lexer/token.rs:73:9 [INFO] [stderr] | [INFO] [stderr] 73 | return if self.tokens.is_empty() { None } else { Some(self.tokens.remove(0)) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `if self.tokens.is_empty() { None } else { Some(self.tokens.remove(0)) }` [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/lexer/source.rs:12:9 [INFO] [stderr] | [INFO] [stderr] 12 | / return Source { [INFO] [stderr] 13 | | chars: raw_text.chars().peekable(), [INFO] [stderr] 14 | | current_char: None, [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_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 12 | Source { [INFO] [stderr] 13 | chars: raw_text.chars().peekable(), [INFO] [stderr] 14 | current_char: None, [INFO] [stderr] 15 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer/source.rs:19:9 [INFO] [stderr] | [INFO] [stderr] 19 | return self.current_char; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.current_char` [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/lexer/source.rs:23:9 [INFO] [stderr] | [INFO] [stderr] 23 | return self.chars.peek(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.chars.peek()` [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/lexer/source.rs:33:9 [INFO] [stderr] | [INFO] [stderr] 33 | return self.current_char; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.current_char` [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/lexer/source.rs:46:9 [INFO] [stderr] | [INFO] [stderr] 46 | return if pass { self.next() } else { None }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `if pass { self.next() } else { None }` [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: module has the same name as its containing module [INFO] [stderr] --> src/parser/mod.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | mod parser; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser/parser.rs:59:9 [INFO] [stderr] | [INFO] [stderr] 59 | return Parser { lexer }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Parser { lexer }` [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/parser/parser.rs:63:9 [INFO] [stderr] | [INFO] [stderr] 63 | / return match token { [INFO] [stderr] 64 | | Token::INTEGER_CONST(_) [INFO] [stderr] 65 | | | Token::REAL_CONST(_) [INFO] [stderr] 66 | | | Token::STRING_LITERAL(_ ) [INFO] [stderr] ... | [INFO] [stderr] 73 | | _ => Err(String::from(format!("Expression Parse Error at token {:?}", token))) [INFO] [stderr] 74 | | }; [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] 63 | match token { [INFO] [stderr] 64 | Token::INTEGER_CONST(_) [INFO] [stderr] 65 | | Token::REAL_CONST(_) [INFO] [stderr] 66 | | Token::STRING_LITERAL(_ ) [INFO] [stderr] 67 | | Token::BOOLEAN_CONST(_) => Ok(PrefixParselet::Literal), [INFO] [stderr] 68 | Token::PLUS [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser/parser.rs:78:9 [INFO] [stderr] | [INFO] [stderr] 78 | / return match token { [INFO] [stderr] 79 | | Token::PLUS [INFO] [stderr] 80 | | | Token::MINUS => Ok(InfixParselet::BinaryOperator(Precedence::SUM as u32)), [INFO] [stderr] 81 | | Token::MULTIPLY [INFO] [stderr] ... | [INFO] [stderr] 93 | | _ => Err(String::from(format!("Expression Parse Error at token {:?}", token))) [INFO] [stderr] 94 | | }; [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] 78 | match token { [INFO] [stderr] 79 | Token::PLUS [INFO] [stderr] 80 | | Token::MINUS => Ok(InfixParselet::BinaryOperator(Precedence::SUM as u32)), [INFO] [stderr] 81 | Token::MULTIPLY [INFO] [stderr] 82 | | Token::INTEGER_DIV [INFO] [stderr] 83 | | Token::FLOAT_DIV => Ok(InfixParselet::BinaryOperator(Precedence::PRODUCT as u32)), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser/parser.rs:98:9 [INFO] [stderr] | [INFO] [stderr] 98 | / return match self.lexer.peek() { [INFO] [stderr] 99 | | Some(token) => match Parser::get_infix_parselet(token) { [INFO] [stderr] 100 | | Ok(parselet) => parselet.get_precedence(), [INFO] [stderr] 101 | | Err(_) => 0 [INFO] [stderr] 102 | | }, [INFO] [stderr] 103 | | None => 0 [INFO] [stderr] 104 | | }; [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] 98 | match self.lexer.peek() { [INFO] [stderr] 99 | Some(token) => match Parser::get_infix_parselet(token) { [INFO] [stderr] 100 | Ok(parselet) => parselet.get_precedence(), [INFO] [stderr] 101 | Err(_) => 0 [INFO] [stderr] 102 | }, [INFO] [stderr] 103 | None => 0 [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser/parser.rs:125:9 [INFO] [stderr] | [INFO] [stderr] 125 | return Ok(Program(variable, block)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Program(variable, block))` [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/parser/parser.rs:132:9 [INFO] [stderr] | [INFO] [stderr] 132 | return Ok(Block(self.declarations()?, self.compound_statement()?)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Block(self.declarations()?, self.compound_statement()?))` [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/parser/parser.rs:179:9 [INFO] [stderr] | [INFO] [stderr] 179 | return Ok(declarations); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(declarations)` [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/parser/parser.rs:208:9 [INFO] [stderr] | [INFO] [stderr] 208 | / return match self.lexer.next() { [INFO] [stderr] 209 | | Some(Token::COLON) => match (self.type_spec()?, self.lexer.next()) { [INFO] [stderr] 210 | | (type_spec, Some(Token::SEMI)) => Ok(VariableDeclaration(ids, type_spec)), [INFO] [stderr] 211 | | (type_spec, _) => Err(String::from(format!("Variable Declaration Parse Error: Expected {:?} token after {:?}", Token::SEMI, type_spec))) [INFO] [stderr] 212 | | }, [INFO] [stderr] 213 | | _ => Err(String::from(format!("Variable Declaration Parse Error: Expected {:?} token after declared variables", Token::COLON))) [INFO] [stderr] 214 | | }; [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] 208 | match self.lexer.next() { [INFO] [stderr] 209 | Some(Token::COLON) => match (self.type_spec()?, self.lexer.next()) { [INFO] [stderr] 210 | (type_spec, Some(Token::SEMI)) => Ok(VariableDeclaration(ids, type_spec)), [INFO] [stderr] 211 | (type_spec, _) => Err(String::from(format!("Variable Declaration Parse Error: Expected {:?} token after {:?}", Token::SEMI, type_spec))) [INFO] [stderr] 212 | }, [INFO] [stderr] 213 | _ => Err(String::from(format!("Variable Declaration Parse Error: Expected {:?} token after declared variables", Token::COLON))) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser/parser.rs:221:9 [INFO] [stderr] | [INFO] [stderr] 221 | / return match self.lexer.next() { [INFO] [stderr] 222 | | Some(Token::INTEGER) => Ok(TypeSpec::INTEGER), [INFO] [stderr] 223 | | Some(Token::REAL) => Ok(TypeSpec::REAL), [INFO] [stderr] 224 | | Some(Token::STRING) => Ok(TypeSpec::STRING), [INFO] [stderr] 225 | | Some(Token::BOOLEAN) => Ok(TypeSpec::BOOLEAN), [INFO] [stderr] 226 | | _ => Err(String::from(format!("TypeSpec Parse Error: Expected one of {:?}", vec![TypeSpec::INTEGER, TypeSpec::REAL, TypeSpec::STRING, TypeSpec::BOOLEAN]))) [INFO] [stderr] 227 | | }; [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] 221 | match self.lexer.next() { [INFO] [stderr] 222 | Some(Token::INTEGER) => Ok(TypeSpec::INTEGER), [INFO] [stderr] 223 | Some(Token::REAL) => Ok(TypeSpec::REAL), [INFO] [stderr] 224 | Some(Token::STRING) => Ok(TypeSpec::STRING), [INFO] [stderr] 225 | Some(Token::BOOLEAN) => Ok(TypeSpec::BOOLEAN), [INFO] [stderr] 226 | _ => Err(String::from(format!("TypeSpec Parse Error: Expected one of {:?}", vec![TypeSpec::INTEGER, TypeSpec::REAL, TypeSpec::STRING, TypeSpec::BOOLEAN]))) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser/parser.rs:254:9 [INFO] [stderr] | [INFO] [stderr] 254 | return Ok(ProcedureDeclaration(name, parameters, block)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(ProcedureDeclaration(name, parameters, block))` [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/parser/parser.rs:281:9 [INFO] [stderr] | [INFO] [stderr] 281 | return Ok(FunctionDeclaration(name, parameters, block, return_type)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(FunctionDeclaration(name, parameters, block, return_type))` [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/parser/parser.rs:301:9 [INFO] [stderr] | [INFO] [stderr] 301 | return Ok(FormalParameterList(parameters)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(FormalParameterList(parameters))` [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/parser/parser.rs:335:9 [INFO] [stderr] | [INFO] [stderr] 335 | return Ok(FormalParameters(ids, type_spec)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(FormalParameters(ids, type_spec))` [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/parser/parser.rs:353:9 [INFO] [stderr] | [INFO] [stderr] 353 | return Ok(Compound(statements)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Compound(statements))` [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/parser/parser.rs:360:9 [INFO] [stderr] | [INFO] [stderr] 360 | / return match self.lexer.peek() { [INFO] [stderr] 361 | | Some(Token::BEGIN) => Ok(Statement::Compound(self.compound_statement()?)), [INFO] [stderr] 362 | | Some(Token::ID(_)) => match self.lexer.peek_ahead(1) { [INFO] [stderr] 363 | | Some(Token::LPAREN) => Ok(Statement::FunctionCall(self.function_call()?)), [INFO] [stderr] ... | [INFO] [stderr] 368 | | _ => Err(String::from("Statement Parse Error: Expected compound statement, function call, assignment statement, or if statement")) [INFO] [stderr] 369 | | }; [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] 360 | match self.lexer.peek() { [INFO] [stderr] 361 | Some(Token::BEGIN) => Ok(Statement::Compound(self.compound_statement()?)), [INFO] [stderr] 362 | Some(Token::ID(_)) => match self.lexer.peek_ahead(1) { [INFO] [stderr] 363 | Some(Token::LPAREN) => Ok(Statement::FunctionCall(self.function_call()?)), [INFO] [stderr] 364 | Some(Token::ASSIGN) => Ok(Statement::Assignment(self.assignment_statement()?)), [INFO] [stderr] 365 | _ => Err(String::from("Statement Parse Error: Expected assignment statement or function call after id token")) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser/parser.rs:384:9 [INFO] [stderr] | [INFO] [stderr] 384 | / return match self.lexer.peek() { [INFO] [stderr] 385 | | Some(Token::ELSE) => { [INFO] [stderr] 386 | | self.lexer.next(); // eat the 'else' token [INFO] [stderr] 387 | | match self.lexer.peek() { [INFO] [stderr] ... | [INFO] [stderr] 392 | | _ => Ok(IfStatement::If(if_expr, if_compound)) [INFO] [stderr] 393 | | }; [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] 384 | match self.lexer.peek() { [INFO] [stderr] 385 | Some(Token::ELSE) => { [INFO] [stderr] 386 | self.lexer.next(); // eat the 'else' token [INFO] [stderr] 387 | match self.lexer.peek() { [INFO] [stderr] 388 | Some(Token::IF) => Ok(IfStatement::IfElseIf(if_expr, if_compound, Box::new(self.if_statement()?))), [INFO] [stderr] 389 | _ => Ok(IfStatement::IfElse(if_expr, if_compound, self.compound_statement()?)) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser/parser.rs:400:9 [INFO] [stderr] | [INFO] [stderr] 400 | / return match (self.variable()?, self.lexer.next()) { [INFO] [stderr] 401 | | (var, Some(Token::ASSIGN)) => match (self.expr(None)?, self.lexer.next()) { [INFO] [stderr] 402 | | (expr, Some(Token::SEMI)) => Ok(Assignment(var, expr)), [INFO] [stderr] 403 | | (expr, _) => Err(String::from(format!("Assignment Statement Parse Error: Expected {:?} after {:?}", Token::SEMI, expr))) [INFO] [stderr] 404 | | }, [INFO] [stderr] 405 | | (var, _) => Err(String::from(format!("Assignment Statement Parse Error: Expected {:?} after {:?}", Token::ASSIGN, var))) [INFO] [stderr] 406 | | }; [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] 400 | match (self.variable()?, self.lexer.next()) { [INFO] [stderr] 401 | (var, Some(Token::ASSIGN)) => match (self.expr(None)?, self.lexer.next()) { [INFO] [stderr] 402 | (expr, Some(Token::SEMI)) => Ok(Assignment(var, expr)), [INFO] [stderr] 403 | (expr, _) => Err(String::from(format!("Assignment Statement Parse Error: Expected {:?} after {:?}", Token::SEMI, expr))) [INFO] [stderr] 404 | }, [INFO] [stderr] 405 | (var, _) => Err(String::from(format!("Assignment Statement Parse Error: Expected {:?} after {:?}", Token::ASSIGN, var))) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser/parser.rs:413:9 [INFO] [stderr] | [INFO] [stderr] 413 | / return match self.lexer.next() { [INFO] [stderr] 414 | | Some(Token::ID(id)) => Ok(Variable(id)), [INFO] [stderr] 415 | | _ => Err(String::from("Variable Parse Error: Expected id token")) [INFO] [stderr] 416 | | }; [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] 413 | match self.lexer.next() { [INFO] [stderr] 414 | Some(Token::ID(id)) => Ok(Variable(id)), [INFO] [stderr] 415 | _ => Err(String::from("Variable Parse Error: Expected id token")) [INFO] [stderr] 416 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser/parser.rs:428:9 [INFO] [stderr] | [INFO] [stderr] 428 | / return match (self.call_parameters()?, self.lexer.next(), self.lexer.next()) { [INFO] [stderr] 429 | | (call_parameters, Some(Token::RPAREN), Some(Token::SEMI)) => Ok(FunctionCall(function_id, call_parameters)), [INFO] [stderr] 430 | | (call_parameters, _, _) => Err(String::from(format!("Function Call Parse Error: Expected tokens {:?} {:?} after {:?}", Token::RPAREN, Token::SEMI, call_parameters))) [INFO] [stderr] 431 | | }; [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] 428 | match (self.call_parameters()?, self.lexer.next(), self.lexer.next()) { [INFO] [stderr] 429 | (call_parameters, Some(Token::RPAREN), Some(Token::SEMI)) => Ok(FunctionCall(function_id, call_parameters)), [INFO] [stderr] 430 | (call_parameters, _, _) => Err(String::from(format!("Function Call Parse Error: Expected tokens {:?} {:?} after {:?}", Token::RPAREN, Token::SEMI, call_parameters))) [INFO] [stderr] 431 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser/parser.rs:466:9 [INFO] [stderr] | [INFO] [stderr] 466 | return Ok(left); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(left)` [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/parser/parser.rs:478:9 [INFO] [stderr] | [INFO] [stderr] 478 | return Ok(program); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(program)` [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/parser/parselet.rs:30:9 [INFO] [stderr] | [INFO] [stderr] 30 | / return match self { [INFO] [stderr] 31 | | PrefixParselet::Literal => Ok(Expr::Literal(self.literal(parser, token)?)), [INFO] [stderr] 32 | | PrefixParselet::Grouping => Ok(Expr::Group(Box::new(self.grouping(parser, token)?))), [INFO] [stderr] 33 | | PrefixParselet::Variable => Ok(Expr::Variable(self.variable(parser, token)?)), [INFO] [stderr] 34 | | PrefixParselet::UnaryOperator(_) => Ok(Expr::UnaryOp(Box::new(self.unary_op(parser, token)?))) [INFO] [stderr] 35 | | } [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] 30 | match self { [INFO] [stderr] 31 | PrefixParselet::Literal => Ok(Expr::Literal(self.literal(parser, token)?)), [INFO] [stderr] 32 | PrefixParselet::Grouping => Ok(Expr::Group(Box::new(self.grouping(parser, token)?))), [INFO] [stderr] 33 | PrefixParselet::Variable => Ok(Expr::Variable(self.variable(parser, token)?)), [INFO] [stderr] 34 | PrefixParselet::UnaryOperator(_) => Ok(Expr::UnaryOp(Box::new(self.unary_op(parser, token)?))) [INFO] [stderr] 35 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser/parselet.rs:39:9 [INFO] [stderr] | [INFO] [stderr] 39 | / return match self { [INFO] [stderr] 40 | | PrefixParselet::UnaryOperator(precedence) => *precedence, [INFO] [stderr] 41 | | _ => 0 [INFO] [stderr] 42 | | }; [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] 39 | match self { [INFO] [stderr] 40 | PrefixParselet::UnaryOperator(precedence) => *precedence, [INFO] [stderr] 41 | _ => 0 [INFO] [stderr] 42 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser/parselet.rs:46:9 [INFO] [stderr] | [INFO] [stderr] 46 | / return match token { [INFO] [stderr] 47 | | Token::INTEGER_CONST(i) => Ok(Literal::Int(*i)), [INFO] [stderr] 48 | | Token::REAL_CONST(i) => Ok(Literal::Float(*i)), [INFO] [stderr] 49 | | Token::STRING_LITERAL(s) => Ok(Literal::String(s.clone())), [INFO] [stderr] 50 | | Token::BOOLEAN_CONST(b) => Ok(Literal::Boolean(*b)), [INFO] [stderr] 51 | | _ => Err(String::from("Literal Parse Error: Expected integer, real, string, or boolean const")) [INFO] [stderr] 52 | | }; [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] 46 | match token { [INFO] [stderr] 47 | Token::INTEGER_CONST(i) => Ok(Literal::Int(*i)), [INFO] [stderr] 48 | Token::REAL_CONST(i) => Ok(Literal::Float(*i)), [INFO] [stderr] 49 | Token::STRING_LITERAL(s) => Ok(Literal::String(s.clone())), [INFO] [stderr] 50 | Token::BOOLEAN_CONST(b) => Ok(Literal::Boolean(*b)), [INFO] [stderr] 51 | _ => Err(String::from("Literal Parse Error: Expected integer, real, string, or boolean const")) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser/parselet.rs:56:9 [INFO] [stderr] | [INFO] [stderr] 56 | / return match token { [INFO] [stderr] 57 | | Token::LPAREN => match (parser.expr(None)?, parser.lexer.next()) { [INFO] [stderr] 58 | | (expr, Some(Token::RPAREN)) => Ok(GroupedExpr(expr)), [INFO] [stderr] 59 | | (expr, _) => Err(String::from(format!("Grouping Parse Error: Expected token {:?} after {:?}", Token::RPAREN, expr))) [INFO] [stderr] 60 | | }, [INFO] [stderr] 61 | | _ => Err(String::from(format!("Grouping Parse Error: Expected token {:?}", Token::LPAREN))) [INFO] [stderr] 62 | | }; [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] 56 | match token { [INFO] [stderr] 57 | Token::LPAREN => match (parser.expr(None)?, parser.lexer.next()) { [INFO] [stderr] 58 | (expr, Some(Token::RPAREN)) => Ok(GroupedExpr(expr)), [INFO] [stderr] 59 | (expr, _) => Err(String::from(format!("Grouping Parse Error: Expected token {:?} after {:?}", Token::RPAREN, expr))) [INFO] [stderr] 60 | }, [INFO] [stderr] 61 | _ => Err(String::from(format!("Grouping Parse Error: Expected token {:?}", Token::LPAREN))) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser/parselet.rs:66:9 [INFO] [stderr] | [INFO] [stderr] 66 | / return match token { [INFO] [stderr] 67 | | Token::ID(name) => Ok(Variable(name.clone())), [INFO] [stderr] 68 | | _ => Err(String::from("Variable Parse Error: Expected token id")) [INFO] [stderr] 69 | | }; [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] 66 | match token { [INFO] [stderr] 67 | Token::ID(name) => Ok(Variable(name.clone())), [INFO] [stderr] 68 | _ => Err(String::from("Variable Parse Error: Expected token id")) [INFO] [stderr] 69 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser/parselet.rs:80:9 [INFO] [stderr] | [INFO] [stderr] 80 | return Ok(UnaryOpExpr(operator, parser.expr(Some(self.get_precedence()))?)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(UnaryOpExpr(operator, parser.expr(Some(self.get_precedence()))?))` [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/parser/parselet.rs:87:9 [INFO] [stderr] | [INFO] [stderr] 87 | / return match self { [INFO] [stderr] 88 | | InfixParselet::BinaryOperator(_) => Ok(Expr::BinOp(Box::new(self.binary_op(parser, left, token)?))), [INFO] [stderr] 89 | | InfixParselet::FunctionCall(_) => Ok(Expr::FunctionCall(self.function_call(parser, left, token)?)), [INFO] [stderr] 90 | | }; [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] 87 | match self { [INFO] [stderr] 88 | InfixParselet::BinaryOperator(_) => Ok(Expr::BinOp(Box::new(self.binary_op(parser, left, token)?))), [INFO] [stderr] 89 | InfixParselet::FunctionCall(_) => Ok(Expr::FunctionCall(self.function_call(parser, left, token)?)), [INFO] [stderr] 90 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser/parselet.rs:94:9 [INFO] [stderr] | [INFO] [stderr] 94 | / return match self { [INFO] [stderr] 95 | | InfixParselet::BinaryOperator(precedence) [INFO] [stderr] 96 | | | InfixParselet::FunctionCall(precedence) => *precedence [INFO] [stderr] 97 | | }; [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] 94 | match self { [INFO] [stderr] 95 | InfixParselet::BinaryOperator(precedence) [INFO] [stderr] 96 | | InfixParselet::FunctionCall(precedence) => *precedence [INFO] [stderr] 97 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser/parselet.rs:124:9 [INFO] [stderr] | [INFO] [stderr] 124 | return Ok(BinaryOpExpr(left.clone(), operator, parser.expr(Some(self.get_precedence()))?)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(BinaryOpExpr(left.clone(), operator, parser.expr(Some(self.get_precedence()))?))` [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/parser/parselet.rs:128:9 [INFO] [stderr] | [INFO] [stderr] 128 | / return match (left, token) { [INFO] [stderr] 129 | | (Expr::Variable(name), Token::LPAREN) => match (parser.call_parameters()?, parser.lexer.next()) { [INFO] [stderr] 130 | | (parameters, Some(Token::RPAREN)) => Ok(FunctionCall(name.clone(), parameters)), [INFO] [stderr] 131 | | (parameters, _) => Err(String::from(format!("Function Call Parse Error: Expected token {:?} after {:?}", Token::RPAREN, parameters))) [INFO] [stderr] 132 | | }, [INFO] [stderr] 133 | | (_, _) => Err(String::from(format!("Function Call Parse Error: Expected variable token and {:?}", Token::LPAREN))) [INFO] [stderr] 134 | | }; [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] 128 | match (left, token) { [INFO] [stderr] 129 | (Expr::Variable(name), Token::LPAREN) => match (parser.call_parameters()?, parser.lexer.next()) { [INFO] [stderr] 130 | (parameters, Some(Token::RPAREN)) => Ok(FunctionCall(name.clone(), parameters)), [INFO] [stderr] 131 | (parameters, _) => Err(String::from(format!("Function Call Parse Error: Expected token {:?} after {:?}", Token::RPAREN, parameters))) [INFO] [stderr] 132 | }, [INFO] [stderr] 133 | (_, _) => Err(String::from(format!("Function Call Parse Error: Expected variable token and {:?}", Token::LPAREN))) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:48:9 [INFO] [stderr] | [INFO] [stderr] 48 | return SemanticAnalyzer { scope: None }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `SemanticAnalyzer { scope: None }` [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/analyzer/semantic_analyzer.rs:67:9 [INFO] [stderr] | [INFO] [stderr] 67 | return Ok(()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [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/analyzer/semantic_analyzer.rs:71:9 [INFO] [stderr] | [INFO] [stderr] 71 | / return match node { [INFO] [stderr] 72 | | Program(Variable(name), block) => { [INFO] [stderr] 73 | | self.enter_scope(name.to_owned()); [INFO] [stderr] 74 | | self.init_built_ins()?; [INFO] [stderr] ... | [INFO] [stderr] 79 | | } [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_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 71 | match node { [INFO] [stderr] 72 | Program(Variable(name), block) => { [INFO] [stderr] 73 | self.enter_scope(name.to_owned()); [INFO] [stderr] 74 | self.init_built_ins()?; [INFO] [stderr] 75 | self.visit_block(block)?; [INFO] [stderr] 76 | self.leave_scope(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:84:9 [INFO] [stderr] | [INFO] [stderr] 84 | / return match node { [INFO] [stderr] 85 | | Block(declarations, compound) => { [INFO] [stderr] 86 | | self.visit_declarations(declarations)?; [INFO] [stderr] 87 | | let return_type = self.visit_compound(compound)?; [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#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 84 | match node { [INFO] [stderr] 85 | Block(declarations, compound) => { [INFO] [stderr] 86 | self.visit_declarations(declarations)?; [INFO] [stderr] 87 | let return_type = self.visit_compound(compound)?; [INFO] [stderr] 88 | [INFO] [stderr] 89 | Ok(return_type) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:116:9 [INFO] [stderr] | [INFO] [stderr] 116 | return Ok(()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [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/analyzer/semantic_analyzer.rs:120:9 [INFO] [stderr] | [INFO] [stderr] 120 | / return match node { [INFO] [stderr] 121 | | ProcedureDeclaration(name, parameter_list, block) => { [INFO] [stderr] 122 | | let parameters = self.visit_formal_parameter_list(parameter_list)?; [INFO] [stderr] 123 | | [INFO] [stderr] ... | [INFO] [stderr] 135 | | } [INFO] [stderr] 136 | | }; [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] 120 | match node { [INFO] [stderr] 121 | ProcedureDeclaration(name, parameter_list, block) => { [INFO] [stderr] 122 | let parameters = self.visit_formal_parameter_list(parameter_list)?; [INFO] [stderr] 123 | [INFO] [stderr] 124 | self.scope()?.define(Symbol::Callable(CallableSymbol::Procedure(name.to_owned(), parameters.to_vec()))); [INFO] [stderr] 125 | self.enter_scope(name.to_owned()); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:140:9 [INFO] [stderr] | [INFO] [stderr] 140 | / return match node { [INFO] [stderr] 141 | | FunctionDeclaration(name, parameter_list, block, return_type) => { [INFO] [stderr] 142 | | let parameters = self.visit_formal_parameter_list(parameter_list)?; [INFO] [stderr] 143 | | [INFO] [stderr] ... | [INFO] [stderr] 164 | | } [INFO] [stderr] 165 | | }; [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] 140 | match node { [INFO] [stderr] 141 | FunctionDeclaration(name, parameter_list, block, return_type) => { [INFO] [stderr] 142 | let parameters = self.visit_formal_parameter_list(parameter_list)?; [INFO] [stderr] 143 | [INFO] [stderr] 144 | self.scope()?.define(Symbol::Callable(CallableSymbol::Function(name.to_owned(), parameters.to_vec(), return_type.clone()))); [INFO] [stderr] 145 | self.enter_scope(name.to_owned()); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:169:9 [INFO] [stderr] | [INFO] [stderr] 169 | / return match node { [INFO] [stderr] 170 | | FormalParameterList(formal_parameters) => { [INFO] [stderr] 171 | | let mut vars: Vec = vec![]; [INFO] [stderr] 172 | | for parameters in formal_parameters { [INFO] [stderr] ... | [INFO] [stderr] 177 | | } [INFO] [stderr] 178 | | }; [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] 169 | match node { [INFO] [stderr] 170 | FormalParameterList(formal_parameters) => { [INFO] [stderr] 171 | let mut vars: Vec = vec![]; [INFO] [stderr] 172 | for parameters in formal_parameters { [INFO] [stderr] 173 | let mut other_vars = self.visit_formal_parameters(parameters)?; [INFO] [stderr] 174 | vars.append(&mut other_vars); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:194:9 [INFO] [stderr] | [INFO] [stderr] 194 | return Ok(vars.to_vec()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(vars.to_vec())` [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/analyzer/semantic_analyzer.rs:198:9 [INFO] [stderr] | [INFO] [stderr] 198 | / return match node { [INFO] [stderr] 199 | | VariableDeclaration(names, typespec) => { [INFO] [stderr] 200 | | for name in names { [INFO] [stderr] 201 | | match self.scope()?.local_lookup(name) { [INFO] [stderr] ... | [INFO] [stderr] 214 | | } [INFO] [stderr] 215 | | }; [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] 198 | match node { [INFO] [stderr] 199 | VariableDeclaration(names, typespec) => { [INFO] [stderr] 200 | for name in names { [INFO] [stderr] 201 | match self.scope()?.local_lookup(name) { [INFO] [stderr] 202 | Some(_) => Err(String::from(format!("Semantic Analyzer Error: Variable declared more than once: {}", name))), [INFO] [stderr] 203 | None => match typespec { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:219:9 [INFO] [stderr] | [INFO] [stderr] 219 | / return match node { [INFO] [stderr] 220 | | Compound(statements) => { [INFO] [stderr] 221 | | let mut last_type = TypeSpec::UNIT; [INFO] [stderr] 222 | | for statement in statements { [INFO] [stderr] ... | [INFO] [stderr] 227 | | } [INFO] [stderr] 228 | | }; [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] 219 | match node { [INFO] [stderr] 220 | Compound(statements) => { [INFO] [stderr] 221 | let mut last_type = TypeSpec::UNIT; [INFO] [stderr] 222 | for statement in statements { [INFO] [stderr] 223 | last_type = self.visit_statement(statement)?; [INFO] [stderr] 224 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:232:9 [INFO] [stderr] | [INFO] [stderr] 232 | / return match node { [INFO] [stderr] 233 | | Statement::Compound(compound) => self.visit_compound(compound), [INFO] [stderr] 234 | | Statement::Assignment(assignment) => self.visit_assignment(assignment), [INFO] [stderr] 235 | | Statement::IfStatement(if_statement) => self.visit_if_statement(if_statement), [INFO] [stderr] 236 | | Statement::FunctionCall(function_call) => self.visit_function_call(function_call), [INFO] [stderr] 237 | | }; [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] 232 | match node { [INFO] [stderr] 233 | Statement::Compound(compound) => self.visit_compound(compound), [INFO] [stderr] 234 | Statement::Assignment(assignment) => self.visit_assignment(assignment), [INFO] [stderr] 235 | Statement::IfStatement(if_statement) => self.visit_if_statement(if_statement), [INFO] [stderr] 236 | Statement::FunctionCall(function_call) => self.visit_function_call(function_call), [INFO] [stderr] 237 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:241:9 [INFO] [stderr] | [INFO] [stderr] 241 | / return match node { [INFO] [stderr] 242 | | IfStatement::If(expr, compound_statement) => { [INFO] [stderr] 243 | | match self.visit_expr(expr)? { [INFO] [stderr] 244 | | TypeSpec::BOOLEAN => Ok(()), [INFO] [stderr] ... | [INFO] [stderr] 270 | | } [INFO] [stderr] 271 | | } [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] 241 | match node { [INFO] [stderr] 242 | IfStatement::If(expr, compound_statement) => { [INFO] [stderr] 243 | match self.visit_expr(expr)? { [INFO] [stderr] 244 | TypeSpec::BOOLEAN => Ok(()), [INFO] [stderr] 245 | _ => Err(String::from("Semantic Analyzer Error: If statement must use a boolean expression")) [INFO] [stderr] 246 | }?; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:275:9 [INFO] [stderr] | [INFO] [stderr] 275 | / return match node { [INFO] [stderr] 276 | | Assignment(Variable(name), expression) => { [INFO] [stderr] 277 | | let symbol = match self.scope()?.lookup(name) { [INFO] [stderr] 278 | | Some(symbol) => Ok(symbol.clone()), [INFO] [stderr] ... | [INFO] [stderr] 291 | | } [INFO] [stderr] 292 | | }; [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] 275 | match node { [INFO] [stderr] 276 | Assignment(Variable(name), expression) => { [INFO] [stderr] 277 | let symbol = match self.scope()?.lookup(name) { [INFO] [stderr] 278 | Some(symbol) => Ok(symbol.clone()), [INFO] [stderr] 279 | None => Err(String::from(format!("Semantic Analyzer Error: Variable {} was never defined", name))) [INFO] [stderr] 280 | }?; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:296:9 [INFO] [stderr] | [INFO] [stderr] 296 | / return match node { [INFO] [stderr] 297 | | FunctionCall(Variable(name), parameters) => { [INFO] [stderr] 298 | | let callable = match self.scope()?.lookup(name) { [INFO] [stderr] 299 | | Some(Symbol::Callable(callable)) => Ok(callable.clone()), [INFO] [stderr] ... | [INFO] [stderr] 325 | | } [INFO] [stderr] 326 | | } [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] 296 | match node { [INFO] [stderr] 297 | FunctionCall(Variable(name), parameters) => { [INFO] [stderr] 298 | let callable = match self.scope()?.lookup(name) { [INFO] [stderr] 299 | Some(Symbol::Callable(callable)) => Ok(callable.clone()), [INFO] [stderr] 300 | _ => Err(String::from(format!("Semantic Analyzer Error: Unknown callable '{:?}'", name))) [INFO] [stderr] 301 | }?; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:330:9 [INFO] [stderr] | [INFO] [stderr] 330 | / return match node { [INFO] [stderr] 331 | | CallParameters(expressions) => { [INFO] [stderr] 332 | | let mut parameters: Vec = vec![]; [INFO] [stderr] 333 | | [INFO] [stderr] ... | [INFO] [stderr] 339 | | } [INFO] [stderr] 340 | | } [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] 330 | match node { [INFO] [stderr] 331 | CallParameters(expressions) => { [INFO] [stderr] 332 | let mut parameters: Vec = vec![]; [INFO] [stderr] 333 | [INFO] [stderr] 334 | for expr in expressions.iter() { [INFO] [stderr] 335 | parameters.push(self.visit_expr(expr)?); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:344:9 [INFO] [stderr] | [INFO] [stderr] 344 | / return match node { [INFO] [stderr] 345 | | Expr::UnaryOp(unaryop_expr) => self.visit_unaryop(unaryop_expr), [INFO] [stderr] 346 | | Expr::BinOp(binop_expr) => self.visit_binop(binop_expr), [INFO] [stderr] 347 | | Expr::Group(group_expr) => self.visit_group(group_expr), [INFO] [stderr] ... | [INFO] [stderr] 350 | | Expr::FunctionCall(function_call) => self.visit_function_call(function_call) [INFO] [stderr] 351 | | }; [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] 344 | match node { [INFO] [stderr] 345 | Expr::UnaryOp(unaryop_expr) => self.visit_unaryop(unaryop_expr), [INFO] [stderr] 346 | Expr::BinOp(binop_expr) => self.visit_binop(binop_expr), [INFO] [stderr] 347 | Expr::Group(group_expr) => self.visit_group(group_expr), [INFO] [stderr] 348 | Expr::Literal(literal) => self.visit_literal(literal), [INFO] [stderr] 349 | Expr::Variable(variable) => self.visit_variable(variable), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:355:9 [INFO] [stderr] | [INFO] [stderr] 355 | / return match expr { [INFO] [stderr] 356 | | UnaryOpExpr(operator, unary_expr) => [INFO] [stderr] 357 | | match (operator, self.visit_expr(unary_expr)?) { [INFO] [stderr] 358 | | (UnaryOperator::Plus, TypeSpec::INTEGER) => Ok(TypeSpec::INTEGER), [INFO] [stderr] ... | [INFO] [stderr] 366 | | } [INFO] [stderr] 367 | | }; [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] 355 | match expr { [INFO] [stderr] 356 | UnaryOpExpr(operator, unary_expr) => [INFO] [stderr] 357 | match (operator, self.visit_expr(unary_expr)?) { [INFO] [stderr] 358 | (UnaryOperator::Plus, TypeSpec::INTEGER) => Ok(TypeSpec::INTEGER), [INFO] [stderr] 359 | (UnaryOperator::Minus, TypeSpec::INTEGER) => Ok(TypeSpec::INTEGER), [INFO] [stderr] 360 | (UnaryOperator::Plus, TypeSpec::REAL) => Ok(TypeSpec::REAL), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:371:9 [INFO] [stderr] | [INFO] [stderr] 371 | / return match expr { [INFO] [stderr] 372 | | BinaryOpExpr(left, operator, right) => [INFO] [stderr] 373 | | match (self.visit_expr(left)?, operator, self.visit_expr(right)?) { [INFO] [stderr] 374 | | (TypeSpec::INTEGER, BinaryOperator::Plus, TypeSpec::INTEGER) => Ok(TypeSpec::INTEGER), [INFO] [stderr] ... | [INFO] [stderr] 405 | | } [INFO] [stderr] 406 | | }; [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] 371 | match expr { [INFO] [stderr] 372 | BinaryOpExpr(left, operator, right) => [INFO] [stderr] 373 | match (self.visit_expr(left)?, operator, self.visit_expr(right)?) { [INFO] [stderr] 374 | (TypeSpec::INTEGER, BinaryOperator::Plus, TypeSpec::INTEGER) => Ok(TypeSpec::INTEGER), [INFO] [stderr] 375 | (TypeSpec::INTEGER, BinaryOperator::Minus, TypeSpec::INTEGER) => Ok(TypeSpec::INTEGER), [INFO] [stderr] 376 | (TypeSpec::INTEGER, BinaryOperator::Multiply, TypeSpec::INTEGER) => Ok(TypeSpec::INTEGER), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:410:9 [INFO] [stderr] | [INFO] [stderr] 410 | / return match expr { [INFO] [stderr] 411 | | GroupedExpr(grouped_expr) => self.visit_expr(grouped_expr) [INFO] [stderr] 412 | | }; [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] 410 | match expr { [INFO] [stderr] 411 | GroupedExpr(grouped_expr) => self.visit_expr(grouped_expr) [INFO] [stderr] 412 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:416:9 [INFO] [stderr] | [INFO] [stderr] 416 | / return match expr { [INFO] [stderr] 417 | | Literal::Int(_) => Ok(TypeSpec::INTEGER), [INFO] [stderr] 418 | | Literal::Float(_) => Ok(TypeSpec::REAL), [INFO] [stderr] 419 | | Literal::String(_) => Ok(TypeSpec::STRING), [INFO] [stderr] 420 | | Literal::Boolean(_) => Ok(TypeSpec::BOOLEAN) [INFO] [stderr] 421 | | } [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] 416 | match expr { [INFO] [stderr] 417 | Literal::Int(_) => Ok(TypeSpec::INTEGER), [INFO] [stderr] 418 | Literal::Float(_) => Ok(TypeSpec::REAL), [INFO] [stderr] 419 | Literal::String(_) => Ok(TypeSpec::STRING), [INFO] [stderr] 420 | Literal::Boolean(_) => Ok(TypeSpec::BOOLEAN) [INFO] [stderr] 421 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:425:9 [INFO] [stderr] | [INFO] [stderr] 425 | / return match node { [INFO] [stderr] 426 | | Variable(name) => { [INFO] [stderr] 427 | | match self.scope()?.lookup(name) { [INFO] [stderr] 428 | | Some(symbol) => match symbol { [INFO] [stderr] ... | [INFO] [stderr] 437 | | } [INFO] [stderr] 438 | | }; [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] 425 | match node { [INFO] [stderr] 426 | Variable(name) => { [INFO] [stderr] 427 | match self.scope()?.lookup(name) { [INFO] [stderr] 428 | Some(symbol) => match symbol { [INFO] [stderr] 429 | Symbol::Var(VarSymbol::INTEGER(_)) => Ok(TypeSpec::INTEGER), [INFO] [stderr] 430 | Symbol::Var(VarSymbol::REAL(_)) => Ok(TypeSpec::REAL), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:459:9 [INFO] [stderr] | [INFO] [stderr] 459 | / return match self.scope { [INFO] [stderr] 460 | | Some(ref mut scope) => Ok(scope), [INFO] [stderr] 461 | | None => Err(String::from("Internal Semantic Analyzer Error: Unknown Scope")) [INFO] [stderr] 462 | | }; [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] 459 | match self.scope { [INFO] [stderr] 460 | Some(ref mut scope) => Ok(scope), [INFO] [stderr] 461 | None => Err(String::from("Internal Semantic Analyzer Error: Unknown Scope")) [INFO] [stderr] 462 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/analyzer/symbol_table.rs:15:9 [INFO] [stderr] | [INFO] [stderr] 15 | return SymbolTable { name, symbols: HashMap::new(), enclosing_scope: None } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `SymbolTable { name, symbols: HashMap::new(), enclosing_scope: None }` [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/analyzer/symbol_table.rs:19:9 [INFO] [stderr] | [INFO] [stderr] 19 | return SymbolTable { name, symbols: HashMap::new(), enclosing_scope: Some(Box::new(enclosing_scope))} [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `SymbolTable { name, symbols: HashMap::new(), enclosing_scope: Some(Box::new(enclosing_scope))}` [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/analyzer/symbol_table.rs:23:9 [INFO] [stderr] | [INFO] [stderr] 23 | return self.name.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.name.clone()` [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/analyzer/symbol_table.rs:27:9 [INFO] [stderr] | [INFO] [stderr] 27 | / return match self.enclosing_scope { [INFO] [stderr] 28 | | Some(scope) => Some(*scope), [INFO] [stderr] 29 | | None => None [INFO] [stderr] 30 | | }; [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] 27 | match self.enclosing_scope { [INFO] [stderr] 28 | Some(scope) => Some(*scope), [INFO] [stderr] 29 | None => None [INFO] [stderr] 30 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/analyzer/symbol_table.rs:50:9 [INFO] [stderr] | [INFO] [stderr] 50 | return self.symbols.get(name); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.symbols.get(name)` [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/analyzer/symbol.rs:27:9 [INFO] [stderr] | [INFO] [stderr] 27 | / return match self { [INFO] [stderr] 28 | | Symbol::Var(VarSymbol::INTEGER(name)) [INFO] [stderr] 29 | | | Symbol::Var(VarSymbol::REAL(name)) [INFO] [stderr] 30 | | | Symbol::Var(VarSymbol::STRING(name)) [INFO] [stderr] ... | [INFO] [stderr] 33 | | | Symbol::Callable(CallableSymbol::Function(name, _, _)) => name.clone() [INFO] [stderr] 34 | | }; [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] 27 | match self { [INFO] [stderr] 28 | Symbol::Var(VarSymbol::INTEGER(name)) [INFO] [stderr] 29 | | Symbol::Var(VarSymbol::REAL(name)) [INFO] [stderr] 30 | | Symbol::Var(VarSymbol::STRING(name)) [INFO] [stderr] 31 | | Symbol::Var(VarSymbol::BOOLEAN(name)) [INFO] [stderr] 32 | | Symbol::Callable(CallableSymbol::Procedure(name, _)) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/analyzer/built_ins.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | return Symbol::Callable(CallableSymbol::Procedure(String::from("write"), vec![VarSymbol::STRING(String::from("text"))])); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Symbol::Callable(CallableSymbol::Procedure(String::from("write"), vec![VarSymbol::STRING(String::from("text"))]))` [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/analyzer/built_ins.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | return Symbol::Callable(CallableSymbol::Procedure(String::from("writeln"), vec![VarSymbol::STRING(String::from("text"))])); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Symbol::Callable(CallableSymbol::Procedure(String::from("writeln"), vec![VarSymbol::STRING(String::from("text"))]))` [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/analyzer/built_ins.rs:13:5 [INFO] [stderr] | [INFO] [stderr] 13 | return Symbol::Callable(CallableSymbol::Function(String::from("readln"), vec![], TypeSpec::STRING)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Symbol::Callable(CallableSymbol::Function(String::from("readln"), vec![], TypeSpec::STRING))` [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/analyzer/built_ins.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | return Symbol::Callable(CallableSymbol::Function(String::from("IntToString"), vec![VarSymbol::INTEGER(String::from("value"))], TypeSpec::STRING)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Symbol::Callable(CallableSymbol::Function(String::from("IntToString"), vec![VarSymbol::INTEGER(String::from("value"))], TypeSpec::STRING))` [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/analyzer/built_ins.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | return Symbol::Callable(CallableSymbol::Function(String::from("RealToString"), vec![VarSymbol::REAL(String::from("value"))], TypeSpec::STRING)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Symbol::Callable(CallableSymbol::Function(String::from("RealToString"), vec![VarSymbol::REAL(String::from("value"))], TypeSpec::STRING))` [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/analyzer/built_ins.rs:25:5 [INFO] [stderr] | [INFO] [stderr] 25 | return Symbol::Callable(CallableSymbol::Function(String::from("StringToInt"), vec![VarSymbol::STRING(String::from("text"))], TypeSpec::INTEGER)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Symbol::Callable(CallableSymbol::Function(String::from("StringToInt"), vec![VarSymbol::STRING(String::from("text"))], TypeSpec::INTEGER))` [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/analyzer/built_ins.rs:29:5 [INFO] [stderr] | [INFO] [stderr] 29 | return Symbol::Callable(CallableSymbol::Function(String::from("StringToReal"), vec![VarSymbol::STRING(String::from("text"))], TypeSpec::REAL)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Symbol::Callable(CallableSymbol::Function(String::from("StringToReal"), vec![VarSymbol::STRING(String::from("text"))], TypeSpec::REAL))` [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: module has the same name as its containing module [INFO] [stderr] --> src/interpreter/mod.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | mod interpreter; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/interpreter.rs:45:9 [INFO] [stderr] | [INFO] [stderr] 45 | / return Interpreter { [INFO] [stderr] 46 | | scope: None, [INFO] [stderr] 47 | | }; [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] 45 | Interpreter { [INFO] [stderr] 46 | scope: None, [INFO] [stderr] 47 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/interpreter.rs:66:9 [INFO] [stderr] | [INFO] [stderr] 66 | return Ok(()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [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/interpreter/interpreter.rs:70:9 [INFO] [stderr] | [INFO] [stderr] 70 | / return match node { [INFO] [stderr] 71 | | Program(Variable(name), block) => { [INFO] [stderr] 72 | | self.enter_scope(name.to_owned()); [INFO] [stderr] 73 | | self.init_built_ins()?; [INFO] [stderr] ... | [INFO] [stderr] 78 | | } [INFO] [stderr] 79 | | }; [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] 70 | match node { [INFO] [stderr] 71 | Program(Variable(name), block) => { [INFO] [stderr] 72 | self.enter_scope(name.to_owned()); [INFO] [stderr] 73 | self.init_built_ins()?; [INFO] [stderr] 74 | self.visit_block(block)?; [INFO] [stderr] 75 | self.leave_scope(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/interpreter.rs:83:9 [INFO] [stderr] | [INFO] [stderr] 83 | / return match node { [INFO] [stderr] 84 | | Block(declarations, compound) => { [INFO] [stderr] 85 | | self.visit_declarations(declarations)?; [INFO] [stderr] 86 | | let result = self.visit_compound(compound)?; [INFO] [stderr] ... | [INFO] [stderr] 89 | | } [INFO] [stderr] 90 | | }; [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] 83 | match node { [INFO] [stderr] 84 | Block(declarations, compound) => { [INFO] [stderr] 85 | self.visit_declarations(declarations)?; [INFO] [stderr] 86 | let result = self.visit_compound(compound)?; [INFO] [stderr] 87 | [INFO] [stderr] 88 | Ok(result) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/interpreter.rs:109:9 [INFO] [stderr] | [INFO] [stderr] 109 | return Ok(()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [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/interpreter/interpreter.rs:113:9 [INFO] [stderr] | [INFO] [stderr] 113 | / return match node { [INFO] [stderr] 114 | | ProcedureDeclaration(name, parameter_list, block) => { [INFO] [stderr] 115 | | let parameters = self.visit_formal_parameter_list(parameter_list)?; [INFO] [stderr] 116 | | [INFO] [stderr] ... | [INFO] [stderr] 120 | | } [INFO] [stderr] 121 | | }; [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] 113 | match node { [INFO] [stderr] 114 | ProcedureDeclaration(name, parameter_list, block) => { [INFO] [stderr] 115 | let parameters = self.visit_formal_parameter_list(parameter_list)?; [INFO] [stderr] 116 | [INFO] [stderr] 117 | self.scope()?.set(name.to_owned(), Object::Procedure(name.to_owned(), parameters, block.clone())); [INFO] [stderr] 118 | [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/interpreter.rs:125:9 [INFO] [stderr] | [INFO] [stderr] 125 | / return match node { [INFO] [stderr] 126 | | FunctionDeclaration(name, parameter_list, block, return_type) => { [INFO] [stderr] 127 | | let parameters = self.visit_formal_parameter_list(parameter_list)?; [INFO] [stderr] 128 | | [INFO] [stderr] ... | [INFO] [stderr] 132 | | } [INFO] [stderr] 133 | | }; [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] 125 | match node { [INFO] [stderr] 126 | FunctionDeclaration(name, parameter_list, block, return_type) => { [INFO] [stderr] 127 | let parameters = self.visit_formal_parameter_list(parameter_list)?; [INFO] [stderr] 128 | [INFO] [stderr] 129 | self.scope()?.set(name.to_owned(), Object::Function(name.to_owned(), parameters, block.clone(), return_type.clone())); [INFO] [stderr] 130 | [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/interpreter.rs:137:9 [INFO] [stderr] | [INFO] [stderr] 137 | / return match node { [INFO] [stderr] 138 | | FormalParameterList(formal_parameters) => { [INFO] [stderr] 139 | | let mut var_names: Vec = vec![]; [INFO] [stderr] 140 | | for parameters in formal_parameters { [INFO] [stderr] ... | [INFO] [stderr] 145 | | } [INFO] [stderr] 146 | | }; [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] 137 | match node { [INFO] [stderr] 138 | FormalParameterList(formal_parameters) => { [INFO] [stderr] 139 | let mut var_names: Vec = vec![]; [INFO] [stderr] 140 | for parameters in formal_parameters { [INFO] [stderr] 141 | let mut other_var_names = self.visit_formal_parameters(parameters)?; [INFO] [stderr] 142 | var_names.append(&mut other_var_names); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/interpreter.rs:150:9 [INFO] [stderr] | [INFO] [stderr] 150 | / return match node { [INFO] [stderr] 151 | | FormalParameters(names, _) => Ok(names.to_vec()) [INFO] [stderr] 152 | | }; [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] 150 | match node { [INFO] [stderr] 151 | FormalParameters(names, _) => Ok(names.to_vec()) [INFO] [stderr] 152 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/interpreter.rs:156:9 [INFO] [stderr] | [INFO] [stderr] 156 | / return match node { [INFO] [stderr] 157 | | Compound(statements) => { [INFO] [stderr] 158 | | let mut result = Object::Unit; [INFO] [stderr] 159 | | for statement in statements { [INFO] [stderr] ... | [INFO] [stderr] 164 | | } [INFO] [stderr] 165 | | }; [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] 156 | match node { [INFO] [stderr] 157 | Compound(statements) => { [INFO] [stderr] 158 | let mut result = Object::Unit; [INFO] [stderr] 159 | for statement in statements { [INFO] [stderr] 160 | result = self.visit_statement(statement)?; [INFO] [stderr] 161 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/interpreter.rs:169:9 [INFO] [stderr] | [INFO] [stderr] 169 | / return match node { [INFO] [stderr] 170 | | Statement::Compound(compound) => self.visit_compound(compound), [INFO] [stderr] 171 | | Statement::Assignment(assignment) => self.visit_assignment(assignment), [INFO] [stderr] 172 | | Statement::IfStatement(if_statement) => self.visit_if_statement(if_statement), [INFO] [stderr] 173 | | Statement::FunctionCall(function_call) => self.visit_function_call(function_call), [INFO] [stderr] 174 | | }; [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] 169 | match node { [INFO] [stderr] 170 | Statement::Compound(compound) => self.visit_compound(compound), [INFO] [stderr] 171 | Statement::Assignment(assignment) => self.visit_assignment(assignment), [INFO] [stderr] 172 | Statement::IfStatement(if_statement) => self.visit_if_statement(if_statement), [INFO] [stderr] 173 | Statement::FunctionCall(function_call) => self.visit_function_call(function_call), [INFO] [stderr] 174 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/interpreter.rs:178:9 [INFO] [stderr] | [INFO] [stderr] 178 | / return match node { [INFO] [stderr] 179 | | IfStatement::If(expr, compound_statement) => match self.visit_expr(expr)? { [INFO] [stderr] 180 | | Object::Primitive(Primitive::Boolean(true)) => { [INFO] [stderr] 181 | | self.visit_compound(compound_statement)?; [INFO] [stderr] ... | [INFO] [stderr] 205 | | }, [INFO] [stderr] 206 | | } [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] 178 | match node { [INFO] [stderr] 179 | IfStatement::If(expr, compound_statement) => match self.visit_expr(expr)? { [INFO] [stderr] 180 | Object::Primitive(Primitive::Boolean(true)) => { [INFO] [stderr] 181 | self.visit_compound(compound_statement)?; [INFO] [stderr] 182 | Ok(Object::Unit) [INFO] [stderr] 183 | }, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/interpreter.rs:210:9 [INFO] [stderr] | [INFO] [stderr] 210 | / return match node { [INFO] [stderr] 211 | | Assignment(Variable(name), expression) => { [INFO] [stderr] 212 | | let val = self.visit_expr(expression)?; [INFO] [stderr] 213 | | self.scope()?.set(name.clone(), val.clone()); [INFO] [stderr] ... | [INFO] [stderr] 216 | | } [INFO] [stderr] 217 | | }; [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] 210 | match node { [INFO] [stderr] 211 | Assignment(Variable(name), expression) => { [INFO] [stderr] 212 | let val = self.visit_expr(expression)?; [INFO] [stderr] 213 | self.scope()?.set(name.clone(), val.clone()); [INFO] [stderr] 214 | [INFO] [stderr] 215 | Ok(val) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/interpreter.rs:221:9 [INFO] [stderr] | [INFO] [stderr] 221 | / return match node { [INFO] [stderr] 222 | | FunctionCall(Variable(function_name), CallParameters(given_parameters)) => { [INFO] [stderr] 223 | | let callable = match self.scope()?.get(function_name) { [INFO] [stderr] 224 | | Some(Object::Function(name, declared_params, block, return_type)) => Ok(Object::Function(name.clone(), declared_params.to_vec(), block.clone(), return_type.clone())), [INFO] [stderr] ... | [INFO] [stderr] 274 | | } [INFO] [stderr] 275 | | }; [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] 221 | match node { [INFO] [stderr] 222 | FunctionCall(Variable(function_name), CallParameters(given_parameters)) => { [INFO] [stderr] 223 | let callable = match self.scope()?.get(function_name) { [INFO] [stderr] 224 | Some(Object::Function(name, declared_params, block, return_type)) => Ok(Object::Function(name.clone(), declared_params.to_vec(), block.clone(), return_type.clone())), [INFO] [stderr] 225 | Some(Object::Procedure(name, declared_params, block)) => Ok(Object::Procedure(name.clone(), declared_params.to_vec(), block.clone())), [INFO] [stderr] 226 | Some(Object::BuiltInFunction(func)) => Ok(Object::BuiltInFunction(func.clone())), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/interpreter.rs:279:9 [INFO] [stderr] | [INFO] [stderr] 279 | / return match node { [INFO] [stderr] 280 | | Expr::UnaryOp(unaryop_expr) => self.visit_unaryop(unaryop_expr), [INFO] [stderr] 281 | | Expr::BinOp(binop_expr) => self.visit_binop(binop_expr), [INFO] [stderr] 282 | | Expr::Group(group_expr) => self.visit_group(group_expr), [INFO] [stderr] ... | [INFO] [stderr] 285 | | Expr::FunctionCall(function_call) => self.visit_function_call(function_call) [INFO] [stderr] 286 | | }; [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] 279 | match node { [INFO] [stderr] 280 | Expr::UnaryOp(unaryop_expr) => self.visit_unaryop(unaryop_expr), [INFO] [stderr] 281 | Expr::BinOp(binop_expr) => self.visit_binop(binop_expr), [INFO] [stderr] 282 | Expr::Group(group_expr) => self.visit_group(group_expr), [INFO] [stderr] 283 | Expr::Literal(literal) => self.visit_literal(literal), [INFO] [stderr] 284 | Expr::Variable(variable) => self.visit_variable(variable), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/interpreter.rs:290:9 [INFO] [stderr] | [INFO] [stderr] 290 | / return match node { [INFO] [stderr] 291 | | UnaryOpExpr(UnaryOperator::Plus, expr) => Ok(self.visit_expr(expr)?.unary_plus()?), [INFO] [stderr] 292 | | UnaryOpExpr(UnaryOperator::Minus, expr) => Ok(self.visit_expr(expr)?.unary_minus()?), [INFO] [stderr] 293 | | UnaryOpExpr(UnaryOperator::Not, expr) => Ok(self.visit_expr(expr)?.negate()?) [INFO] [stderr] 294 | | }; [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] 290 | match node { [INFO] [stderr] 291 | UnaryOpExpr(UnaryOperator::Plus, expr) => Ok(self.visit_expr(expr)?.unary_plus()?), [INFO] [stderr] 292 | UnaryOpExpr(UnaryOperator::Minus, expr) => Ok(self.visit_expr(expr)?.unary_minus()?), [INFO] [stderr] 293 | UnaryOpExpr(UnaryOperator::Not, expr) => Ok(self.visit_expr(expr)?.negate()?) [INFO] [stderr] 294 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/interpreter.rs:298:9 [INFO] [stderr] | [INFO] [stderr] 298 | / return match node { [INFO] [stderr] 299 | | BinaryOpExpr(left, BinaryOperator::Plus, right) => Ok(self.visit_expr(left)?.add(&self.visit_expr(right)?)?), [INFO] [stderr] 300 | | BinaryOpExpr(left, BinaryOperator::Minus, right) => Ok(self.visit_expr(left)?.subtract(&self.visit_expr(right)?)?), [INFO] [stderr] 301 | | BinaryOpExpr(left, BinaryOperator::Multiply, right) => Ok(self.visit_expr(left)?.multiply(&self.visit_expr(right)?)?), [INFO] [stderr] ... | [INFO] [stderr] 311 | | BinaryOpExpr(left, BinaryOperator::NotEqual, right) => Ok(self.visit_expr(left)?.not_equal(&self.visit_expr(right)?)?), [INFO] [stderr] 312 | | }; [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] 298 | match node { [INFO] [stderr] 299 | BinaryOpExpr(left, BinaryOperator::Plus, right) => Ok(self.visit_expr(left)?.add(&self.visit_expr(right)?)?), [INFO] [stderr] 300 | BinaryOpExpr(left, BinaryOperator::Minus, right) => Ok(self.visit_expr(left)?.subtract(&self.visit_expr(right)?)?), [INFO] [stderr] 301 | BinaryOpExpr(left, BinaryOperator::Multiply, right) => Ok(self.visit_expr(left)?.multiply(&self.visit_expr(right)?)?), [INFO] [stderr] 302 | BinaryOpExpr(left, BinaryOperator::FloatDivide, right) => Ok(self.visit_expr(left)?.float_divide(&self.visit_expr(right)?)?), [INFO] [stderr] 303 | BinaryOpExpr(left, BinaryOperator::IntegerDivide, right) => Ok(self.visit_expr(left)?.integer_divide(&self.visit_expr(right)?)?), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/interpreter.rs:316:9 [INFO] [stderr] | [INFO] [stderr] 316 | / return match node { [INFO] [stderr] 317 | | GroupedExpr(expr) => self.visit_expr(expr) [INFO] [stderr] 318 | | }; [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] 316 | match node { [INFO] [stderr] 317 | GroupedExpr(expr) => self.visit_expr(expr) [INFO] [stderr] 318 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/interpreter.rs:322:9 [INFO] [stderr] | [INFO] [stderr] 322 | / return match node { [INFO] [stderr] 323 | | Literal::Int(i) => Ok(Object::Primitive(Primitive::Integer(*i))), [INFO] [stderr] 324 | | Literal::Float(f) => Ok(Object::Primitive(Primitive::Float(*f))), [INFO] [stderr] 325 | | Literal::String(s) => Ok(Object::Primitive(Primitive::String(s.clone()))), [INFO] [stderr] 326 | | Literal::Boolean(b) => Ok(Object::Primitive(Primitive::Boolean(*b))) [INFO] [stderr] 327 | | }; [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] 322 | match node { [INFO] [stderr] 323 | Literal::Int(i) => Ok(Object::Primitive(Primitive::Integer(*i))), [INFO] [stderr] 324 | Literal::Float(f) => Ok(Object::Primitive(Primitive::Float(*f))), [INFO] [stderr] 325 | Literal::String(s) => Ok(Object::Primitive(Primitive::String(s.clone()))), [INFO] [stderr] 326 | Literal::Boolean(b) => Ok(Object::Primitive(Primitive::Boolean(*b))) [INFO] [stderr] 327 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/interpreter.rs:331:9 [INFO] [stderr] | [INFO] [stderr] 331 | / return match node { [INFO] [stderr] 332 | | Variable(name) => { [INFO] [stderr] 333 | | match self.scope()?.get(name) { [INFO] [stderr] 334 | | Some(object) => Ok(object.clone()), [INFO] [stderr] ... | [INFO] [stderr] 337 | | } [INFO] [stderr] 338 | | }; [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] 331 | match node { [INFO] [stderr] 332 | Variable(name) => { [INFO] [stderr] 333 | match self.scope()?.get(name) { [INFO] [stderr] 334 | Some(object) => Ok(object.clone()), [INFO] [stderr] 335 | None => Err(String::from(format!("Internal Interpreter Error: Unknown variable '{}'", name))) [INFO] [stderr] 336 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/interpreter.rs:359:9 [INFO] [stderr] | [INFO] [stderr] 359 | / return match self.scope { [INFO] [stderr] 360 | | Some(ref mut scope) => Ok(scope), [INFO] [stderr] 361 | | None => Err(String::from("Internal Interpreter Error: Unknown Scope")) [INFO] [stderr] 362 | | }; [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] 359 | match self.scope { [INFO] [stderr] 360 | Some(ref mut scope) => Ok(scope), [INFO] [stderr] 361 | None => Err(String::from("Internal Interpreter Error: Unknown Scope")) [INFO] [stderr] 362 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/scope.rs:15:9 [INFO] [stderr] | [INFO] [stderr] 15 | return Scope { name, variables: HashMap::new(), enclosing_scope: None } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Scope { name, variables: HashMap::new(), enclosing_scope: None }` [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/interpreter/scope.rs:19:9 [INFO] [stderr] | [INFO] [stderr] 19 | return Scope { name, variables: HashMap::new(), enclosing_scope: Some(Box::new(enclosing_scope))} [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Scope { name, variables: HashMap::new(), enclosing_scope: Some(Box::new(enclosing_scope))}` [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/interpreter/scope.rs:23:9 [INFO] [stderr] | [INFO] [stderr] 23 | return self.name.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.name.clone()` [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/interpreter/scope.rs:27:9 [INFO] [stderr] | [INFO] [stderr] 27 | / return match self.enclosing_scope { [INFO] [stderr] 28 | | Some(scope) => Some(*scope), [INFO] [stderr] 29 | | None => None [INFO] [stderr] 30 | | }; [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] 27 | match self.enclosing_scope { [INFO] [stderr] 28 | Some(scope) => Some(*scope), [INFO] [stderr] 29 | None => None [INFO] [stderr] 30 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/object.rs:36:9 [INFO] [stderr] | [INFO] [stderr] 36 | / return match (self, other) { [INFO] [stderr] 37 | | (Object::Primitive(Primitive::Integer(left)), Object::Primitive(Primitive::Integer(right))) [INFO] [stderr] 38 | | => Ok(Object::Primitive(Primitive::Integer(left + right))), [INFO] [stderr] 39 | | (Object::Primitive(Primitive::Float(left)), Object::Primitive(Primitive::Float(right))) [INFO] [stderr] ... | [INFO] [stderr] 43 | | _ => Err(String::from("Internal Interpreter Error: Attempted to add incompatible types")) [INFO] [stderr] 44 | | }; [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] 36 | match (self, other) { [INFO] [stderr] 37 | (Object::Primitive(Primitive::Integer(left)), Object::Primitive(Primitive::Integer(right))) [INFO] [stderr] 38 | => Ok(Object::Primitive(Primitive::Integer(left + right))), [INFO] [stderr] 39 | (Object::Primitive(Primitive::Float(left)), Object::Primitive(Primitive::Float(right))) [INFO] [stderr] 40 | => Ok(Object::Primitive(Primitive::Float(left + right))), [INFO] [stderr] 41 | (Object::Primitive(Primitive::String(left)), Object::Primitive(Primitive::String(right))) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/object.rs:48:9 [INFO] [stderr] | [INFO] [stderr] 48 | / return match (self, other) { [INFO] [stderr] 49 | | (Object::Primitive(Primitive::Integer(left)), Object::Primitive(Primitive::Integer(right))) [INFO] [stderr] 50 | | => Ok(Object::Primitive(Primitive::Integer(left - right))), [INFO] [stderr] 51 | | (Object::Primitive(Primitive::Float(left)), Object::Primitive(Primitive::Float(right))) [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#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 48 | match (self, other) { [INFO] [stderr] 49 | (Object::Primitive(Primitive::Integer(left)), Object::Primitive(Primitive::Integer(right))) [INFO] [stderr] 50 | => Ok(Object::Primitive(Primitive::Integer(left - right))), [INFO] [stderr] 51 | (Object::Primitive(Primitive::Float(left)), Object::Primitive(Primitive::Float(right))) [INFO] [stderr] 52 | => Ok(Object::Primitive(Primitive::Float(left - right))), [INFO] [stderr] 53 | _ => Err(String::from("Interpreter Interpreter Error: Attempted to subtract incompatible types")) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/object.rs:59:9 [INFO] [stderr] | [INFO] [stderr] 59 | / return match (self, other) { [INFO] [stderr] 60 | | (Object::Primitive(Primitive::Integer(left)), Object::Primitive(Primitive::Integer(right))) [INFO] [stderr] 61 | | => Ok(Object::Primitive(Primitive::Integer(left * right))), [INFO] [stderr] 62 | | (Object::Primitive(Primitive::Float(left)), Object::Primitive(Primitive::Float(right))) [INFO] [stderr] ... | [INFO] [stderr] 65 | | [INFO] [stderr] 66 | | }; [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] 59 | match (self, other) { [INFO] [stderr] 60 | (Object::Primitive(Primitive::Integer(left)), Object::Primitive(Primitive::Integer(right))) [INFO] [stderr] 61 | => Ok(Object::Primitive(Primitive::Integer(left * right))), [INFO] [stderr] 62 | (Object::Primitive(Primitive::Float(left)), Object::Primitive(Primitive::Float(right))) [INFO] [stderr] 63 | => Ok(Object::Primitive(Primitive::Float(left * right))), [INFO] [stderr] 64 | _ => Err(String::from("Internal Interpreter Error: Attempted to multiply incompatible types")) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/object.rs:70:9 [INFO] [stderr] | [INFO] [stderr] 70 | / return match (self, other) { [INFO] [stderr] 71 | | (Object::Primitive(Primitive::Integer(left)), Object::Primitive(Primitive::Integer(right))) [INFO] [stderr] 72 | | => Ok(Object::Primitive(Primitive::Integer(left / right))), [INFO] [stderr] 73 | | _ => Err(String::from("Internal Interpreter Error: Attempted to integer divide incompatible types")) [INFO] [stderr] 74 | | [INFO] [stderr] 75 | | }; [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] 70 | match (self, other) { [INFO] [stderr] 71 | (Object::Primitive(Primitive::Integer(left)), Object::Primitive(Primitive::Integer(right))) [INFO] [stderr] 72 | => Ok(Object::Primitive(Primitive::Integer(left / right))), [INFO] [stderr] 73 | _ => Err(String::from("Internal Interpreter Error: Attempted to integer divide incompatible types")) [INFO] [stderr] 74 | [INFO] [stderr] 75 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/object.rs:79:9 [INFO] [stderr] | [INFO] [stderr] 79 | / return match (self, other) { [INFO] [stderr] 80 | | (Object::Primitive(Primitive::Float(left)), Object::Primitive(Primitive::Float(right))) [INFO] [stderr] 81 | | => Ok(Object::Primitive(Primitive::Float(left / right))), [INFO] [stderr] 82 | | _ => Err(String::from("Internal Interpreter Error: Attempted to float divide incompatible types")) [INFO] [stderr] 83 | | [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_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 79 | match (self, other) { [INFO] [stderr] 80 | (Object::Primitive(Primitive::Float(left)), Object::Primitive(Primitive::Float(right))) [INFO] [stderr] 81 | => Ok(Object::Primitive(Primitive::Float(left / right))), [INFO] [stderr] 82 | _ => Err(String::from("Internal Interpreter Error: Attempted to float divide incompatible types")) [INFO] [stderr] 83 | [INFO] [stderr] 84 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/object.rs:88:9 [INFO] [stderr] | [INFO] [stderr] 88 | / return match self { [INFO] [stderr] 89 | | Object::Primitive(Primitive::Integer(i)) => Ok(Object::Primitive(Primitive::Integer(*i))), [INFO] [stderr] 90 | | Object::Primitive(Primitive::Float(i)) => Ok(Object::Primitive(Primitive::Float(*i))), [INFO] [stderr] 91 | | _ => Err(String::from("Internal Interpreter Error: Attempted to unary add incompatible type")) [INFO] [stderr] 92 | | [INFO] [stderr] 93 | | }; [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] 88 | match self { [INFO] [stderr] 89 | Object::Primitive(Primitive::Integer(i)) => Ok(Object::Primitive(Primitive::Integer(*i))), [INFO] [stderr] 90 | Object::Primitive(Primitive::Float(i)) => Ok(Object::Primitive(Primitive::Float(*i))), [INFO] [stderr] 91 | _ => Err(String::from("Internal Interpreter Error: Attempted to unary add incompatible type")) [INFO] [stderr] 92 | [INFO] [stderr] 93 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/object.rs:97:9 [INFO] [stderr] | [INFO] [stderr] 97 | / return match self { [INFO] [stderr] 98 | | Object::Primitive(Primitive::Integer(i)) => Ok(Object::Primitive(Primitive::Integer(-i))), [INFO] [stderr] 99 | | Object::Primitive(Primitive::Float(i)) => Ok(Object::Primitive(Primitive::Float(-i))), [INFO] [stderr] 100 | | _ => Err(String::from("Internal Interpreter Error: Attempted to unary subtract incompatible type")) [INFO] [stderr] 101 | | }; [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] 97 | match self { [INFO] [stderr] 98 | Object::Primitive(Primitive::Integer(i)) => Ok(Object::Primitive(Primitive::Integer(-i))), [INFO] [stderr] 99 | Object::Primitive(Primitive::Float(i)) => Ok(Object::Primitive(Primitive::Float(-i))), [INFO] [stderr] 100 | _ => Err(String::from("Internal Interpreter Error: Attempted to unary subtract incompatible type")) [INFO] [stderr] 101 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/object.rs:105:9 [INFO] [stderr] | [INFO] [stderr] 105 | / return match (self, other) { [INFO] [stderr] 106 | | (Object::Primitive(Primitive::Boolean(left)), Object::Primitive(Primitive::Boolean(right))) [INFO] [stderr] 107 | | => Ok(Object::Primitive(Primitive::Boolean(*left && *right))), [INFO] [stderr] 108 | | _ => Err(String::from("Internal Interpreter Error: Attempted to boolean 'and' incompatible types")) [INFO] [stderr] 109 | | }; [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] 105 | match (self, other) { [INFO] [stderr] 106 | (Object::Primitive(Primitive::Boolean(left)), Object::Primitive(Primitive::Boolean(right))) [INFO] [stderr] 107 | => Ok(Object::Primitive(Primitive::Boolean(*left && *right))), [INFO] [stderr] 108 | _ => Err(String::from("Internal Interpreter Error: Attempted to boolean 'and' incompatible types")) [INFO] [stderr] 109 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/object.rs:113:9 [INFO] [stderr] | [INFO] [stderr] 113 | / return match (self, other) { [INFO] [stderr] 114 | | (Object::Primitive(Primitive::Boolean(left)), Object::Primitive(Primitive::Boolean(right))) [INFO] [stderr] 115 | | => Ok(Object::Primitive(Primitive::Boolean(*left || *right))), [INFO] [stderr] 116 | | _ => Err(String::from("Internal Interpreter Error: Attempted to boolean 'or' incompatible types")) [INFO] [stderr] 117 | | }; [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] 113 | match (self, other) { [INFO] [stderr] 114 | (Object::Primitive(Primitive::Boolean(left)), Object::Primitive(Primitive::Boolean(right))) [INFO] [stderr] 115 | => Ok(Object::Primitive(Primitive::Boolean(*left || *right))), [INFO] [stderr] 116 | _ => Err(String::from("Internal Interpreter Error: Attempted to boolean 'or' incompatible types")) [INFO] [stderr] 117 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/object.rs:121:9 [INFO] [stderr] | [INFO] [stderr] 121 | / return match self { [INFO] [stderr] 122 | | Object::Primitive(Primitive::Boolean(b)) => Ok(Object::Primitive(Primitive::Boolean(!b))), [INFO] [stderr] 123 | | _ => Err(String::from("Internal Interpreter Error: Attempted to boolean negate incompatible type")) [INFO] [stderr] 124 | | }; [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] 121 | match self { [INFO] [stderr] 122 | Object::Primitive(Primitive::Boolean(b)) => Ok(Object::Primitive(Primitive::Boolean(!b))), [INFO] [stderr] 123 | _ => Err(String::from("Internal Interpreter Error: Attempted to boolean negate incompatible type")) [INFO] [stderr] 124 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/object.rs:128:9 [INFO] [stderr] | [INFO] [stderr] 128 | / return match (self, other) { [INFO] [stderr] 129 | | (Object::Primitive(Primitive::Integer(left)), Object::Primitive(Primitive::Integer(right))) [INFO] [stderr] 130 | | => Ok(Object::Primitive(Primitive::Boolean(left < right))), [INFO] [stderr] 131 | | (Object::Primitive(Primitive::Float(left)), Object::Primitive(Primitive::Float(right))) [INFO] [stderr] 132 | | => Ok(Object::Primitive(Primitive::Boolean(left < right))), [INFO] [stderr] 133 | | _ => Err(String::from("Internal Interpreter Error: Attempted to compare 'less than' with incompatible types")) [INFO] [stderr] 134 | | }; [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] 128 | match (self, other) { [INFO] [stderr] 129 | (Object::Primitive(Primitive::Integer(left)), Object::Primitive(Primitive::Integer(right))) [INFO] [stderr] 130 | => Ok(Object::Primitive(Primitive::Boolean(left < right))), [INFO] [stderr] 131 | (Object::Primitive(Primitive::Float(left)), Object::Primitive(Primitive::Float(right))) [INFO] [stderr] 132 | => Ok(Object::Primitive(Primitive::Boolean(left < right))), [INFO] [stderr] 133 | _ => Err(String::from("Internal Interpreter Error: Attempted to compare 'less than' with incompatible types")) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/object.rs:138:9 [INFO] [stderr] | [INFO] [stderr] 138 | / return match (self, other) { [INFO] [stderr] 139 | | (Object::Primitive(Primitive::Integer(left)), Object::Primitive(Primitive::Integer(right))) [INFO] [stderr] 140 | | => Ok(Object::Primitive(Primitive::Boolean(left <= right))), [INFO] [stderr] 141 | | (Object::Primitive(Primitive::Float(left)), Object::Primitive(Primitive::Float(right))) [INFO] [stderr] 142 | | => Ok(Object::Primitive(Primitive::Boolean(left <= right))), [INFO] [stderr] 143 | | _ => Err(String::from("Internal Interpreter Error: Attempted to compare 'less than or equal' with incompatible types")) [INFO] [stderr] 144 | | }; [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] 138 | match (self, other) { [INFO] [stderr] 139 | (Object::Primitive(Primitive::Integer(left)), Object::Primitive(Primitive::Integer(right))) [INFO] [stderr] 140 | => Ok(Object::Primitive(Primitive::Boolean(left <= right))), [INFO] [stderr] 141 | (Object::Primitive(Primitive::Float(left)), Object::Primitive(Primitive::Float(right))) [INFO] [stderr] 142 | => Ok(Object::Primitive(Primitive::Boolean(left <= right))), [INFO] [stderr] 143 | _ => Err(String::from("Internal Interpreter Error: Attempted to compare 'less than or equal' with incompatible types")) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/object.rs:148:9 [INFO] [stderr] | [INFO] [stderr] 148 | / return match (self, other) { [INFO] [stderr] 149 | | (Object::Primitive(Primitive::Integer(left)), Object::Primitive(Primitive::Integer(right))) [INFO] [stderr] 150 | | => Ok(Object::Primitive(Primitive::Boolean(left > right))), [INFO] [stderr] 151 | | (Object::Primitive(Primitive::Float(left)), Object::Primitive(Primitive::Float(right))) [INFO] [stderr] 152 | | => Ok(Object::Primitive(Primitive::Boolean(left > right))), [INFO] [stderr] 153 | | _ => Err(String::from("Internal Interpreter Error: Attempted to compare 'greater than' with incompatible types")) [INFO] [stderr] 154 | | }; [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] 148 | match (self, other) { [INFO] [stderr] 149 | (Object::Primitive(Primitive::Integer(left)), Object::Primitive(Primitive::Integer(right))) [INFO] [stderr] 150 | => Ok(Object::Primitive(Primitive::Boolean(left > right))), [INFO] [stderr] 151 | (Object::Primitive(Primitive::Float(left)), Object::Primitive(Primitive::Float(right))) [INFO] [stderr] 152 | => Ok(Object::Primitive(Primitive::Boolean(left > right))), [INFO] [stderr] 153 | _ => Err(String::from("Internal Interpreter Error: Attempted to compare 'greater than' with incompatible types")) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/object.rs:158:9 [INFO] [stderr] | [INFO] [stderr] 158 | / return match (self, other) { [INFO] [stderr] 159 | | (Object::Primitive(Primitive::Integer(left)), Object::Primitive(Primitive::Integer(right))) [INFO] [stderr] 160 | | => Ok(Object::Primitive(Primitive::Boolean(left >= right))), [INFO] [stderr] 161 | | (Object::Primitive(Primitive::Float(left)), Object::Primitive(Primitive::Float(right))) [INFO] [stderr] 162 | | => Ok(Object::Primitive(Primitive::Boolean(left >= right))), [INFO] [stderr] 163 | | _ => Err(String::from("Internal Interpreter Error: Attempted to compare 'greater than or equal' with incompatible types")) [INFO] [stderr] 164 | | }; [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] 158 | match (self, other) { [INFO] [stderr] 159 | (Object::Primitive(Primitive::Integer(left)), Object::Primitive(Primitive::Integer(right))) [INFO] [stderr] 160 | => Ok(Object::Primitive(Primitive::Boolean(left >= right))), [INFO] [stderr] 161 | (Object::Primitive(Primitive::Float(left)), Object::Primitive(Primitive::Float(right))) [INFO] [stderr] 162 | => Ok(Object::Primitive(Primitive::Boolean(left >= right))), [INFO] [stderr] 163 | _ => Err(String::from("Internal Interpreter Error: Attempted to compare 'greater than or equal' with incompatible types")) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/object.rs:168:9 [INFO] [stderr] | [INFO] [stderr] 168 | / return match (self, other) { [INFO] [stderr] 169 | | (Object::Primitive(Primitive::Integer(left)), Object::Primitive(Primitive::Integer(right))) [INFO] [stderr] 170 | | => Ok(Object::Primitive(Primitive::Boolean(left == right))), [INFO] [stderr] 171 | | (Object::Primitive(Primitive::Float(left)), Object::Primitive(Primitive::Float(right))) [INFO] [stderr] 172 | | => Ok(Object::Primitive(Primitive::Boolean(left == right))), [INFO] [stderr] 173 | | _ => Err(String::from("Internal Interpreter Error: Attempted to compare 'equal' with incompatible types")) [INFO] [stderr] 174 | | }; [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] 168 | match (self, other) { [INFO] [stderr] 169 | (Object::Primitive(Primitive::Integer(left)), Object::Primitive(Primitive::Integer(right))) [INFO] [stderr] 170 | => Ok(Object::Primitive(Primitive::Boolean(left == right))), [INFO] [stderr] 171 | (Object::Primitive(Primitive::Float(left)), Object::Primitive(Primitive::Float(right))) [INFO] [stderr] 172 | => Ok(Object::Primitive(Primitive::Boolean(left == right))), [INFO] [stderr] 173 | _ => Err(String::from("Internal Interpreter Error: Attempted to compare 'equal' with incompatible types")) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/object.rs:178:9 [INFO] [stderr] | [INFO] [stderr] 178 | / return match (self, other) { [INFO] [stderr] 179 | | (Object::Primitive(Primitive::Integer(left)), Object::Primitive(Primitive::Integer(right))) [INFO] [stderr] 180 | | => Ok(Object::Primitive(Primitive::Boolean(left != right))), [INFO] [stderr] 181 | | (Object::Primitive(Primitive::Float(left)), Object::Primitive(Primitive::Float(right))) [INFO] [stderr] 182 | | => Ok(Object::Primitive(Primitive::Boolean(left != right))), [INFO] [stderr] 183 | | _ => Err(String::from("Internal Interpreter Error: Attempted to compare 'not equal' with incompatible types")) [INFO] [stderr] 184 | | }; [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] 178 | match (self, other) { [INFO] [stderr] 179 | (Object::Primitive(Primitive::Integer(left)), Object::Primitive(Primitive::Integer(right))) [INFO] [stderr] 180 | => Ok(Object::Primitive(Primitive::Boolean(left != right))), [INFO] [stderr] 181 | (Object::Primitive(Primitive::Float(left)), Object::Primitive(Primitive::Float(right))) [INFO] [stderr] 182 | => Ok(Object::Primitive(Primitive::Boolean(left != right))), [INFO] [stderr] 183 | _ => Err(String::from("Internal Interpreter Error: Attempted to compare 'not equal' with incompatible types")) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/object.rs:191:9 [INFO] [stderr] | [INFO] [stderr] 191 | / return match self { [INFO] [stderr] 192 | | Object::Unit => write!(f, ""), [INFO] [stderr] 193 | | Object::Primitive(primitive) => write!(f, "{:?}", primitive), [INFO] [stderr] 194 | | Object::Procedure(name, variables, _) => write!(f, "Procedure<{}, {:?}>", name, variables), [INFO] [stderr] ... | [INFO] [stderr] 202 | | Object::BuiltInFunction(BuiltInFunction::StringToReal(_)) => write!(f, "BuiltInFunction Real>") [INFO] [stderr] 203 | | }; [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] 191 | match self { [INFO] [stderr] 192 | Object::Unit => write!(f, ""), [INFO] [stderr] 193 | Object::Primitive(primitive) => write!(f, "{:?}", primitive), [INFO] [stderr] 194 | Object::Procedure(name, variables, _) => write!(f, "Procedure<{}, {:?}>", name, variables), [INFO] [stderr] 195 | Object::Function(name, variables, _, return_type) => write!(f, "Function<{}, {:?} -> {:?}>", name, variables, return_type), [INFO] [stderr] 196 | Object::BuiltInFunction(BuiltInFunction::Write(_)) => write!(f, "BuiltInFunction ()>"), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/built_ins.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | return Ok(Object::Unit); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Object::Unit)` [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/interpreter/built_ins.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 16 | return Ok(Object::Unit); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Object::Unit)` [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/interpreter/built_ins.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | / return match io::stdin().read_line(&mut buffer) { [INFO] [stderr] 22 | | Ok(_) => Ok(Object::Primitive(Primitive::String(buffer))), [INFO] [stderr] 23 | | Err(e) => Err(String::from(e.description())) [INFO] [stderr] 24 | | }; [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] 21 | match io::stdin().read_line(&mut buffer) { [INFO] [stderr] 22 | Ok(_) => Ok(Object::Primitive(Primitive::String(buffer))), [INFO] [stderr] 23 | Err(e) => Err(String::from(e.description())) [INFO] [stderr] 24 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/built_ins.rs:28:5 [INFO] [stderr] | [INFO] [stderr] 28 | return Ok(Object::Primitive(Primitive::String(value.to_string()))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Object::Primitive(Primitive::String(value.to_string())))` [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/interpreter/built_ins.rs:32:5 [INFO] [stderr] | [INFO] [stderr] 32 | return Ok(Object::Primitive(Primitive::String(value.to_string()))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Object::Primitive(Primitive::String(value.to_string())))` [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/interpreter/built_ins.rs:36:5 [INFO] [stderr] | [INFO] [stderr] 36 | / return match text.trim().parse::() { [INFO] [stderr] 37 | | Ok(num) => Ok(Object::Primitive(Primitive::Integer(num))), [INFO] [stderr] 38 | | Err(_) => Err(String::from("Could not convert string to integer")) [INFO] [stderr] 39 | | }; [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] 36 | match text.trim().parse::() { [INFO] [stderr] 37 | Ok(num) => Ok(Object::Primitive(Primitive::Integer(num))), [INFO] [stderr] 38 | Err(_) => Err(String::from("Could not convert string to integer")) [INFO] [stderr] 39 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/built_ins.rs:43:5 [INFO] [stderr] | [INFO] [stderr] 43 | / return match text.trim().parse::() { [INFO] [stderr] 44 | | Ok(num) => Ok(Object::Primitive(Primitive::Float(num))), [INFO] [stderr] 45 | | Err(_) => Err(String::from("Could not convert string to real")) [INFO] [stderr] 46 | | }; [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] 43 | match text.trim().parse::() { [INFO] [stderr] 44 | Ok(num) => Ok(Object::Primitive(Primitive::Float(num))), [INFO] [stderr] 45 | Err(_) => Err(String::from("Could not convert string to real")) [INFO] [stderr] 46 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/rascal/mod.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | mod rascal; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/lexer/mod.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | mod lexer; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer/lexer.rs:20:9 [INFO] [stderr] | [INFO] [stderr] 20 | return lexer; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `lexer` [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: unneeded return statement [INFO] [stderr] --> src/lexer/lexer.rs:24:9 [INFO] [stderr] | [INFO] [stderr] 24 | return self.token_cache.peek(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.token_cache.peek()` [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/lexer/lexer.rs:28:9 [INFO] [stderr] | [INFO] [stderr] 28 | return self.token_cache.peek_ahead(ahead); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.token_cache.peek_ahead(ahead)` [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/lexer/lexer.rs:62:9 [INFO] [stderr] | [INFO] [stderr] 62 | return Ok(final_int); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(final_int)` [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/lexer/lexer.rs:57:17 [INFO] [stderr] | [INFO] [stderr] 57 | return acc; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `acc` [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/lexer/lexer.rs:101:9 [INFO] [stderr] | [INFO] [stderr] 101 | / return match final_id.to_lowercase().as_str() { [INFO] [stderr] 102 | | "program" => Ok(Token::PROGRAM), [INFO] [stderr] 103 | | "procedure" => Ok(Token::PROCEDURE), [INFO] [stderr] 104 | | "function" => Ok(Token::FUNCTION), [INFO] [stderr] ... | [INFO] [stderr] 121 | | _ => Ok(Token::ID(final_id)) [INFO] [stderr] 122 | | }; [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] 101 | match final_id.to_lowercase().as_str() { [INFO] [stderr] 102 | "program" => Ok(Token::PROGRAM), [INFO] [stderr] 103 | "procedure" => Ok(Token::PROCEDURE), [INFO] [stderr] 104 | "function" => Ok(Token::FUNCTION), [INFO] [stderr] 105 | "begin" => Ok(Token::BEGIN), [INFO] [stderr] 106 | "end" => Ok(Token::END), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer/lexer.rs:98:17 [INFO] [stderr] | [INFO] [stderr] 98 | return acc; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `acc` [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/lexer/lexer.rs:143:9 [INFO] [stderr] | [INFO] [stderr] 143 | return Ok(Token::STRING_LITERAL(final_string)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Token::STRING_LITERAL(final_string))` [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/lexer/lexer.rs:135:17 [INFO] [stderr] | [INFO] [stderr] 135 | return acc; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `acc` [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/lexer/lexer.rs:147:9 [INFO] [stderr] | [INFO] [stderr] 147 | / return match (self.source.current_char(), self.source.next()) { [INFO] [stderr] 148 | | (Some(':'), Some('=')) => Ok(Token::ASSIGN), [INFO] [stderr] 149 | | _ => Err(String::from("Internal Lexer Error: Expected ':=' characters")) [INFO] [stderr] 150 | | }; [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] 147 | match (self.source.current_char(), self.source.next()) { [INFO] [stderr] 148 | (Some(':'), Some('=')) => Ok(Token::ASSIGN), [INFO] [stderr] 149 | _ => Err(String::from("Internal Lexer Error: Expected ':=' characters")) [INFO] [stderr] 150 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer/lexer.rs:154:9 [INFO] [stderr] | [INFO] [stderr] 154 | / return match self.source.current_char() { [INFO] [stderr] 155 | | Some('<') => match self.source.peek() { [INFO] [stderr] 156 | | Some('=') => { [INFO] [stderr] 157 | | self.source.next(); [INFO] [stderr] ... | [INFO] [stderr] 174 | | _ => Err(String::from("Internal Lexer Error: Expected comparison character")) [INFO] [stderr] 175 | | }; [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] 154 | match self.source.current_char() { [INFO] [stderr] 155 | Some('<') => match self.source.peek() { [INFO] [stderr] 156 | Some('=') => { [INFO] [stderr] 157 | self.source.next(); [INFO] [stderr] 158 | Ok(Token::LESS_THAN_OR_EQUAL) [INFO] [stderr] 159 | }, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer/lexer.rs:179:9 [INFO] [stderr] | [INFO] [stderr] 179 | / return match self.source.next() { [INFO] [stderr] 180 | | Some(character) if character.is_whitespace() => self.lex(), [INFO] [stderr] 181 | | Some(character) if character.is_digit(10) => self.integer(), [INFO] [stderr] 182 | | Some(character) if character.is_alphabetic() => self.id(), [INFO] [stderr] ... | [INFO] [stderr] 201 | | Some(character) => Err(format!("Lexer Error: Unknown Token '{}'", character)), [INFO] [stderr] 202 | | } [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] 179 | match self.source.next() { [INFO] [stderr] 180 | Some(character) if character.is_whitespace() => self.lex(), [INFO] [stderr] 181 | Some(character) if character.is_digit(10) => self.integer(), [INFO] [stderr] 182 | Some(character) if character.is_alphabetic() => self.id(), [INFO] [stderr] 183 | Some(':') => match self.source.peek() { [INFO] [stderr] 184 | Some('=') => self.assign(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer/lexer.rs:210:9 [INFO] [stderr] | [INFO] [stderr] 210 | return self.token_cache.next(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.token_cache.next()` [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/lexer/token.rs:53:9 [INFO] [stderr] | [INFO] [stderr] 53 | return TokenCache { tokens: vec![] }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `TokenCache { tokens: vec![] }` [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/lexer/token.rs:61:9 [INFO] [stderr] | [INFO] [stderr] 61 | return self.tokens.get(0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.tokens.get(0)` [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/lexer/token.rs:65:9 [INFO] [stderr] | [INFO] [stderr] 65 | return self.tokens.get(ahead); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.tokens.get(ahead)` [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/lexer/token.rs:73:9 [INFO] [stderr] | [INFO] [stderr] 73 | return if self.tokens.is_empty() { None } else { Some(self.tokens.remove(0)) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `if self.tokens.is_empty() { None } else { Some(self.tokens.remove(0)) }` [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/lexer/source.rs:12:9 [INFO] [stderr] | [INFO] [stderr] 12 | / return Source { [INFO] [stderr] 13 | | chars: raw_text.chars().peekable(), [INFO] [stderr] 14 | | current_char: None, [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_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 12 | Source { [INFO] [stderr] 13 | chars: raw_text.chars().peekable(), [INFO] [stderr] 14 | current_char: None, [INFO] [stderr] 15 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer/source.rs:19:9 [INFO] [stderr] | [INFO] [stderr] 19 | return self.current_char; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.current_char` [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/lexer/source.rs:23:9 [INFO] [stderr] | [INFO] [stderr] 23 | return self.chars.peek(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.chars.peek()` [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/lexer/source.rs:33:9 [INFO] [stderr] | [INFO] [stderr] 33 | return self.current_char; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.current_char` [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/lexer/source.rs:46:9 [INFO] [stderr] | [INFO] [stderr] 46 | return if pass { self.next() } else { None }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `if pass { self.next() } else { None }` [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: module has the same name as its containing module [INFO] [stderr] --> src/parser/mod.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | mod parser; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser/parser.rs:59:9 [INFO] [stderr] | [INFO] [stderr] 59 | return Parser { lexer }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Parser { lexer }` [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/parser/parser.rs:63:9 [INFO] [stderr] | [INFO] [stderr] 63 | / return match token { [INFO] [stderr] 64 | | Token::INTEGER_CONST(_) [INFO] [stderr] 65 | | | Token::REAL_CONST(_) [INFO] [stderr] 66 | | | Token::STRING_LITERAL(_ ) [INFO] [stderr] ... | [INFO] [stderr] 73 | | _ => Err(String::from(format!("Expression Parse Error at token {:?}", token))) [INFO] [stderr] 74 | | }; [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] 63 | match token { [INFO] [stderr] 64 | Token::INTEGER_CONST(_) [INFO] [stderr] 65 | | Token::REAL_CONST(_) [INFO] [stderr] 66 | | Token::STRING_LITERAL(_ ) [INFO] [stderr] 67 | | Token::BOOLEAN_CONST(_) => Ok(PrefixParselet::Literal), [INFO] [stderr] 68 | Token::PLUS [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser/parser.rs:78:9 [INFO] [stderr] | [INFO] [stderr] 78 | / return match token { [INFO] [stderr] 79 | | Token::PLUS [INFO] [stderr] 80 | | | Token::MINUS => Ok(InfixParselet::BinaryOperator(Precedence::SUM as u32)), [INFO] [stderr] 81 | | Token::MULTIPLY [INFO] [stderr] ... | [INFO] [stderr] 93 | | _ => Err(String::from(format!("Expression Parse Error at token {:?}", token))) [INFO] [stderr] 94 | | }; [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] 78 | match token { [INFO] [stderr] 79 | Token::PLUS [INFO] [stderr] 80 | | Token::MINUS => Ok(InfixParselet::BinaryOperator(Precedence::SUM as u32)), [INFO] [stderr] 81 | Token::MULTIPLY [INFO] [stderr] 82 | | Token::INTEGER_DIV [INFO] [stderr] 83 | | Token::FLOAT_DIV => Ok(InfixParselet::BinaryOperator(Precedence::PRODUCT as u32)), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser/parser.rs:98:9 [INFO] [stderr] | [INFO] [stderr] 98 | / return match self.lexer.peek() { [INFO] [stderr] 99 | | Some(token) => match Parser::get_infix_parselet(token) { [INFO] [stderr] 100 | | Ok(parselet) => parselet.get_precedence(), [INFO] [stderr] 101 | | Err(_) => 0 [INFO] [stderr] 102 | | }, [INFO] [stderr] 103 | | None => 0 [INFO] [stderr] 104 | | }; [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] 98 | match self.lexer.peek() { [INFO] [stderr] 99 | Some(token) => match Parser::get_infix_parselet(token) { [INFO] [stderr] 100 | Ok(parselet) => parselet.get_precedence(), [INFO] [stderr] 101 | Err(_) => 0 [INFO] [stderr] 102 | }, [INFO] [stderr] 103 | None => 0 [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser/parser.rs:125:9 [INFO] [stderr] | [INFO] [stderr] 125 | return Ok(Program(variable, block)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Program(variable, block))` [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/parser/parser.rs:132:9 [INFO] [stderr] | [INFO] [stderr] 132 | return Ok(Block(self.declarations()?, self.compound_statement()?)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Block(self.declarations()?, self.compound_statement()?))` [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/parser/parser.rs:179:9 [INFO] [stderr] | [INFO] [stderr] 179 | return Ok(declarations); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(declarations)` [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/parser/parser.rs:208:9 [INFO] [stderr] | [INFO] [stderr] 208 | / return match self.lexer.next() { [INFO] [stderr] 209 | | Some(Token::COLON) => match (self.type_spec()?, self.lexer.next()) { [INFO] [stderr] 210 | | (type_spec, Some(Token::SEMI)) => Ok(VariableDeclaration(ids, type_spec)), [INFO] [stderr] 211 | | (type_spec, _) => Err(String::from(format!("Variable Declaration Parse Error: Expected {:?} token after {:?}", Token::SEMI, type_spec))) [INFO] [stderr] 212 | | }, [INFO] [stderr] 213 | | _ => Err(String::from(format!("Variable Declaration Parse Error: Expected {:?} token after declared variables", Token::COLON))) [INFO] [stderr] 214 | | }; [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] 208 | match self.lexer.next() { [INFO] [stderr] 209 | Some(Token::COLON) => match (self.type_spec()?, self.lexer.next()) { [INFO] [stderr] 210 | (type_spec, Some(Token::SEMI)) => Ok(VariableDeclaration(ids, type_spec)), [INFO] [stderr] 211 | (type_spec, _) => Err(String::from(format!("Variable Declaration Parse Error: Expected {:?} token after {:?}", Token::SEMI, type_spec))) [INFO] [stderr] 212 | }, [INFO] [stderr] 213 | _ => Err(String::from(format!("Variable Declaration Parse Error: Expected {:?} token after declared variables", Token::COLON))) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser/parser.rs:221:9 [INFO] [stderr] | [INFO] [stderr] 221 | / return match self.lexer.next() { [INFO] [stderr] 222 | | Some(Token::INTEGER) => Ok(TypeSpec::INTEGER), [INFO] [stderr] 223 | | Some(Token::REAL) => Ok(TypeSpec::REAL), [INFO] [stderr] 224 | | Some(Token::STRING) => Ok(TypeSpec::STRING), [INFO] [stderr] 225 | | Some(Token::BOOLEAN) => Ok(TypeSpec::BOOLEAN), [INFO] [stderr] 226 | | _ => Err(String::from(format!("TypeSpec Parse Error: Expected one of {:?}", vec![TypeSpec::INTEGER, TypeSpec::REAL, TypeSpec::STRING, TypeSpec::BOOLEAN]))) [INFO] [stderr] 227 | | }; [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] 221 | match self.lexer.next() { [INFO] [stderr] 222 | Some(Token::INTEGER) => Ok(TypeSpec::INTEGER), [INFO] [stderr] 223 | Some(Token::REAL) => Ok(TypeSpec::REAL), [INFO] [stderr] 224 | Some(Token::STRING) => Ok(TypeSpec::STRING), [INFO] [stderr] 225 | Some(Token::BOOLEAN) => Ok(TypeSpec::BOOLEAN), [INFO] [stderr] 226 | _ => Err(String::from(format!("TypeSpec Parse Error: Expected one of {:?}", vec![TypeSpec::INTEGER, TypeSpec::REAL, TypeSpec::STRING, TypeSpec::BOOLEAN]))) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser/parser.rs:254:9 [INFO] [stderr] | [INFO] [stderr] 254 | return Ok(ProcedureDeclaration(name, parameters, block)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(ProcedureDeclaration(name, parameters, block))` [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/parser/parser.rs:281:9 [INFO] [stderr] | [INFO] [stderr] 281 | return Ok(FunctionDeclaration(name, parameters, block, return_type)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(FunctionDeclaration(name, parameters, block, return_type))` [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/parser/parser.rs:301:9 [INFO] [stderr] | [INFO] [stderr] 301 | return Ok(FormalParameterList(parameters)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(FormalParameterList(parameters))` [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/parser/parser.rs:335:9 [INFO] [stderr] | [INFO] [stderr] 335 | return Ok(FormalParameters(ids, type_spec)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(FormalParameters(ids, type_spec))` [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/parser/parser.rs:353:9 [INFO] [stderr] | [INFO] [stderr] 353 | return Ok(Compound(statements)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Compound(statements))` [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/parser/parser.rs:360:9 [INFO] [stderr] | [INFO] [stderr] 360 | / return match self.lexer.peek() { [INFO] [stderr] 361 | | Some(Token::BEGIN) => Ok(Statement::Compound(self.compound_statement()?)), [INFO] [stderr] 362 | | Some(Token::ID(_)) => match self.lexer.peek_ahead(1) { [INFO] [stderr] 363 | | Some(Token::LPAREN) => Ok(Statement::FunctionCall(self.function_call()?)), [INFO] [stderr] ... | [INFO] [stderr] 368 | | _ => Err(String::from("Statement Parse Error: Expected compound statement, function call, assignment statement, or if statement")) [INFO] [stderr] 369 | | }; [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] 360 | match self.lexer.peek() { [INFO] [stderr] 361 | Some(Token::BEGIN) => Ok(Statement::Compound(self.compound_statement()?)), [INFO] [stderr] 362 | Some(Token::ID(_)) => match self.lexer.peek_ahead(1) { [INFO] [stderr] 363 | Some(Token::LPAREN) => Ok(Statement::FunctionCall(self.function_call()?)), [INFO] [stderr] 364 | Some(Token::ASSIGN) => Ok(Statement::Assignment(self.assignment_statement()?)), [INFO] [stderr] 365 | _ => Err(String::from("Statement Parse Error: Expected assignment statement or function call after id token")) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser/parser.rs:384:9 [INFO] [stderr] | [INFO] [stderr] 384 | / return match self.lexer.peek() { [INFO] [stderr] 385 | | Some(Token::ELSE) => { [INFO] [stderr] 386 | | self.lexer.next(); // eat the 'else' token [INFO] [stderr] 387 | | match self.lexer.peek() { [INFO] [stderr] ... | [INFO] [stderr] 392 | | _ => Ok(IfStatement::If(if_expr, if_compound)) [INFO] [stderr] 393 | | }; [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] 384 | match self.lexer.peek() { [INFO] [stderr] 385 | Some(Token::ELSE) => { [INFO] [stderr] 386 | self.lexer.next(); // eat the 'else' token [INFO] [stderr] 387 | match self.lexer.peek() { [INFO] [stderr] 388 | Some(Token::IF) => Ok(IfStatement::IfElseIf(if_expr, if_compound, Box::new(self.if_statement()?))), [INFO] [stderr] 389 | _ => Ok(IfStatement::IfElse(if_expr, if_compound, self.compound_statement()?)) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser/parser.rs:400:9 [INFO] [stderr] | [INFO] [stderr] 400 | / return match (self.variable()?, self.lexer.next()) { [INFO] [stderr] 401 | | (var, Some(Token::ASSIGN)) => match (self.expr(None)?, self.lexer.next()) { [INFO] [stderr] 402 | | (expr, Some(Token::SEMI)) => Ok(Assignment(var, expr)), [INFO] [stderr] 403 | | (expr, _) => Err(String::from(format!("Assignment Statement Parse Error: Expected {:?} after {:?}", Token::SEMI, expr))) [INFO] [stderr] 404 | | }, [INFO] [stderr] 405 | | (var, _) => Err(String::from(format!("Assignment Statement Parse Error: Expected {:?} after {:?}", Token::ASSIGN, var))) [INFO] [stderr] 406 | | }; [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] 400 | match (self.variable()?, self.lexer.next()) { [INFO] [stderr] 401 | (var, Some(Token::ASSIGN)) => match (self.expr(None)?, self.lexer.next()) { [INFO] [stderr] 402 | (expr, Some(Token::SEMI)) => Ok(Assignment(var, expr)), [INFO] [stderr] 403 | (expr, _) => Err(String::from(format!("Assignment Statement Parse Error: Expected {:?} after {:?}", Token::SEMI, expr))) [INFO] [stderr] 404 | }, [INFO] [stderr] 405 | (var, _) => Err(String::from(format!("Assignment Statement Parse Error: Expected {:?} after {:?}", Token::ASSIGN, var))) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser/parser.rs:413:9 [INFO] [stderr] | [INFO] [stderr] 413 | / return match self.lexer.next() { [INFO] [stderr] 414 | | Some(Token::ID(id)) => Ok(Variable(id)), [INFO] [stderr] 415 | | _ => Err(String::from("Variable Parse Error: Expected id token")) [INFO] [stderr] 416 | | }; [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] 413 | match self.lexer.next() { [INFO] [stderr] 414 | Some(Token::ID(id)) => Ok(Variable(id)), [INFO] [stderr] 415 | _ => Err(String::from("Variable Parse Error: Expected id token")) [INFO] [stderr] 416 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser/parser.rs:428:9 [INFO] [stderr] | [INFO] [stderr] 428 | / return match (self.call_parameters()?, self.lexer.next(), self.lexer.next()) { [INFO] [stderr] 429 | | (call_parameters, Some(Token::RPAREN), Some(Token::SEMI)) => Ok(FunctionCall(function_id, call_parameters)), [INFO] [stderr] 430 | | (call_parameters, _, _) => Err(String::from(format!("Function Call Parse Error: Expected tokens {:?} {:?} after {:?}", Token::RPAREN, Token::SEMI, call_parameters))) [INFO] [stderr] 431 | | }; [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] 428 | match (self.call_parameters()?, self.lexer.next(), self.lexer.next()) { [INFO] [stderr] 429 | (call_parameters, Some(Token::RPAREN), Some(Token::SEMI)) => Ok(FunctionCall(function_id, call_parameters)), [INFO] [stderr] 430 | (call_parameters, _, _) => Err(String::from(format!("Function Call Parse Error: Expected tokens {:?} {:?} after {:?}", Token::RPAREN, Token::SEMI, call_parameters))) [INFO] [stderr] 431 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser/parser.rs:466:9 [INFO] [stderr] | [INFO] [stderr] 466 | return Ok(left); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(left)` [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/parser/parser.rs:478:9 [INFO] [stderr] | [INFO] [stderr] 478 | return Ok(program); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(program)` [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/parser/parser.rs:497:9 [INFO] [stderr] | [INFO] [stderr] 497 | return parser; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `parser` [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/parser/parselet.rs:30:9 [INFO] [stderr] | [INFO] [stderr] 30 | / return match self { [INFO] [stderr] 31 | | PrefixParselet::Literal => Ok(Expr::Literal(self.literal(parser, token)?)), [INFO] [stderr] 32 | | PrefixParselet::Grouping => Ok(Expr::Group(Box::new(self.grouping(parser, token)?))), [INFO] [stderr] 33 | | PrefixParselet::Variable => Ok(Expr::Variable(self.variable(parser, token)?)), [INFO] [stderr] 34 | | PrefixParselet::UnaryOperator(_) => Ok(Expr::UnaryOp(Box::new(self.unary_op(parser, token)?))) [INFO] [stderr] 35 | | } [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] 30 | match self { [INFO] [stderr] 31 | PrefixParselet::Literal => Ok(Expr::Literal(self.literal(parser, token)?)), [INFO] [stderr] 32 | PrefixParselet::Grouping => Ok(Expr::Group(Box::new(self.grouping(parser, token)?))), [INFO] [stderr] 33 | PrefixParselet::Variable => Ok(Expr::Variable(self.variable(parser, token)?)), [INFO] [stderr] 34 | PrefixParselet::UnaryOperator(_) => Ok(Expr::UnaryOp(Box::new(self.unary_op(parser, token)?))) [INFO] [stderr] 35 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser/parselet.rs:39:9 [INFO] [stderr] | [INFO] [stderr] 39 | / return match self { [INFO] [stderr] 40 | | PrefixParselet::UnaryOperator(precedence) => *precedence, [INFO] [stderr] 41 | | _ => 0 [INFO] [stderr] 42 | | }; [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] 39 | match self { [INFO] [stderr] 40 | PrefixParselet::UnaryOperator(precedence) => *precedence, [INFO] [stderr] 41 | _ => 0 [INFO] [stderr] 42 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser/parselet.rs:46:9 [INFO] [stderr] | [INFO] [stderr] 46 | / return match token { [INFO] [stderr] 47 | | Token::INTEGER_CONST(i) => Ok(Literal::Int(*i)), [INFO] [stderr] 48 | | Token::REAL_CONST(i) => Ok(Literal::Float(*i)), [INFO] [stderr] 49 | | Token::STRING_LITERAL(s) => Ok(Literal::String(s.clone())), [INFO] [stderr] 50 | | Token::BOOLEAN_CONST(b) => Ok(Literal::Boolean(*b)), [INFO] [stderr] 51 | | _ => Err(String::from("Literal Parse Error: Expected integer, real, string, or boolean const")) [INFO] [stderr] 52 | | }; [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] 46 | match token { [INFO] [stderr] 47 | Token::INTEGER_CONST(i) => Ok(Literal::Int(*i)), [INFO] [stderr] 48 | Token::REAL_CONST(i) => Ok(Literal::Float(*i)), [INFO] [stderr] 49 | Token::STRING_LITERAL(s) => Ok(Literal::String(s.clone())), [INFO] [stderr] 50 | Token::BOOLEAN_CONST(b) => Ok(Literal::Boolean(*b)), [INFO] [stderr] 51 | _ => Err(String::from("Literal Parse Error: Expected integer, real, string, or boolean const")) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser/parselet.rs:56:9 [INFO] [stderr] | [INFO] [stderr] 56 | / return match token { [INFO] [stderr] 57 | | Token::LPAREN => match (parser.expr(None)?, parser.lexer.next()) { [INFO] [stderr] 58 | | (expr, Some(Token::RPAREN)) => Ok(GroupedExpr(expr)), [INFO] [stderr] 59 | | (expr, _) => Err(String::from(format!("Grouping Parse Error: Expected token {:?} after {:?}", Token::RPAREN, expr))) [INFO] [stderr] 60 | | }, [INFO] [stderr] 61 | | _ => Err(String::from(format!("Grouping Parse Error: Expected token {:?}", Token::LPAREN))) [INFO] [stderr] 62 | | }; [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] 56 | match token { [INFO] [stderr] 57 | Token::LPAREN => match (parser.expr(None)?, parser.lexer.next()) { [INFO] [stderr] 58 | (expr, Some(Token::RPAREN)) => Ok(GroupedExpr(expr)), [INFO] [stderr] 59 | (expr, _) => Err(String::from(format!("Grouping Parse Error: Expected token {:?} after {:?}", Token::RPAREN, expr))) [INFO] [stderr] 60 | }, [INFO] [stderr] 61 | _ => Err(String::from(format!("Grouping Parse Error: Expected token {:?}", Token::LPAREN))) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser/parselet.rs:66:9 [INFO] [stderr] | [INFO] [stderr] 66 | / return match token { [INFO] [stderr] 67 | | Token::ID(name) => Ok(Variable(name.clone())), [INFO] [stderr] 68 | | _ => Err(String::from("Variable Parse Error: Expected token id")) [INFO] [stderr] 69 | | }; [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] 66 | match token { [INFO] [stderr] 67 | Token::ID(name) => Ok(Variable(name.clone())), [INFO] [stderr] 68 | _ => Err(String::from("Variable Parse Error: Expected token id")) [INFO] [stderr] 69 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser/parselet.rs:80:9 [INFO] [stderr] | [INFO] [stderr] 80 | return Ok(UnaryOpExpr(operator, parser.expr(Some(self.get_precedence()))?)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(UnaryOpExpr(operator, parser.expr(Some(self.get_precedence()))?))` [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/parser/parselet.rs:87:9 [INFO] [stderr] | [INFO] [stderr] 87 | / return match self { [INFO] [stderr] 88 | | InfixParselet::BinaryOperator(_) => Ok(Expr::BinOp(Box::new(self.binary_op(parser, left, token)?))), [INFO] [stderr] 89 | | InfixParselet::FunctionCall(_) => Ok(Expr::FunctionCall(self.function_call(parser, left, token)?)), [INFO] [stderr] 90 | | }; [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] 87 | match self { [INFO] [stderr] 88 | InfixParselet::BinaryOperator(_) => Ok(Expr::BinOp(Box::new(self.binary_op(parser, left, token)?))), [INFO] [stderr] 89 | InfixParselet::FunctionCall(_) => Ok(Expr::FunctionCall(self.function_call(parser, left, token)?)), [INFO] [stderr] 90 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser/parselet.rs:94:9 [INFO] [stderr] | [INFO] [stderr] 94 | / return match self { [INFO] [stderr] 95 | | InfixParselet::BinaryOperator(precedence) [INFO] [stderr] 96 | | | InfixParselet::FunctionCall(precedence) => *precedence [INFO] [stderr] 97 | | }; [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] 94 | match self { [INFO] [stderr] 95 | InfixParselet::BinaryOperator(precedence) [INFO] [stderr] 96 | | InfixParselet::FunctionCall(precedence) => *precedence [INFO] [stderr] 97 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser/parselet.rs:124:9 [INFO] [stderr] | [INFO] [stderr] 124 | return Ok(BinaryOpExpr(left.clone(), operator, parser.expr(Some(self.get_precedence()))?)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(BinaryOpExpr(left.clone(), operator, parser.expr(Some(self.get_precedence()))?))` [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/parser/parselet.rs:128:9 [INFO] [stderr] | [INFO] [stderr] 128 | / return match (left, token) { [INFO] [stderr] 129 | | (Expr::Variable(name), Token::LPAREN) => match (parser.call_parameters()?, parser.lexer.next()) { [INFO] [stderr] 130 | | (parameters, Some(Token::RPAREN)) => Ok(FunctionCall(name.clone(), parameters)), [INFO] [stderr] 131 | | (parameters, _) => Err(String::from(format!("Function Call Parse Error: Expected token {:?} after {:?}", Token::RPAREN, parameters))) [INFO] [stderr] 132 | | }, [INFO] [stderr] 133 | | (_, _) => Err(String::from(format!("Function Call Parse Error: Expected variable token and {:?}", Token::LPAREN))) [INFO] [stderr] 134 | | }; [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] 128 | match (left, token) { [INFO] [stderr] 129 | (Expr::Variable(name), Token::LPAREN) => match (parser.call_parameters()?, parser.lexer.next()) { [INFO] [stderr] 130 | (parameters, Some(Token::RPAREN)) => Ok(FunctionCall(name.clone(), parameters)), [INFO] [stderr] 131 | (parameters, _) => Err(String::from(format!("Function Call Parse Error: Expected token {:?} after {:?}", Token::RPAREN, parameters))) [INFO] [stderr] 132 | }, [INFO] [stderr] 133 | (_, _) => Err(String::from(format!("Function Call Parse Error: Expected variable token and {:?}", Token::LPAREN))) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:48:9 [INFO] [stderr] | [INFO] [stderr] 48 | return SemanticAnalyzer { scope: None }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `SemanticAnalyzer { scope: None }` [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/analyzer/semantic_analyzer.rs:67:9 [INFO] [stderr] | [INFO] [stderr] 67 | return Ok(()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [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/analyzer/semantic_analyzer.rs:71:9 [INFO] [stderr] | [INFO] [stderr] 71 | / return match node { [INFO] [stderr] 72 | | Program(Variable(name), block) => { [INFO] [stderr] 73 | | self.enter_scope(name.to_owned()); [INFO] [stderr] 74 | | self.init_built_ins()?; [INFO] [stderr] ... | [INFO] [stderr] 79 | | } [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_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 71 | match node { [INFO] [stderr] 72 | Program(Variable(name), block) => { [INFO] [stderr] 73 | self.enter_scope(name.to_owned()); [INFO] [stderr] 74 | self.init_built_ins()?; [INFO] [stderr] 75 | self.visit_block(block)?; [INFO] [stderr] 76 | self.leave_scope(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:84:9 [INFO] [stderr] | [INFO] [stderr] 84 | / return match node { [INFO] [stderr] 85 | | Block(declarations, compound) => { [INFO] [stderr] 86 | | self.visit_declarations(declarations)?; [INFO] [stderr] 87 | | let return_type = self.visit_compound(compound)?; [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#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 84 | match node { [INFO] [stderr] 85 | Block(declarations, compound) => { [INFO] [stderr] 86 | self.visit_declarations(declarations)?; [INFO] [stderr] 87 | let return_type = self.visit_compound(compound)?; [INFO] [stderr] 88 | [INFO] [stderr] 89 | Ok(return_type) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:116:9 [INFO] [stderr] | [INFO] [stderr] 116 | return Ok(()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [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/analyzer/semantic_analyzer.rs:120:9 [INFO] [stderr] | [INFO] [stderr] 120 | / return match node { [INFO] [stderr] 121 | | ProcedureDeclaration(name, parameter_list, block) => { [INFO] [stderr] 122 | | let parameters = self.visit_formal_parameter_list(parameter_list)?; [INFO] [stderr] 123 | | [INFO] [stderr] ... | [INFO] [stderr] 135 | | } [INFO] [stderr] 136 | | }; [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] 120 | match node { [INFO] [stderr] 121 | ProcedureDeclaration(name, parameter_list, block) => { [INFO] [stderr] 122 | let parameters = self.visit_formal_parameter_list(parameter_list)?; [INFO] [stderr] 123 | [INFO] [stderr] 124 | self.scope()?.define(Symbol::Callable(CallableSymbol::Procedure(name.to_owned(), parameters.to_vec()))); [INFO] [stderr] 125 | self.enter_scope(name.to_owned()); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:140:9 [INFO] [stderr] | [INFO] [stderr] 140 | / return match node { [INFO] [stderr] 141 | | FunctionDeclaration(name, parameter_list, block, return_type) => { [INFO] [stderr] 142 | | let parameters = self.visit_formal_parameter_list(parameter_list)?; [INFO] [stderr] 143 | | [INFO] [stderr] ... | [INFO] [stderr] 164 | | } [INFO] [stderr] 165 | | }; [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] 140 | match node { [INFO] [stderr] 141 | FunctionDeclaration(name, parameter_list, block, return_type) => { [INFO] [stderr] 142 | let parameters = self.visit_formal_parameter_list(parameter_list)?; [INFO] [stderr] 143 | [INFO] [stderr] 144 | self.scope()?.define(Symbol::Callable(CallableSymbol::Function(name.to_owned(), parameters.to_vec(), return_type.clone()))); [INFO] [stderr] 145 | self.enter_scope(name.to_owned()); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:169:9 [INFO] [stderr] | [INFO] [stderr] 169 | / return match node { [INFO] [stderr] 170 | | FormalParameterList(formal_parameters) => { [INFO] [stderr] 171 | | let mut vars: Vec = vec![]; [INFO] [stderr] 172 | | for parameters in formal_parameters { [INFO] [stderr] ... | [INFO] [stderr] 177 | | } [INFO] [stderr] 178 | | }; [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] 169 | match node { [INFO] [stderr] 170 | FormalParameterList(formal_parameters) => { [INFO] [stderr] 171 | let mut vars: Vec = vec![]; [INFO] [stderr] 172 | for parameters in formal_parameters { [INFO] [stderr] 173 | let mut other_vars = self.visit_formal_parameters(parameters)?; [INFO] [stderr] 174 | vars.append(&mut other_vars); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:194:9 [INFO] [stderr] | [INFO] [stderr] 194 | return Ok(vars.to_vec()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(vars.to_vec())` [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/analyzer/semantic_analyzer.rs:198:9 [INFO] [stderr] | [INFO] [stderr] 198 | / return match node { [INFO] [stderr] 199 | | VariableDeclaration(names, typespec) => { [INFO] [stderr] 200 | | for name in names { [INFO] [stderr] 201 | | match self.scope()?.local_lookup(name) { [INFO] [stderr] ... | [INFO] [stderr] 214 | | } [INFO] [stderr] 215 | | }; [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] 198 | match node { [INFO] [stderr] 199 | VariableDeclaration(names, typespec) => { [INFO] [stderr] 200 | for name in names { [INFO] [stderr] 201 | match self.scope()?.local_lookup(name) { [INFO] [stderr] 202 | Some(_) => Err(String::from(format!("Semantic Analyzer Error: Variable declared more than once: {}", name))), [INFO] [stderr] 203 | None => match typespec { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:219:9 [INFO] [stderr] | [INFO] [stderr] 219 | / return match node { [INFO] [stderr] 220 | | Compound(statements) => { [INFO] [stderr] 221 | | let mut last_type = TypeSpec::UNIT; [INFO] [stderr] 222 | | for statement in statements { [INFO] [stderr] ... | [INFO] [stderr] 227 | | } [INFO] [stderr] 228 | | }; [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] 219 | match node { [INFO] [stderr] 220 | Compound(statements) => { [INFO] [stderr] 221 | let mut last_type = TypeSpec::UNIT; [INFO] [stderr] 222 | for statement in statements { [INFO] [stderr] 223 | last_type = self.visit_statement(statement)?; [INFO] [stderr] 224 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:232:9 [INFO] [stderr] | [INFO] [stderr] 232 | / return match node { [INFO] [stderr] 233 | | Statement::Compound(compound) => self.visit_compound(compound), [INFO] [stderr] 234 | | Statement::Assignment(assignment) => self.visit_assignment(assignment), [INFO] [stderr] 235 | | Statement::IfStatement(if_statement) => self.visit_if_statement(if_statement), [INFO] [stderr] 236 | | Statement::FunctionCall(function_call) => self.visit_function_call(function_call), [INFO] [stderr] 237 | | }; [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] 232 | match node { [INFO] [stderr] 233 | Statement::Compound(compound) => self.visit_compound(compound), [INFO] [stderr] 234 | Statement::Assignment(assignment) => self.visit_assignment(assignment), [INFO] [stderr] 235 | Statement::IfStatement(if_statement) => self.visit_if_statement(if_statement), [INFO] [stderr] 236 | Statement::FunctionCall(function_call) => self.visit_function_call(function_call), [INFO] [stderr] 237 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:241:9 [INFO] [stderr] | [INFO] [stderr] 241 | / return match node { [INFO] [stderr] 242 | | IfStatement::If(expr, compound_statement) => { [INFO] [stderr] 243 | | match self.visit_expr(expr)? { [INFO] [stderr] 244 | | TypeSpec::BOOLEAN => Ok(()), [INFO] [stderr] ... | [INFO] [stderr] 270 | | } [INFO] [stderr] 271 | | } [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] 241 | match node { [INFO] [stderr] 242 | IfStatement::If(expr, compound_statement) => { [INFO] [stderr] 243 | match self.visit_expr(expr)? { [INFO] [stderr] 244 | TypeSpec::BOOLEAN => Ok(()), [INFO] [stderr] 245 | _ => Err(String::from("Semantic Analyzer Error: If statement must use a boolean expression")) [INFO] [stderr] 246 | }?; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:275:9 [INFO] [stderr] | [INFO] [stderr] 275 | / return match node { [INFO] [stderr] 276 | | Assignment(Variable(name), expression) => { [INFO] [stderr] 277 | | let symbol = match self.scope()?.lookup(name) { [INFO] [stderr] 278 | | Some(symbol) => Ok(symbol.clone()), [INFO] [stderr] ... | [INFO] [stderr] 291 | | } [INFO] [stderr] 292 | | }; [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] 275 | match node { [INFO] [stderr] 276 | Assignment(Variable(name), expression) => { [INFO] [stderr] 277 | let symbol = match self.scope()?.lookup(name) { [INFO] [stderr] 278 | Some(symbol) => Ok(symbol.clone()), [INFO] [stderr] 279 | None => Err(String::from(format!("Semantic Analyzer Error: Variable {} was never defined", name))) [INFO] [stderr] 280 | }?; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:296:9 [INFO] [stderr] | [INFO] [stderr] 296 | / return match node { [INFO] [stderr] 297 | | FunctionCall(Variable(name), parameters) => { [INFO] [stderr] 298 | | let callable = match self.scope()?.lookup(name) { [INFO] [stderr] 299 | | Some(Symbol::Callable(callable)) => Ok(callable.clone()), [INFO] [stderr] ... | [INFO] [stderr] 325 | | } [INFO] [stderr] 326 | | } [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] 296 | match node { [INFO] [stderr] 297 | FunctionCall(Variable(name), parameters) => { [INFO] [stderr] 298 | let callable = match self.scope()?.lookup(name) { [INFO] [stderr] 299 | Some(Symbol::Callable(callable)) => Ok(callable.clone()), [INFO] [stderr] 300 | _ => Err(String::from(format!("Semantic Analyzer Error: Unknown callable '{:?}'", name))) [INFO] [stderr] 301 | }?; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:330:9 [INFO] [stderr] | [INFO] [stderr] 330 | / return match node { [INFO] [stderr] 331 | | CallParameters(expressions) => { [INFO] [stderr] 332 | | let mut parameters: Vec = vec![]; [INFO] [stderr] 333 | | [INFO] [stderr] ... | [INFO] [stderr] 339 | | } [INFO] [stderr] 340 | | } [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] 330 | match node { [INFO] [stderr] 331 | CallParameters(expressions) => { [INFO] [stderr] 332 | let mut parameters: Vec = vec![]; [INFO] [stderr] 333 | [INFO] [stderr] 334 | for expr in expressions.iter() { [INFO] [stderr] 335 | parameters.push(self.visit_expr(expr)?); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:344:9 [INFO] [stderr] | [INFO] [stderr] 344 | / return match node { [INFO] [stderr] 345 | | Expr::UnaryOp(unaryop_expr) => self.visit_unaryop(unaryop_expr), [INFO] [stderr] 346 | | Expr::BinOp(binop_expr) => self.visit_binop(binop_expr), [INFO] [stderr] 347 | | Expr::Group(group_expr) => self.visit_group(group_expr), [INFO] [stderr] ... | [INFO] [stderr] 350 | | Expr::FunctionCall(function_call) => self.visit_function_call(function_call) [INFO] [stderr] 351 | | }; [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] 344 | match node { [INFO] [stderr] 345 | Expr::UnaryOp(unaryop_expr) => self.visit_unaryop(unaryop_expr), [INFO] [stderr] 346 | Expr::BinOp(binop_expr) => self.visit_binop(binop_expr), [INFO] [stderr] 347 | Expr::Group(group_expr) => self.visit_group(group_expr), [INFO] [stderr] 348 | Expr::Literal(literal) => self.visit_literal(literal), [INFO] [stderr] 349 | Expr::Variable(variable) => self.visit_variable(variable), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:355:9 [INFO] [stderr] | [INFO] [stderr] 355 | / return match expr { [INFO] [stderr] 356 | | UnaryOpExpr(operator, unary_expr) => [INFO] [stderr] 357 | | match (operator, self.visit_expr(unary_expr)?) { [INFO] [stderr] 358 | | (UnaryOperator::Plus, TypeSpec::INTEGER) => Ok(TypeSpec::INTEGER), [INFO] [stderr] ... | [INFO] [stderr] 366 | | } [INFO] [stderr] 367 | | }; [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] 355 | match expr { [INFO] [stderr] 356 | UnaryOpExpr(operator, unary_expr) => [INFO] [stderr] 357 | match (operator, self.visit_expr(unary_expr)?) { [INFO] [stderr] 358 | (UnaryOperator::Plus, TypeSpec::INTEGER) => Ok(TypeSpec::INTEGER), [INFO] [stderr] 359 | (UnaryOperator::Minus, TypeSpec::INTEGER) => Ok(TypeSpec::INTEGER), [INFO] [stderr] 360 | (UnaryOperator::Plus, TypeSpec::REAL) => Ok(TypeSpec::REAL), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:371:9 [INFO] [stderr] | [INFO] [stderr] 371 | / return match expr { [INFO] [stderr] 372 | | BinaryOpExpr(left, operator, right) => [INFO] [stderr] 373 | | match (self.visit_expr(left)?, operator, self.visit_expr(right)?) { [INFO] [stderr] 374 | | (TypeSpec::INTEGER, BinaryOperator::Plus, TypeSpec::INTEGER) => Ok(TypeSpec::INTEGER), [INFO] [stderr] ... | [INFO] [stderr] 405 | | } [INFO] [stderr] 406 | | }; [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] 371 | match expr { [INFO] [stderr] 372 | BinaryOpExpr(left, operator, right) => [INFO] [stderr] 373 | match (self.visit_expr(left)?, operator, self.visit_expr(right)?) { [INFO] [stderr] 374 | (TypeSpec::INTEGER, BinaryOperator::Plus, TypeSpec::INTEGER) => Ok(TypeSpec::INTEGER), [INFO] [stderr] 375 | (TypeSpec::INTEGER, BinaryOperator::Minus, TypeSpec::INTEGER) => Ok(TypeSpec::INTEGER), [INFO] [stderr] 376 | (TypeSpec::INTEGER, BinaryOperator::Multiply, TypeSpec::INTEGER) => Ok(TypeSpec::INTEGER), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:410:9 [INFO] [stderr] | [INFO] [stderr] 410 | / return match expr { [INFO] [stderr] 411 | | GroupedExpr(grouped_expr) => self.visit_expr(grouped_expr) [INFO] [stderr] 412 | | }; [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] 410 | match expr { [INFO] [stderr] 411 | GroupedExpr(grouped_expr) => self.visit_expr(grouped_expr) [INFO] [stderr] 412 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:416:9 [INFO] [stderr] | [INFO] [stderr] 416 | / return match expr { [INFO] [stderr] 417 | | Literal::Int(_) => Ok(TypeSpec::INTEGER), [INFO] [stderr] 418 | | Literal::Float(_) => Ok(TypeSpec::REAL), [INFO] [stderr] 419 | | Literal::String(_) => Ok(TypeSpec::STRING), [INFO] [stderr] 420 | | Literal::Boolean(_) => Ok(TypeSpec::BOOLEAN) [INFO] [stderr] 421 | | } [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] 416 | match expr { [INFO] [stderr] 417 | Literal::Int(_) => Ok(TypeSpec::INTEGER), [INFO] [stderr] 418 | Literal::Float(_) => Ok(TypeSpec::REAL), [INFO] [stderr] 419 | Literal::String(_) => Ok(TypeSpec::STRING), [INFO] [stderr] 420 | Literal::Boolean(_) => Ok(TypeSpec::BOOLEAN) [INFO] [stderr] 421 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:425:9 [INFO] [stderr] | [INFO] [stderr] 425 | / return match node { [INFO] [stderr] 426 | | Variable(name) => { [INFO] [stderr] 427 | | match self.scope()?.lookup(name) { [INFO] [stderr] 428 | | Some(symbol) => match symbol { [INFO] [stderr] ... | [INFO] [stderr] 437 | | } [INFO] [stderr] 438 | | }; [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] 425 | match node { [INFO] [stderr] 426 | Variable(name) => { [INFO] [stderr] 427 | match self.scope()?.lookup(name) { [INFO] [stderr] 428 | Some(symbol) => match symbol { [INFO] [stderr] 429 | Symbol::Var(VarSymbol::INTEGER(_)) => Ok(TypeSpec::INTEGER), [INFO] [stderr] 430 | Symbol::Var(VarSymbol::REAL(_)) => Ok(TypeSpec::REAL), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:459:9 [INFO] [stderr] | [INFO] [stderr] 459 | / return match self.scope { [INFO] [stderr] 460 | | Some(ref mut scope) => Ok(scope), [INFO] [stderr] 461 | | None => Err(String::from("Internal Semantic Analyzer Error: Unknown Scope")) [INFO] [stderr] 462 | | }; [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] 459 | match self.scope { [INFO] [stderr] 460 | Some(ref mut scope) => Ok(scope), [INFO] [stderr] 461 | None => Err(String::from("Internal Semantic Analyzer Error: Unknown Scope")) [INFO] [stderr] 462 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/analyzer/symbol_table.rs:15:9 [INFO] [stderr] | [INFO] [stderr] 15 | return SymbolTable { name, symbols: HashMap::new(), enclosing_scope: None } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `SymbolTable { name, symbols: HashMap::new(), enclosing_scope: None }` [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/analyzer/symbol_table.rs:19:9 [INFO] [stderr] | [INFO] [stderr] 19 | return SymbolTable { name, symbols: HashMap::new(), enclosing_scope: Some(Box::new(enclosing_scope))} [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `SymbolTable { name, symbols: HashMap::new(), enclosing_scope: Some(Box::new(enclosing_scope))}` [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/analyzer/symbol_table.rs:23:9 [INFO] [stderr] | [INFO] [stderr] 23 | return self.name.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.name.clone()` [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/analyzer/symbol_table.rs:27:9 [INFO] [stderr] | [INFO] [stderr] 27 | / return match self.enclosing_scope { [INFO] [stderr] 28 | | Some(scope) => Some(*scope), [INFO] [stderr] 29 | | None => None [INFO] [stderr] 30 | | }; [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] 27 | match self.enclosing_scope { [INFO] [stderr] 28 | Some(scope) => Some(*scope), [INFO] [stderr] 29 | None => None [INFO] [stderr] 30 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/analyzer/symbol_table.rs:50:9 [INFO] [stderr] | [INFO] [stderr] 50 | return self.symbols.get(name); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.symbols.get(name)` [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/analyzer/symbol.rs:27:9 [INFO] [stderr] | [INFO] [stderr] 27 | / return match self { [INFO] [stderr] 28 | | Symbol::Var(VarSymbol::INTEGER(name)) [INFO] [stderr] 29 | | | Symbol::Var(VarSymbol::REAL(name)) [INFO] [stderr] 30 | | | Symbol::Var(VarSymbol::STRING(name)) [INFO] [stderr] ... | [INFO] [stderr] 33 | | | Symbol::Callable(CallableSymbol::Function(name, _, _)) => name.clone() [INFO] [stderr] 34 | | }; [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] 27 | match self { [INFO] [stderr] 28 | Symbol::Var(VarSymbol::INTEGER(name)) [INFO] [stderr] 29 | | Symbol::Var(VarSymbol::REAL(name)) [INFO] [stderr] 30 | | Symbol::Var(VarSymbol::STRING(name)) [INFO] [stderr] 31 | | Symbol::Var(VarSymbol::BOOLEAN(name)) [INFO] [stderr] 32 | | Symbol::Callable(CallableSymbol::Procedure(name, _)) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/analyzer/built_ins.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | return Symbol::Callable(CallableSymbol::Procedure(String::from("write"), vec![VarSymbol::STRING(String::from("text"))])); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Symbol::Callable(CallableSymbol::Procedure(String::from("write"), vec![VarSymbol::STRING(String::from("text"))]))` [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/analyzer/built_ins.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | return Symbol::Callable(CallableSymbol::Procedure(String::from("writeln"), vec![VarSymbol::STRING(String::from("text"))])); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Symbol::Callable(CallableSymbol::Procedure(String::from("writeln"), vec![VarSymbol::STRING(String::from("text"))]))` [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/analyzer/built_ins.rs:13:5 [INFO] [stderr] | [INFO] [stderr] 13 | return Symbol::Callable(CallableSymbol::Function(String::from("readln"), vec![], TypeSpec::STRING)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Symbol::Callable(CallableSymbol::Function(String::from("readln"), vec![], TypeSpec::STRING))` [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/analyzer/built_ins.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | return Symbol::Callable(CallableSymbol::Function(String::from("IntToString"), vec![VarSymbol::INTEGER(String::from("value"))], TypeSpec::STRING)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Symbol::Callable(CallableSymbol::Function(String::from("IntToString"), vec![VarSymbol::INTEGER(String::from("value"))], TypeSpec::STRING))` [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/analyzer/built_ins.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | return Symbol::Callable(CallableSymbol::Function(String::from("RealToString"), vec![VarSymbol::REAL(String::from("value"))], TypeSpec::STRING)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Symbol::Callable(CallableSymbol::Function(String::from("RealToString"), vec![VarSymbol::REAL(String::from("value"))], TypeSpec::STRING))` [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/analyzer/built_ins.rs:25:5 [INFO] [stderr] | [INFO] [stderr] 25 | return Symbol::Callable(CallableSymbol::Function(String::from("StringToInt"), vec![VarSymbol::STRING(String::from("text"))], TypeSpec::INTEGER)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Symbol::Callable(CallableSymbol::Function(String::from("StringToInt"), vec![VarSymbol::STRING(String::from("text"))], TypeSpec::INTEGER))` [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/analyzer/built_ins.rs:29:5 [INFO] [stderr] | [INFO] [stderr] 29 | return Symbol::Callable(CallableSymbol::Function(String::from("StringToReal"), vec![VarSymbol::STRING(String::from("text"))], TypeSpec::REAL)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Symbol::Callable(CallableSymbol::Function(String::from("StringToReal"), vec![VarSymbol::STRING(String::from("text"))], TypeSpec::REAL))` [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: module has the same name as its containing module [INFO] [stderr] --> src/interpreter/mod.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | mod interpreter; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/interpreter.rs:45:9 [INFO] [stderr] | [INFO] [stderr] 45 | / return Interpreter { [INFO] [stderr] 46 | | scope: None, [INFO] [stderr] 47 | | }; [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] 45 | Interpreter { [INFO] [stderr] 46 | scope: None, [INFO] [stderr] 47 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/interpreter.rs:66:9 [INFO] [stderr] | [INFO] [stderr] 66 | return Ok(()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [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/interpreter/interpreter.rs:70:9 [INFO] [stderr] | [INFO] [stderr] 70 | / return match node { [INFO] [stderr] 71 | | Program(Variable(name), block) => { [INFO] [stderr] 72 | | self.enter_scope(name.to_owned()); [INFO] [stderr] 73 | | self.init_built_ins()?; [INFO] [stderr] ... | [INFO] [stderr] 78 | | } [INFO] [stderr] 79 | | }; [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] 70 | match node { [INFO] [stderr] 71 | Program(Variable(name), block) => { [INFO] [stderr] 72 | self.enter_scope(name.to_owned()); [INFO] [stderr] 73 | self.init_built_ins()?; [INFO] [stderr] 74 | self.visit_block(block)?; [INFO] [stderr] 75 | self.leave_scope(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/interpreter.rs:83:9 [INFO] [stderr] | [INFO] [stderr] 83 | / return match node { [INFO] [stderr] 84 | | Block(declarations, compound) => { [INFO] [stderr] 85 | | self.visit_declarations(declarations)?; [INFO] [stderr] 86 | | let result = self.visit_compound(compound)?; [INFO] [stderr] ... | [INFO] [stderr] 89 | | } [INFO] [stderr] 90 | | }; [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] 83 | match node { [INFO] [stderr] 84 | Block(declarations, compound) => { [INFO] [stderr] 85 | self.visit_declarations(declarations)?; [INFO] [stderr] 86 | let result = self.visit_compound(compound)?; [INFO] [stderr] 87 | [INFO] [stderr] 88 | Ok(result) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/interpreter.rs:109:9 [INFO] [stderr] | [INFO] [stderr] 109 | return Ok(()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [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/interpreter/interpreter.rs:113:9 [INFO] [stderr] | [INFO] [stderr] 113 | / return match node { [INFO] [stderr] 114 | | ProcedureDeclaration(name, parameter_list, block) => { [INFO] [stderr] 115 | | let parameters = self.visit_formal_parameter_list(parameter_list)?; [INFO] [stderr] 116 | | [INFO] [stderr] ... | [INFO] [stderr] 120 | | } [INFO] [stderr] 121 | | }; [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] 113 | match node { [INFO] [stderr] 114 | ProcedureDeclaration(name, parameter_list, block) => { [INFO] [stderr] 115 | let parameters = self.visit_formal_parameter_list(parameter_list)?; [INFO] [stderr] 116 | [INFO] [stderr] 117 | self.scope()?.set(name.to_owned(), Object::Procedure(name.to_owned(), parameters, block.clone())); [INFO] [stderr] 118 | [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/interpreter.rs:125:9 [INFO] [stderr] | [INFO] [stderr] 125 | / return match node { [INFO] [stderr] 126 | | FunctionDeclaration(name, parameter_list, block, return_type) => { [INFO] [stderr] 127 | | let parameters = self.visit_formal_parameter_list(parameter_list)?; [INFO] [stderr] 128 | | [INFO] [stderr] ... | [INFO] [stderr] 132 | | } [INFO] [stderr] 133 | | }; [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] 125 | match node { [INFO] [stderr] 126 | FunctionDeclaration(name, parameter_list, block, return_type) => { [INFO] [stderr] 127 | let parameters = self.visit_formal_parameter_list(parameter_list)?; [INFO] [stderr] 128 | [INFO] [stderr] 129 | self.scope()?.set(name.to_owned(), Object::Function(name.to_owned(), parameters, block.clone(), return_type.clone())); [INFO] [stderr] 130 | [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/interpreter.rs:137:9 [INFO] [stderr] | [INFO] [stderr] 137 | / return match node { [INFO] [stderr] 138 | | FormalParameterList(formal_parameters) => { [INFO] [stderr] 139 | | let mut var_names: Vec = vec![]; [INFO] [stderr] 140 | | for parameters in formal_parameters { [INFO] [stderr] ... | [INFO] [stderr] 145 | | } [INFO] [stderr] 146 | | }; [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] 137 | match node { [INFO] [stderr] 138 | FormalParameterList(formal_parameters) => { [INFO] [stderr] 139 | let mut var_names: Vec = vec![]; [INFO] [stderr] 140 | for parameters in formal_parameters { [INFO] [stderr] 141 | let mut other_var_names = self.visit_formal_parameters(parameters)?; [INFO] [stderr] 142 | var_names.append(&mut other_var_names); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/interpreter.rs:150:9 [INFO] [stderr] | [INFO] [stderr] 150 | / return match node { [INFO] [stderr] 151 | | FormalParameters(names, _) => Ok(names.to_vec()) [INFO] [stderr] 152 | | }; [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] 150 | match node { [INFO] [stderr] 151 | FormalParameters(names, _) => Ok(names.to_vec()) [INFO] [stderr] 152 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/interpreter.rs:156:9 [INFO] [stderr] | [INFO] [stderr] 156 | / return match node { [INFO] [stderr] 157 | | Compound(statements) => { [INFO] [stderr] 158 | | let mut result = Object::Unit; [INFO] [stderr] 159 | | for statement in statements { [INFO] [stderr] ... | [INFO] [stderr] 164 | | } [INFO] [stderr] 165 | | }; [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] 156 | match node { [INFO] [stderr] 157 | Compound(statements) => { [INFO] [stderr] 158 | let mut result = Object::Unit; [INFO] [stderr] 159 | for statement in statements { [INFO] [stderr] 160 | result = self.visit_statement(statement)?; [INFO] [stderr] 161 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/interpreter.rs:169:9 [INFO] [stderr] | [INFO] [stderr] 169 | / return match node { [INFO] [stderr] 170 | | Statement::Compound(compound) => self.visit_compound(compound), [INFO] [stderr] 171 | | Statement::Assignment(assignment) => self.visit_assignment(assignment), [INFO] [stderr] 172 | | Statement::IfStatement(if_statement) => self.visit_if_statement(if_statement), [INFO] [stderr] 173 | | Statement::FunctionCall(function_call) => self.visit_function_call(function_call), [INFO] [stderr] 174 | | }; [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] 169 | match node { [INFO] [stderr] 170 | Statement::Compound(compound) => self.visit_compound(compound), [INFO] [stderr] 171 | Statement::Assignment(assignment) => self.visit_assignment(assignment), [INFO] [stderr] 172 | Statement::IfStatement(if_statement) => self.visit_if_statement(if_statement), [INFO] [stderr] 173 | Statement::FunctionCall(function_call) => self.visit_function_call(function_call), [INFO] [stderr] 174 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/interpreter.rs:178:9 [INFO] [stderr] | [INFO] [stderr] 178 | / return match node { [INFO] [stderr] 179 | | IfStatement::If(expr, compound_statement) => match self.visit_expr(expr)? { [INFO] [stderr] 180 | | Object::Primitive(Primitive::Boolean(true)) => { [INFO] [stderr] 181 | | self.visit_compound(compound_statement)?; [INFO] [stderr] ... | [INFO] [stderr] 205 | | }, [INFO] [stderr] 206 | | } [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] 178 | match node { [INFO] [stderr] 179 | IfStatement::If(expr, compound_statement) => match self.visit_expr(expr)? { [INFO] [stderr] 180 | Object::Primitive(Primitive::Boolean(true)) => { [INFO] [stderr] 181 | self.visit_compound(compound_statement)?; [INFO] [stderr] 182 | Ok(Object::Unit) [INFO] [stderr] 183 | }, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/interpreter.rs:210:9 [INFO] [stderr] | [INFO] [stderr] 210 | / return match node { [INFO] [stderr] 211 | | Assignment(Variable(name), expression) => { [INFO] [stderr] 212 | | let val = self.visit_expr(expression)?; [INFO] [stderr] 213 | | self.scope()?.set(name.clone(), val.clone()); [INFO] [stderr] ... | [INFO] [stderr] 216 | | } [INFO] [stderr] 217 | | }; [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] 210 | match node { [INFO] [stderr] 211 | Assignment(Variable(name), expression) => { [INFO] [stderr] 212 | let val = self.visit_expr(expression)?; [INFO] [stderr] 213 | self.scope()?.set(name.clone(), val.clone()); [INFO] [stderr] 214 | [INFO] [stderr] 215 | Ok(val) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/interpreter.rs:221:9 [INFO] [stderr] | [INFO] [stderr] 221 | / return match node { [INFO] [stderr] 222 | | FunctionCall(Variable(function_name), CallParameters(given_parameters)) => { [INFO] [stderr] 223 | | let callable = match self.scope()?.get(function_name) { [INFO] [stderr] 224 | | Some(Object::Function(name, declared_params, block, return_type)) => Ok(Object::Function(name.clone(), declared_params.to_vec(), block.clone(), return_type.clone())), [INFO] [stderr] ... | [INFO] [stderr] 274 | | } [INFO] [stderr] 275 | | }; [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] 221 | match node { [INFO] [stderr] 222 | FunctionCall(Variable(function_name), CallParameters(given_parameters)) => { [INFO] [stderr] 223 | let callable = match self.scope()?.get(function_name) { [INFO] [stderr] 224 | Some(Object::Function(name, declared_params, block, return_type)) => Ok(Object::Function(name.clone(), declared_params.to_vec(), block.clone(), return_type.clone())), [INFO] [stderr] 225 | Some(Object::Procedure(name, declared_params, block)) => Ok(Object::Procedure(name.clone(), declared_params.to_vec(), block.clone())), [INFO] [stderr] 226 | Some(Object::BuiltInFunction(func)) => Ok(Object::BuiltInFunction(func.clone())), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/interpreter.rs:279:9 [INFO] [stderr] | [INFO] [stderr] 279 | / return match node { [INFO] [stderr] 280 | | Expr::UnaryOp(unaryop_expr) => self.visit_unaryop(unaryop_expr), [INFO] [stderr] 281 | | Expr::BinOp(binop_expr) => self.visit_binop(binop_expr), [INFO] [stderr] 282 | | Expr::Group(group_expr) => self.visit_group(group_expr), [INFO] [stderr] ... | [INFO] [stderr] 285 | | Expr::FunctionCall(function_call) => self.visit_function_call(function_call) [INFO] [stderr] 286 | | }; [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] 279 | match node { [INFO] [stderr] 280 | Expr::UnaryOp(unaryop_expr) => self.visit_unaryop(unaryop_expr), [INFO] [stderr] 281 | Expr::BinOp(binop_expr) => self.visit_binop(binop_expr), [INFO] [stderr] 282 | Expr::Group(group_expr) => self.visit_group(group_expr), [INFO] [stderr] 283 | Expr::Literal(literal) => self.visit_literal(literal), [INFO] [stderr] 284 | Expr::Variable(variable) => self.visit_variable(variable), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/interpreter.rs:290:9 [INFO] [stderr] | [INFO] [stderr] 290 | / return match node { [INFO] [stderr] 291 | | UnaryOpExpr(UnaryOperator::Plus, expr) => Ok(self.visit_expr(expr)?.unary_plus()?), [INFO] [stderr] 292 | | UnaryOpExpr(UnaryOperator::Minus, expr) => Ok(self.visit_expr(expr)?.unary_minus()?), [INFO] [stderr] 293 | | UnaryOpExpr(UnaryOperator::Not, expr) => Ok(self.visit_expr(expr)?.negate()?) [INFO] [stderr] 294 | | }; [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] 290 | match node { [INFO] [stderr] 291 | UnaryOpExpr(UnaryOperator::Plus, expr) => Ok(self.visit_expr(expr)?.unary_plus()?), [INFO] [stderr] 292 | UnaryOpExpr(UnaryOperator::Minus, expr) => Ok(self.visit_expr(expr)?.unary_minus()?), [INFO] [stderr] 293 | UnaryOpExpr(UnaryOperator::Not, expr) => Ok(self.visit_expr(expr)?.negate()?) [INFO] [stderr] 294 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/interpreter.rs:298:9 [INFO] [stderr] | [INFO] [stderr] 298 | / return match node { [INFO] [stderr] 299 | | BinaryOpExpr(left, BinaryOperator::Plus, right) => Ok(self.visit_expr(left)?.add(&self.visit_expr(right)?)?), [INFO] [stderr] 300 | | BinaryOpExpr(left, BinaryOperator::Minus, right) => Ok(self.visit_expr(left)?.subtract(&self.visit_expr(right)?)?), [INFO] [stderr] 301 | | BinaryOpExpr(left, BinaryOperator::Multiply, right) => Ok(self.visit_expr(left)?.multiply(&self.visit_expr(right)?)?), [INFO] [stderr] ... | [INFO] [stderr] 311 | | BinaryOpExpr(left, BinaryOperator::NotEqual, right) => Ok(self.visit_expr(left)?.not_equal(&self.visit_expr(right)?)?), [INFO] [stderr] 312 | | }; [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] 298 | match node { [INFO] [stderr] 299 | BinaryOpExpr(left, BinaryOperator::Plus, right) => Ok(self.visit_expr(left)?.add(&self.visit_expr(right)?)?), [INFO] [stderr] 300 | BinaryOpExpr(left, BinaryOperator::Minus, right) => Ok(self.visit_expr(left)?.subtract(&self.visit_expr(right)?)?), [INFO] [stderr] 301 | BinaryOpExpr(left, BinaryOperator::Multiply, right) => Ok(self.visit_expr(left)?.multiply(&self.visit_expr(right)?)?), [INFO] [stderr] 302 | BinaryOpExpr(left, BinaryOperator::FloatDivide, right) => Ok(self.visit_expr(left)?.float_divide(&self.visit_expr(right)?)?), [INFO] [stderr] 303 | BinaryOpExpr(left, BinaryOperator::IntegerDivide, right) => Ok(self.visit_expr(left)?.integer_divide(&self.visit_expr(right)?)?), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/interpreter.rs:316:9 [INFO] [stderr] | [INFO] [stderr] 316 | / return match node { [INFO] [stderr] 317 | | GroupedExpr(expr) => self.visit_expr(expr) [INFO] [stderr] 318 | | }; [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] 316 | match node { [INFO] [stderr] 317 | GroupedExpr(expr) => self.visit_expr(expr) [INFO] [stderr] 318 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/interpreter.rs:322:9 [INFO] [stderr] | [INFO] [stderr] 322 | / return match node { [INFO] [stderr] 323 | | Literal::Int(i) => Ok(Object::Primitive(Primitive::Integer(*i))), [INFO] [stderr] 324 | | Literal::Float(f) => Ok(Object::Primitive(Primitive::Float(*f))), [INFO] [stderr] 325 | | Literal::String(s) => Ok(Object::Primitive(Primitive::String(s.clone()))), [INFO] [stderr] 326 | | Literal::Boolean(b) => Ok(Object::Primitive(Primitive::Boolean(*b))) [INFO] [stderr] 327 | | }; [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] 322 | match node { [INFO] [stderr] 323 | Literal::Int(i) => Ok(Object::Primitive(Primitive::Integer(*i))), [INFO] [stderr] 324 | Literal::Float(f) => Ok(Object::Primitive(Primitive::Float(*f))), [INFO] [stderr] 325 | Literal::String(s) => Ok(Object::Primitive(Primitive::String(s.clone()))), [INFO] [stderr] 326 | Literal::Boolean(b) => Ok(Object::Primitive(Primitive::Boolean(*b))) [INFO] [stderr] 327 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/interpreter.rs:331:9 [INFO] [stderr] | [INFO] [stderr] 331 | / return match node { [INFO] [stderr] 332 | | Variable(name) => { [INFO] [stderr] 333 | | match self.scope()?.get(name) { [INFO] [stderr] 334 | | Some(object) => Ok(object.clone()), [INFO] [stderr] ... | [INFO] [stderr] 337 | | } [INFO] [stderr] 338 | | }; [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] 331 | match node { [INFO] [stderr] 332 | Variable(name) => { [INFO] [stderr] 333 | match self.scope()?.get(name) { [INFO] [stderr] 334 | Some(object) => Ok(object.clone()), [INFO] [stderr] 335 | None => Err(String::from(format!("Internal Interpreter Error: Unknown variable '{}'", name))) [INFO] [stderr] 336 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/interpreter.rs:359:9 [INFO] [stderr] | [INFO] [stderr] 359 | / return match self.scope { [INFO] [stderr] 360 | | Some(ref mut scope) => Ok(scope), [INFO] [stderr] 361 | | None => Err(String::from("Internal Interpreter Error: Unknown Scope")) [INFO] [stderr] 362 | | }; [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] 359 | match self.scope { [INFO] [stderr] 360 | Some(ref mut scope) => Ok(scope), [INFO] [stderr] 361 | None => Err(String::from("Internal Interpreter Error: Unknown Scope")) [INFO] [stderr] 362 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/scope.rs:15:9 [INFO] [stderr] | [INFO] [stderr] 15 | return Scope { name, variables: HashMap::new(), enclosing_scope: None } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Scope { name, variables: HashMap::new(), enclosing_scope: None }` [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/interpreter/scope.rs:19:9 [INFO] [stderr] | [INFO] [stderr] 19 | return Scope { name, variables: HashMap::new(), enclosing_scope: Some(Box::new(enclosing_scope))} [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Scope { name, variables: HashMap::new(), enclosing_scope: Some(Box::new(enclosing_scope))}` [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/interpreter/scope.rs:23:9 [INFO] [stderr] | [INFO] [stderr] 23 | return self.name.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.name.clone()` [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/interpreter/scope.rs:27:9 [INFO] [stderr] | [INFO] [stderr] 27 | / return match self.enclosing_scope { [INFO] [stderr] 28 | | Some(scope) => Some(*scope), [INFO] [stderr] 29 | | None => None [INFO] [stderr] 30 | | }; [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] 27 | match self.enclosing_scope { [INFO] [stderr] 28 | Some(scope) => Some(*scope), [INFO] [stderr] 29 | None => None [INFO] [stderr] 30 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/object.rs:36:9 [INFO] [stderr] | [INFO] [stderr] 36 | / return match (self, other) { [INFO] [stderr] 37 | | (Object::Primitive(Primitive::Integer(left)), Object::Primitive(Primitive::Integer(right))) [INFO] [stderr] 38 | | => Ok(Object::Primitive(Primitive::Integer(left + right))), [INFO] [stderr] 39 | | (Object::Primitive(Primitive::Float(left)), Object::Primitive(Primitive::Float(right))) [INFO] [stderr] ... | [INFO] [stderr] 43 | | _ => Err(String::from("Internal Interpreter Error: Attempted to add incompatible types")) [INFO] [stderr] 44 | | }; [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] 36 | match (self, other) { [INFO] [stderr] 37 | (Object::Primitive(Primitive::Integer(left)), Object::Primitive(Primitive::Integer(right))) [INFO] [stderr] 38 | => Ok(Object::Primitive(Primitive::Integer(left + right))), [INFO] [stderr] 39 | (Object::Primitive(Primitive::Float(left)), Object::Primitive(Primitive::Float(right))) [INFO] [stderr] 40 | => Ok(Object::Primitive(Primitive::Float(left + right))), [INFO] [stderr] 41 | (Object::Primitive(Primitive::String(left)), Object::Primitive(Primitive::String(right))) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/object.rs:48:9 [INFO] [stderr] | [INFO] [stderr] 48 | / return match (self, other) { [INFO] [stderr] 49 | | (Object::Primitive(Primitive::Integer(left)), Object::Primitive(Primitive::Integer(right))) [INFO] [stderr] 50 | | => Ok(Object::Primitive(Primitive::Integer(left - right))), [INFO] [stderr] 51 | | (Object::Primitive(Primitive::Float(left)), Object::Primitive(Primitive::Float(right))) [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#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 48 | match (self, other) { [INFO] [stderr] 49 | (Object::Primitive(Primitive::Integer(left)), Object::Primitive(Primitive::Integer(right))) [INFO] [stderr] 50 | => Ok(Object::Primitive(Primitive::Integer(left - right))), [INFO] [stderr] 51 | (Object::Primitive(Primitive::Float(left)), Object::Primitive(Primitive::Float(right))) [INFO] [stderr] 52 | => Ok(Object::Primitive(Primitive::Float(left - right))), [INFO] [stderr] 53 | _ => Err(String::from("Interpreter Interpreter Error: Attempted to subtract incompatible types")) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/object.rs:59:9 [INFO] [stderr] | [INFO] [stderr] 59 | / return match (self, other) { [INFO] [stderr] 60 | | (Object::Primitive(Primitive::Integer(left)), Object::Primitive(Primitive::Integer(right))) [INFO] [stderr] 61 | | => Ok(Object::Primitive(Primitive::Integer(left * right))), [INFO] [stderr] 62 | | (Object::Primitive(Primitive::Float(left)), Object::Primitive(Primitive::Float(right))) [INFO] [stderr] ... | [INFO] [stderr] 65 | | [INFO] [stderr] 66 | | }; [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] 59 | match (self, other) { [INFO] [stderr] 60 | (Object::Primitive(Primitive::Integer(left)), Object::Primitive(Primitive::Integer(right))) [INFO] [stderr] 61 | => Ok(Object::Primitive(Primitive::Integer(left * right))), [INFO] [stderr] 62 | (Object::Primitive(Primitive::Float(left)), Object::Primitive(Primitive::Float(right))) [INFO] [stderr] 63 | => Ok(Object::Primitive(Primitive::Float(left * right))), [INFO] [stderr] 64 | _ => Err(String::from("Internal Interpreter Error: Attempted to multiply incompatible types")) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/object.rs:70:9 [INFO] [stderr] | [INFO] [stderr] 70 | / return match (self, other) { [INFO] [stderr] 71 | | (Object::Primitive(Primitive::Integer(left)), Object::Primitive(Primitive::Integer(right))) [INFO] [stderr] 72 | | => Ok(Object::Primitive(Primitive::Integer(left / right))), [INFO] [stderr] 73 | | _ => Err(String::from("Internal Interpreter Error: Attempted to integer divide incompatible types")) [INFO] [stderr] 74 | | [INFO] [stderr] 75 | | }; [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] 70 | match (self, other) { [INFO] [stderr] 71 | (Object::Primitive(Primitive::Integer(left)), Object::Primitive(Primitive::Integer(right))) [INFO] [stderr] 72 | => Ok(Object::Primitive(Primitive::Integer(left / right))), [INFO] [stderr] 73 | _ => Err(String::from("Internal Interpreter Error: Attempted to integer divide incompatible types")) [INFO] [stderr] 74 | [INFO] [stderr] 75 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/object.rs:79:9 [INFO] [stderr] | [INFO] [stderr] 79 | / return match (self, other) { [INFO] [stderr] 80 | | (Object::Primitive(Primitive::Float(left)), Object::Primitive(Primitive::Float(right))) [INFO] [stderr] 81 | | => Ok(Object::Primitive(Primitive::Float(left / right))), [INFO] [stderr] 82 | | _ => Err(String::from("Internal Interpreter Error: Attempted to float divide incompatible types")) [INFO] [stderr] 83 | | [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_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 79 | match (self, other) { [INFO] [stderr] 80 | (Object::Primitive(Primitive::Float(left)), Object::Primitive(Primitive::Float(right))) [INFO] [stderr] 81 | => Ok(Object::Primitive(Primitive::Float(left / right))), [INFO] [stderr] 82 | _ => Err(String::from("Internal Interpreter Error: Attempted to float divide incompatible types")) [INFO] [stderr] 83 | [INFO] [stderr] 84 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/object.rs:88:9 [INFO] [stderr] | [INFO] [stderr] 88 | / return match self { [INFO] [stderr] 89 | | Object::Primitive(Primitive::Integer(i)) => Ok(Object::Primitive(Primitive::Integer(*i))), [INFO] [stderr] 90 | | Object::Primitive(Primitive::Float(i)) => Ok(Object::Primitive(Primitive::Float(*i))), [INFO] [stderr] 91 | | _ => Err(String::from("Internal Interpreter Error: Attempted to unary add incompatible type")) [INFO] [stderr] 92 | | [INFO] [stderr] 93 | | }; [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] 88 | match self { [INFO] [stderr] 89 | Object::Primitive(Primitive::Integer(i)) => Ok(Object::Primitive(Primitive::Integer(*i))), [INFO] [stderr] 90 | Object::Primitive(Primitive::Float(i)) => Ok(Object::Primitive(Primitive::Float(*i))), [INFO] [stderr] 91 | _ => Err(String::from("Internal Interpreter Error: Attempted to unary add incompatible type")) [INFO] [stderr] 92 | [INFO] [stderr] 93 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/object.rs:97:9 [INFO] [stderr] | [INFO] [stderr] 97 | / return match self { [INFO] [stderr] 98 | | Object::Primitive(Primitive::Integer(i)) => Ok(Object::Primitive(Primitive::Integer(-i))), [INFO] [stderr] 99 | | Object::Primitive(Primitive::Float(i)) => Ok(Object::Primitive(Primitive::Float(-i))), [INFO] [stderr] 100 | | _ => Err(String::from("Internal Interpreter Error: Attempted to unary subtract incompatible type")) [INFO] [stderr] 101 | | }; [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] 97 | match self { [INFO] [stderr] 98 | Object::Primitive(Primitive::Integer(i)) => Ok(Object::Primitive(Primitive::Integer(-i))), [INFO] [stderr] 99 | Object::Primitive(Primitive::Float(i)) => Ok(Object::Primitive(Primitive::Float(-i))), [INFO] [stderr] 100 | _ => Err(String::from("Internal Interpreter Error: Attempted to unary subtract incompatible type")) [INFO] [stderr] 101 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/object.rs:105:9 [INFO] [stderr] | [INFO] [stderr] 105 | / return match (self, other) { [INFO] [stderr] 106 | | (Object::Primitive(Primitive::Boolean(left)), Object::Primitive(Primitive::Boolean(right))) [INFO] [stderr] 107 | | => Ok(Object::Primitive(Primitive::Boolean(*left && *right))), [INFO] [stderr] 108 | | _ => Err(String::from("Internal Interpreter Error: Attempted to boolean 'and' incompatible types")) [INFO] [stderr] 109 | | }; [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] 105 | match (self, other) { [INFO] [stderr] 106 | (Object::Primitive(Primitive::Boolean(left)), Object::Primitive(Primitive::Boolean(right))) [INFO] [stderr] 107 | => Ok(Object::Primitive(Primitive::Boolean(*left && *right))), [INFO] [stderr] 108 | _ => Err(String::from("Internal Interpreter Error: Attempted to boolean 'and' incompatible types")) [INFO] [stderr] 109 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/object.rs:113:9 [INFO] [stderr] | [INFO] [stderr] 113 | / return match (self, other) { [INFO] [stderr] 114 | | (Object::Primitive(Primitive::Boolean(left)), Object::Primitive(Primitive::Boolean(right))) [INFO] [stderr] 115 | | => Ok(Object::Primitive(Primitive::Boolean(*left || *right))), [INFO] [stderr] 116 | | _ => Err(String::from("Internal Interpreter Error: Attempted to boolean 'or' incompatible types")) [INFO] [stderr] 117 | | }; [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] 113 | match (self, other) { [INFO] [stderr] 114 | (Object::Primitive(Primitive::Boolean(left)), Object::Primitive(Primitive::Boolean(right))) [INFO] [stderr] 115 | => Ok(Object::Primitive(Primitive::Boolean(*left || *right))), [INFO] [stderr] 116 | _ => Err(String::from("Internal Interpreter Error: Attempted to boolean 'or' incompatible types")) [INFO] [stderr] 117 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/object.rs:121:9 [INFO] [stderr] | [INFO] [stderr] 121 | / return match self { [INFO] [stderr] 122 | | Object::Primitive(Primitive::Boolean(b)) => Ok(Object::Primitive(Primitive::Boolean(!b))), [INFO] [stderr] 123 | | _ => Err(String::from("Internal Interpreter Error: Attempted to boolean negate incompatible type")) [INFO] [stderr] 124 | | }; [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] 121 | match self { [INFO] [stderr] 122 | Object::Primitive(Primitive::Boolean(b)) => Ok(Object::Primitive(Primitive::Boolean(!b))), [INFO] [stderr] 123 | _ => Err(String::from("Internal Interpreter Error: Attempted to boolean negate incompatible type")) [INFO] [stderr] 124 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/object.rs:128:9 [INFO] [stderr] | [INFO] [stderr] 128 | / return match (self, other) { [INFO] [stderr] 129 | | (Object::Primitive(Primitive::Integer(left)), Object::Primitive(Primitive::Integer(right))) [INFO] [stderr] 130 | | => Ok(Object::Primitive(Primitive::Boolean(left < right))), [INFO] [stderr] 131 | | (Object::Primitive(Primitive::Float(left)), Object::Primitive(Primitive::Float(right))) [INFO] [stderr] 132 | | => Ok(Object::Primitive(Primitive::Boolean(left < right))), [INFO] [stderr] 133 | | _ => Err(String::from("Internal Interpreter Error: Attempted to compare 'less than' with incompatible types")) [INFO] [stderr] 134 | | }; [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] 128 | match (self, other) { [INFO] [stderr] 129 | (Object::Primitive(Primitive::Integer(left)), Object::Primitive(Primitive::Integer(right))) [INFO] [stderr] 130 | => Ok(Object::Primitive(Primitive::Boolean(left < right))), [INFO] [stderr] 131 | (Object::Primitive(Primitive::Float(left)), Object::Primitive(Primitive::Float(right))) [INFO] [stderr] 132 | => Ok(Object::Primitive(Primitive::Boolean(left < right))), [INFO] [stderr] 133 | _ => Err(String::from("Internal Interpreter Error: Attempted to compare 'less than' with incompatible types")) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/object.rs:138:9 [INFO] [stderr] | [INFO] [stderr] 138 | / return match (self, other) { [INFO] [stderr] 139 | | (Object::Primitive(Primitive::Integer(left)), Object::Primitive(Primitive::Integer(right))) [INFO] [stderr] 140 | | => Ok(Object::Primitive(Primitive::Boolean(left <= right))), [INFO] [stderr] 141 | | (Object::Primitive(Primitive::Float(left)), Object::Primitive(Primitive::Float(right))) [INFO] [stderr] 142 | | => Ok(Object::Primitive(Primitive::Boolean(left <= right))), [INFO] [stderr] 143 | | _ => Err(String::from("Internal Interpreter Error: Attempted to compare 'less than or equal' with incompatible types")) [INFO] [stderr] 144 | | }; [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] 138 | match (self, other) { [INFO] [stderr] 139 | (Object::Primitive(Primitive::Integer(left)), Object::Primitive(Primitive::Integer(right))) [INFO] [stderr] 140 | => Ok(Object::Primitive(Primitive::Boolean(left <= right))), [INFO] [stderr] 141 | (Object::Primitive(Primitive::Float(left)), Object::Primitive(Primitive::Float(right))) [INFO] [stderr] 142 | => Ok(Object::Primitive(Primitive::Boolean(left <= right))), [INFO] [stderr] 143 | _ => Err(String::from("Internal Interpreter Error: Attempted to compare 'less than or equal' with incompatible types")) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/object.rs:148:9 [INFO] [stderr] | [INFO] [stderr] 148 | / return match (self, other) { [INFO] [stderr] 149 | | (Object::Primitive(Primitive::Integer(left)), Object::Primitive(Primitive::Integer(right))) [INFO] [stderr] 150 | | => Ok(Object::Primitive(Primitive::Boolean(left > right))), [INFO] [stderr] 151 | | (Object::Primitive(Primitive::Float(left)), Object::Primitive(Primitive::Float(right))) [INFO] [stderr] 152 | | => Ok(Object::Primitive(Primitive::Boolean(left > right))), [INFO] [stderr] 153 | | _ => Err(String::from("Internal Interpreter Error: Attempted to compare 'greater than' with incompatible types")) [INFO] [stderr] 154 | | }; [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] 148 | match (self, other) { [INFO] [stderr] 149 | (Object::Primitive(Primitive::Integer(left)), Object::Primitive(Primitive::Integer(right))) [INFO] [stderr] 150 | => Ok(Object::Primitive(Primitive::Boolean(left > right))), [INFO] [stderr] 151 | (Object::Primitive(Primitive::Float(left)), Object::Primitive(Primitive::Float(right))) [INFO] [stderr] 152 | => Ok(Object::Primitive(Primitive::Boolean(left > right))), [INFO] [stderr] 153 | _ => Err(String::from("Internal Interpreter Error: Attempted to compare 'greater than' with incompatible types")) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/object.rs:158:9 [INFO] [stderr] | [INFO] [stderr] 158 | / return match (self, other) { [INFO] [stderr] 159 | | (Object::Primitive(Primitive::Integer(left)), Object::Primitive(Primitive::Integer(right))) [INFO] [stderr] 160 | | => Ok(Object::Primitive(Primitive::Boolean(left >= right))), [INFO] [stderr] 161 | | (Object::Primitive(Primitive::Float(left)), Object::Primitive(Primitive::Float(right))) [INFO] [stderr] 162 | | => Ok(Object::Primitive(Primitive::Boolean(left >= right))), [INFO] [stderr] 163 | | _ => Err(String::from("Internal Interpreter Error: Attempted to compare 'greater than or equal' with incompatible types")) [INFO] [stderr] 164 | | }; [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] 158 | match (self, other) { [INFO] [stderr] 159 | (Object::Primitive(Primitive::Integer(left)), Object::Primitive(Primitive::Integer(right))) [INFO] [stderr] 160 | => Ok(Object::Primitive(Primitive::Boolean(left >= right))), [INFO] [stderr] 161 | (Object::Primitive(Primitive::Float(left)), Object::Primitive(Primitive::Float(right))) [INFO] [stderr] 162 | => Ok(Object::Primitive(Primitive::Boolean(left >= right))), [INFO] [stderr] 163 | _ => Err(String::from("Internal Interpreter Error: Attempted to compare 'greater than or equal' with incompatible types")) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/object.rs:168:9 [INFO] [stderr] | [INFO] [stderr] 168 | / return match (self, other) { [INFO] [stderr] 169 | | (Object::Primitive(Primitive::Integer(left)), Object::Primitive(Primitive::Integer(right))) [INFO] [stderr] 170 | | => Ok(Object::Primitive(Primitive::Boolean(left == right))), [INFO] [stderr] 171 | | (Object::Primitive(Primitive::Float(left)), Object::Primitive(Primitive::Float(right))) [INFO] [stderr] 172 | | => Ok(Object::Primitive(Primitive::Boolean(left == right))), [INFO] [stderr] 173 | | _ => Err(String::from("Internal Interpreter Error: Attempted to compare 'equal' with incompatible types")) [INFO] [stderr] 174 | | }; [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] 168 | match (self, other) { [INFO] [stderr] 169 | (Object::Primitive(Primitive::Integer(left)), Object::Primitive(Primitive::Integer(right))) [INFO] [stderr] 170 | => Ok(Object::Primitive(Primitive::Boolean(left == right))), [INFO] [stderr] 171 | (Object::Primitive(Primitive::Float(left)), Object::Primitive(Primitive::Float(right))) [INFO] [stderr] 172 | => Ok(Object::Primitive(Primitive::Boolean(left == right))), [INFO] [stderr] 173 | _ => Err(String::from("Internal Interpreter Error: Attempted to compare 'equal' with incompatible types")) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/object.rs:178:9 [INFO] [stderr] | [INFO] [stderr] 178 | / return match (self, other) { [INFO] [stderr] 179 | | (Object::Primitive(Primitive::Integer(left)), Object::Primitive(Primitive::Integer(right))) [INFO] [stderr] 180 | | => Ok(Object::Primitive(Primitive::Boolean(left != right))), [INFO] [stderr] 181 | | (Object::Primitive(Primitive::Float(left)), Object::Primitive(Primitive::Float(right))) [INFO] [stderr] 182 | | => Ok(Object::Primitive(Primitive::Boolean(left != right))), [INFO] [stderr] 183 | | _ => Err(String::from("Internal Interpreter Error: Attempted to compare 'not equal' with incompatible types")) [INFO] [stderr] 184 | | }; [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] 178 | match (self, other) { [INFO] [stderr] 179 | (Object::Primitive(Primitive::Integer(left)), Object::Primitive(Primitive::Integer(right))) [INFO] [stderr] 180 | => Ok(Object::Primitive(Primitive::Boolean(left != right))), [INFO] [stderr] 181 | (Object::Primitive(Primitive::Float(left)), Object::Primitive(Primitive::Float(right))) [INFO] [stderr] 182 | => Ok(Object::Primitive(Primitive::Boolean(left != right))), [INFO] [stderr] 183 | _ => Err(String::from("Internal Interpreter Error: Attempted to compare 'not equal' with incompatible types")) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/object.rs:191:9 [INFO] [stderr] | [INFO] [stderr] 191 | / return match self { [INFO] [stderr] 192 | | Object::Unit => write!(f, ""), [INFO] [stderr] 193 | | Object::Primitive(primitive) => write!(f, "{:?}", primitive), [INFO] [stderr] 194 | | Object::Procedure(name, variables, _) => write!(f, "Procedure<{}, {:?}>", name, variables), [INFO] [stderr] ... | [INFO] [stderr] 202 | | Object::BuiltInFunction(BuiltInFunction::StringToReal(_)) => write!(f, "BuiltInFunction Real>") [INFO] [stderr] 203 | | }; [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] 191 | match self { [INFO] [stderr] 192 | Object::Unit => write!(f, ""), [INFO] [stderr] 193 | Object::Primitive(primitive) => write!(f, "{:?}", primitive), [INFO] [stderr] 194 | Object::Procedure(name, variables, _) => write!(f, "Procedure<{}, {:?}>", name, variables), [INFO] [stderr] 195 | Object::Function(name, variables, _, return_type) => write!(f, "Function<{}, {:?} -> {:?}>", name, variables, return_type), [INFO] [stderr] 196 | Object::BuiltInFunction(BuiltInFunction::Write(_)) => write!(f, "BuiltInFunction ()>"), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/built_ins.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | return Ok(Object::Unit); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Object::Unit)` [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/interpreter/built_ins.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 16 | return Ok(Object::Unit); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Object::Unit)` [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/interpreter/built_ins.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | / return match io::stdin().read_line(&mut buffer) { [INFO] [stderr] 22 | | Ok(_) => Ok(Object::Primitive(Primitive::String(buffer))), [INFO] [stderr] 23 | | Err(e) => Err(String::from(e.description())) [INFO] [stderr] 24 | | }; [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] 21 | match io::stdin().read_line(&mut buffer) { [INFO] [stderr] 22 | Ok(_) => Ok(Object::Primitive(Primitive::String(buffer))), [INFO] [stderr] 23 | Err(e) => Err(String::from(e.description())) [INFO] [stderr] 24 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/built_ins.rs:28:5 [INFO] [stderr] | [INFO] [stderr] 28 | return Ok(Object::Primitive(Primitive::String(value.to_string()))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Object::Primitive(Primitive::String(value.to_string())))` [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/interpreter/built_ins.rs:32:5 [INFO] [stderr] | [INFO] [stderr] 32 | return Ok(Object::Primitive(Primitive::String(value.to_string()))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(Object::Primitive(Primitive::String(value.to_string())))` [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/interpreter/built_ins.rs:36:5 [INFO] [stderr] | [INFO] [stderr] 36 | / return match text.trim().parse::() { [INFO] [stderr] 37 | | Ok(num) => Ok(Object::Primitive(Primitive::Integer(num))), [INFO] [stderr] 38 | | Err(_) => Err(String::from("Could not convert string to integer")) [INFO] [stderr] 39 | | }; [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] 36 | match text.trim().parse::() { [INFO] [stderr] 37 | Ok(num) => Ok(Object::Primitive(Primitive::Integer(num))), [INFO] [stderr] 38 | Err(_) => Err(String::from("Could not convert string to integer")) [INFO] [stderr] 39 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter/built_ins.rs:43:5 [INFO] [stderr] | [INFO] [stderr] 43 | / return match text.trim().parse::() { [INFO] [stderr] 44 | | Ok(num) => Ok(Object::Primitive(Primitive::Float(num))), [INFO] [stderr] 45 | | Err(_) => Err(String::from("Could not convert string to real")) [INFO] [stderr] 46 | | }; [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] 43 | match text.trim().parse::() { [INFO] [stderr] 44 | Ok(num) => Ok(Object::Primitive(Primitive::Float(num))), [INFO] [stderr] 45 | Err(_) => Err(String::from("Could not convert string to real")) [INFO] [stderr] 46 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/rascal/mod.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | mod rascal; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: use of `writeln!(stderr(), ...).unwrap()`. Consider using `eprintln!` instead [INFO] [stderr] --> src/lexer/lexer.rs:40:21 [INFO] [stderr] | [INFO] [stderr] 40 | writeln!(io::stderr(), "{}", error).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_write)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lexer/lexer.rs:73:50 [INFO] [stderr] | [INFO] [stderr] 73 | Some(c) => Err(String::from(format!("Lexer Error: Expected floating point number at: {}.{}", integer, c))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Lexer Error: Expected floating point number at: {}.{}", integer, c)` [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: identical conversion [INFO] [stderr] --> src/lexer/lexer.rs:74:50 [INFO] [stderr] | [INFO] [stderr] 74 | None => Err(String::from(format!("Lexer Error: Expected floating point number at: {}.", integer))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Lexer Error: Expected floating point number at: {}.", integer)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:73:48 [INFO] [stderr] | [INFO] [stderr] 73 | _ => Err(String::from(format!("Expression Parse Error at token {:?}", token))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Expression Parse Error at token {:?}", token)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:93:51 [INFO] [stderr] | [INFO] [stderr] 93 | _ => Err(String::from(format!("Expression Parse Error at token {:?}", token))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Expression Parse Error at token {:?}", token)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:117:38 [INFO] [stderr] | [INFO] [stderr] 117 | _ => Err(String::from(format!("Program Parse Error at {:?}: Expected token {:?}", variable, Token::SEMI))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Program Parse Error at {:?}: Expected token {:?}", variable, Token::SEMI)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:122:37 [INFO] [stderr] | [INFO] [stderr] 122 | _ => Err(String::from(format!("Program Parse Error: Expected token {:?}", Token::DOT))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Program Parse Error: Expected token {:?}", Token::DOT)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parser/parser.rs:149:16 [INFO] [stderr] | [INFO] [stderr] 149 | if variable_declarations.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!variable_declarations.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: identical conversion [INFO] [stderr] --> src/parser/parser.rs:152:28 [INFO] [stderr] | [INFO] [stderr] 152 | return Err(String::from(format!("Declarations Parse Error: Expected at least one variable declaration after token {:?}", Token::VAR))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Declarations Parse Error: Expected at least one variable declaration after token {:?}", Token::VAR)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parser/parser.rs:167:12 [INFO] [stderr] | [INFO] [stderr] 167 | if procedure_declarations.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!procedure_declarations.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/parser/parser.rs:171:12 [INFO] [stderr] | [INFO] [stderr] 171 | if function_declarations.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!function_declarations.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: identical conversion [INFO] [stderr] --> src/parser/parser.rs:193:42 [INFO] [stderr] | [INFO] [stderr] 193 | _ => Err(String::from(format!("Variable Declaration Parse Error: Expected id token"))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Variable Declaration Parse Error: Expected id token")` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/parser/parser.rs:193:55 [INFO] [stderr] | [INFO] [stderr] 193 | _ => Err(String::from(format!("Variable Declaration Parse Error: Expected id token"))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Variable Declaration Parse Error: Expected id token".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] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:204:46 [INFO] [stderr] | [INFO] [stderr] 204 | _ => Err(String::from(format!("Variable Declaration Parse Error: Expected id token after token {:?}", Token::COMMA))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Variable Declaration Parse Error: Expected id token after token {:?}", Token::COMMA)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:211:55 [INFO] [stderr] | [INFO] [stderr] 211 | (type_spec, _) => Err(String::from(format!("Variable Declaration Parse Error: Expected {:?} token after {:?}", Token::SEMI, type_spec))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Variable Declaration Parse Error: Expected {:?} token after {:?}", Token::SEMI, type_spec)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:213:39 [INFO] [stderr] | [INFO] [stderr] 213 | _ => Err(String::from(format!("Variable Declaration Parse Error: Expected {:?} token after declared variables", Token::COLON))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Variable Declaration Parse Error: Expected {:?} token after declared variables", Token::COLON)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:226:41 [INFO] [stderr] | [INFO] [stderr] 226 | _ => Err(String::from(format!("TypeSpec Parse Error: Expected one of {:?}", vec![TypeSpec::INTEGER, TypeSpec::REAL, TypeSpec::STRING, TypeSpec::BOOLEAN]))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("TypeSpec Parse Error: Expected one of {:?}", vec![TypeSpec::INTEGER, TypeSpec::REAL, TypeSpec::STRING, TypeSpec::BOOLEAN])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:236:68 [INFO] [stderr] | [INFO] [stderr] 236 | _ => Err(String::from(format!("Procedure Declaration Parse Error: Expected {:?} ", Token::PROCEDURE))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Procedure Declaration Parse Error: Expected {:?} ", Token::PROCEDURE)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:251:38 [INFO] [stderr] | [INFO] [stderr] 251 | _ => Err(String::from(format!("Procedure Declaration Parse Error: Expected token {:?} after {:?}", Token::SEMI, parameters))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Procedure Declaration Parse Error: Expected token {:?} after {:?}", Token::SEMI, parameters)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:263:67 [INFO] [stderr] | [INFO] [stderr] 263 | _ => Err(String::from(format!("Function Declaration Parse Error: Expected {:?} ", Token::FUNCTION))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Function Declaration Parse Error: Expected {:?} ", Token::FUNCTION)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:274:39 [INFO] [stderr] | [INFO] [stderr] 274 | _ => Err(String::from(format!("Function Declaration Parse Error: Expected {:?} after {:?}", Token::COLON, parameters))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Function Declaration Parse Error: Expected {:?} after {:?}", Token::COLON, parameters)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:278:38 [INFO] [stderr] | [INFO] [stderr] 278 | _ => Err(String::from(format!("Function Declaration Parse Error: Expected {:?} after {:?}", Token::SEMI, return_type))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Function Declaration Parse Error: Expected {:?} after {:?}", Token::SEMI, return_type)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:315:42 [INFO] [stderr] | [INFO] [stderr] 315 | token => Err(String::from(format!("Formal Parameters Parse Error: Expected id token, got token {:?}", token))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Formal Parameters Parse Error: Expected id token, got token {:?}", token)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:326:46 [INFO] [stderr] | [INFO] [stderr] 326 | _ => Err(String::from(format!("Formal Parameters Parse Error: Expected id token after {:?}", Token::COMMA))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Formal Parameters Parse Error: Expected id token after {:?}", Token::COMMA)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:332:39 [INFO] [stderr] | [INFO] [stderr] 332 | _ => Err(String::from(format!("Formal Parameters Parse Error: Expected token {:?} after parameter identifiers", Token::COLON))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Formal Parameters Parse Error: Expected token {:?} after parameter identifiers", Token::COLON)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:344:39 [INFO] [stderr] | [INFO] [stderr] 344 | _ => Err(String::from(format!("Compound Statement Parse Error: Expected token {:?}", Token::BEGIN))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Compound Statement Parse Error: Expected token {:?}", Token::BEGIN)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:379:50 [INFO] [stderr] | [INFO] [stderr] 379 | (expr, _) => Err(String::from(format!("If Statement Parse Error: Expected token {:?} after {:?}", Token::THEN, expr))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("If Statement Parse Error: Expected token {:?} after {:?}", Token::THEN, expr)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:381:36 [INFO] [stderr] | [INFO] [stderr] 381 | _ => Err(String::from(format!("If statement Parse Error: Expected token {:?}", Token::IF))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("If statement Parse Error: Expected token {:?}", Token::IF)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:403:50 [INFO] [stderr] | [INFO] [stderr] 403 | (expr, _) => Err(String::from(format!("Assignment Statement Parse Error: Expected {:?} after {:?}", Token::SEMI, expr))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Assignment Statement Parse Error: Expected {:?} after {:?}", Token::SEMI, expr)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:405:47 [INFO] [stderr] | [INFO] [stderr] 405 | (var, _) => Err(String::from(format!("Assignment Statement Parse Error: Expected {:?} after {:?}", Token::ASSIGN, var))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Assignment Statement Parse Error: Expected {:?} after {:?}", Token::ASSIGN, var)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:425:52 [INFO] [stderr] | [INFO] [stderr] 425 | (variable, _) => Err(String::from(format!("Function Call Parse Error: Expected token {:?} after {:?}", Token::LPAREN, variable))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Function Call Parse Error: Expected token {:?} after {:?}", Token::LPAREN, variable)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:430:78 [INFO] [stderr] | [INFO] [stderr] 430 | (call_parameters, _, _) => Err(String::from(format!("Function Call Parse Error: Expected tokens {:?} {:?} after {:?}", Token::RPAREN, Token::SEMI, call_parameters))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Function Call Parse Error: Expected tokens {:?} {:?} after {:?}", Token::RPAREN, Token::SEMI, call_parameters)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/parser/parser.rs:454:39 [INFO] [stderr] | [INFO] [stderr] 454 | let token = self.lexer.next().ok_or(String::from("Expression Parse Error: Expected a token, found none"))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| String::from("Expression Parse Error: Expected a token, found none"))` [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: use of `ok_or` followed by a function call [INFO] [stderr] --> src/parser/parser.rs:460:43 [INFO] [stderr] | [INFO] [stderr] 460 | let token = self.lexer.next().ok_or(String::from("Expression Parse Error: Expected a token, found none"))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| String::from("Expression Parse Error: Expected a token, found none"))` [INFO] [stderr] | [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: identical conversion [INFO] [stderr] --> src/parser/parser.rs:474:37 [INFO] [stderr] | [INFO] [stderr] 474 | Some(token) => Err(String::from(format!("Parse Error: Expected {:?} token, found token {:?}", Token::EOF, token))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Parse Error: Expected {:?} token, found token {:?}", Token::EOF, token)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:475:37 [INFO] [stderr] | [INFO] [stderr] 475 | None => Err(String::from(format!("Parse Error: Expected {:?} token, found None", Token::EOF))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Parse Error: Expected {:?} token, found None", Token::EOF)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parselet.rs:59:52 [INFO] [stderr] | [INFO] [stderr] 59 | (expr, _) => Err(String::from(format!("Grouping Parse Error: Expected token {:?} after {:?}", Token::RPAREN, expr))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Grouping Parse Error: Expected token {:?} after {:?}", Token::RPAREN, expr)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parselet.rs:61:34 [INFO] [stderr] | [INFO] [stderr] 61 | _ => Err(String::from(format!("Grouping Parse Error: Expected token {:?}", Token::LPAREN))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Grouping Parse Error: Expected token {:?}", Token::LPAREN)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parselet.rs:77:34 [INFO] [stderr] | [INFO] [stderr] 77 | _ => Err(String::from(format!("Unary Op Parse Error: Expected one of {:?}", vec![Token::PLUS, Token::MINUS, Token::NOT]))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Unary Op Parse Error: Expected one of {:?}", vec![Token::PLUS, Token::MINUS, Token::NOT])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parselet.rs:116:17 [INFO] [stderr] | [INFO] [stderr] 116 | / String::from(format!("Binary Op Parse Error: Expected one of {:?}", vec![ [INFO] [stderr] 117 | | Token::PLUS, Token::MINUS, Token::MULTIPLY, Token::INTEGER_DIV, Token::FLOAT_DIV, Token::AND, [INFO] [stderr] 118 | | Token::OR, Token::LESS_THAN, Token::LESS_THAN_OR_EQUAL, Token::GREATER_THAN, Token::GREATER_THAN_OR_EQUAL, [INFO] [stderr] 119 | | Token::EQUAL, Token::NOT_EQUAL [INFO] [stderr] 120 | | ])) [INFO] [stderr] | |___________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] help: consider removing `String::from()` [INFO] [stderr] | [INFO] [stderr] 116 | format!("Binary Op Parse Error: Expected one of {:?}", vec![ [INFO] [stderr] 117 | Token::PLUS, Token::MINUS, Token::MULTIPLY, Token::INTEGER_DIV, Token::FLOAT_DIV, Token::AND, [INFO] [stderr] 118 | Token::OR, Token::LESS_THAN, Token::LESS_THAN_OR_EQUAL, Token::GREATER_THAN, Token::GREATER_THAN_OR_EQUAL, [INFO] [stderr] 119 | Token::EQUAL, Token::NOT_EQUAL [INFO] [stderr] 120 | ]) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parselet.rs:131:58 [INFO] [stderr] | [INFO] [stderr] 131 | (parameters, _) => Err(String::from(format!("Function Call Parse Error: Expected token {:?} after {:?}", Token::RPAREN, parameters))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Function Call Parse Error: Expected token {:?} after {:?}", Token::RPAREN, parameters)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parselet.rs:133:58 [INFO] [stderr] | [INFO] [stderr] 133 | (_, _) => Err(String::from(format!("Function Call Parse Error: Expected variable token and {:?}", Token::LPAREN))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Function Call Parse Error: Expected variable token and {:?}", Token::LPAREN)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: use of `writeln!(stderr(), ...).unwrap()`. Consider using `eprintln!` instead [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:53:13 [INFO] [stderr] | [INFO] [stderr] 53 | writeln!(io::stderr(), "{}", error).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [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/analyzer/semantic_analyzer.rs:94:48 [INFO] [stderr] | [INFO] [stderr] 94 | pub fn visit_declarations(&mut self, node: &Vec) -> Result<(), String> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: change this to: `&[Declarations]` [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: identical conversion [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:156:67 [INFO] [stderr] | [INFO] [stderr] 156 | (actual, expected) => Err(String::from( [INFO] [stderr] | ___________________________________________________________________^ [INFO] [stderr] 157 | | format!("Semantic Analyzer Error: Mismatching return types in function '{:?}'. Declared return type of {:?}, actual return type of {:?}", name, expected, actual) [INFO] [stderr] 158 | | )) [INFO] [stderr] | |_____________________^ help: consider removing `String::from()`: `format!("Semantic Analyzer Error: Mismatching return types in function '{:?}'. Declared return type of {:?}, actual return type of {:?}", name, expected, actual)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:186:41 [INFO] [stderr] | [INFO] [stderr] 186 | TypeSpec::INTEGER => Ok(names.iter().for_each(|name| vars.push(VarSymbol::INTEGER(name.to_owned())))), [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] 186 | TypeSpec::INTEGER => Ok(()), [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:187:41 [INFO] [stderr] | [INFO] [stderr] 187 | TypeSpec::REAL => Ok(names.iter().for_each(|name| vars.push(VarSymbol::REAL(name.to_owned())))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [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] 187 | TypeSpec::REAL => Ok(()), [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:188:41 [INFO] [stderr] | [INFO] [stderr] 188 | TypeSpec::STRING => Ok(names.iter().for_each(|name| vars.push(VarSymbol::STRING(name.to_owned())))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [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] 188 | TypeSpec::STRING => Ok(()), [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:189:41 [INFO] [stderr] | [INFO] [stderr] 189 | TypeSpec::BOOLEAN => Ok(names.iter().for_each(|name| vars.push(VarSymbol::BOOLEAN(name.to_owned())))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [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] 189 | TypeSpec::BOOLEAN => Ok(()), [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:202:40 [INFO] [stderr] | [INFO] [stderr] 202 | Some(_) => Err(String::from(format!("Semantic Analyzer Error: Variable declared more than once: {}", name))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Semantic Analyzer Error: Variable declared more than once: {}", name)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:204:53 [INFO] [stderr] | [INFO] [stderr] 204 | TypeSpec::INTEGER => Ok(self.scope()?.define(Symbol::Var(VarSymbol::INTEGER(name.to_owned())))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [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] 204 | TypeSpec::INTEGER => Ok(()), [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:205:53 [INFO] [stderr] | [INFO] [stderr] 205 | TypeSpec::REAL => Ok(self.scope()?.define(Symbol::Var(VarSymbol::REAL(name.to_owned())))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [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] 205 | TypeSpec::REAL => Ok(()), [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:206:53 [INFO] [stderr] | [INFO] [stderr] 206 | TypeSpec::STRING => Ok(self.scope()?.define(Symbol::Var(VarSymbol::STRING(name.to_owned())))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [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] 206 | TypeSpec::STRING => Ok(()), [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:207:53 [INFO] [stderr] | [INFO] [stderr] 207 | TypeSpec::BOOLEAN => Ok(self.scope()?.define(Symbol::Var(VarSymbol::BOOLEAN(name.to_owned())))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [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] 207 | TypeSpec::BOOLEAN => Ok(()), [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:279:42 [INFO] [stderr] | [INFO] [stderr] 279 | None => Err(String::from(format!("Semantic Analyzer Error: Variable {} was never defined", name))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Semantic Analyzer Error: Variable {} was never defined", name)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:287:84 [INFO] [stderr] | [INFO] [stderr] 287 | (Symbol::Var(var_symbol), TypeSpec::UNIT) => Err(String::from(format!("Semantic Analyzer Error: Attempted to assign {:?} to a statement with no return type", var_symbol))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Semantic Analyzer Error: Attempted to assign {:?} to a statement with no return type", var_symbol)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:288:84 [INFO] [stderr] | [INFO] [stderr] 288 | (Symbol::Var(var_symbol), type_spec) => Err(String::from(format!("Semantic Analyzer Error: Mismatched Types, Attempted to assign {:?} to {:?}", type_spec, var_symbol))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Semantic Analyzer Error: Mismatched Types, Attempted to assign {:?} to {:?}", type_spec, var_symbol)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:289:84 [INFO] [stderr] | [INFO] [stderr] 289 | (Symbol::Callable(callable), _) => Err(String::from(format!("Semantic Analyzer Error: Attempted to assign expression to callable {:?}", callable))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Semantic Analyzer Error: Attempted to assign expression to callable {:?}", callable)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:300:61 [INFO] [stderr] | [INFO] [stderr] 300 | _ => Err(String::from(format!("Semantic Analyzer Error: Unknown callable '{:?}'", name))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Semantic Analyzer Error: Unknown callable '{:?}'", name)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:315:79 [INFO] [stderr] | [INFO] [stderr] 315 | (expected, actual) => Err(String::from(format!("Semantic Analyzer Error: Callable expected parameter of type {:?}, but {:?} was given", expected, actual))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Semantic Analyzer Error: Callable expected parameter of type {:?}, but {:?} was given", expected, actual)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:323:25 [INFO] [stderr] | [INFO] [stderr] 323 | Err(String::from(format!("Semantic Analyzer Error: Callable {:?} expected {:?} arguments, but {:?} were given", callable, declared_params.len(), given_params.len()))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Semantic Analyzer Error: Callable {:?} expected {:?} arguments, but {:?} were given", callable, declared_params.len(), given_params.len())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:363:70 [INFO] [stderr] | [INFO] [stderr] 363 | (operator, type_spec) => Err(String::from( [INFO] [stderr] | ______________________________________________________________________^ [INFO] [stderr] 364 | | format!("Semantic Analyzer Error: Attempted to use unary operator {:?} with incompatible type {:?}", operator, type_spec) [INFO] [stderr] 365 | | )) [INFO] [stderr] | |_____________________^ help: consider removing `String::from()`: `format!("Semantic Analyzer Error: Attempted to use unary operator {:?} with incompatible type {:?}", operator, type_spec)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 30 [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:370:5 [INFO] [stderr] | [INFO] [stderr] 370 | / pub fn visit_binop(&mut self, expr: &BinaryOpExpr) -> Result { [INFO] [stderr] 371 | | return match expr { [INFO] [stderr] 372 | | BinaryOpExpr(left, operator, right) => [INFO] [stderr] 373 | | match (self.visit_expr(left)?, operator, self.visit_expr(right)?) { [INFO] [stderr] ... | [INFO] [stderr] 406 | | }; [INFO] [stderr] 407 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:400:104 [INFO] [stderr] | [INFO] [stderr] 400 | (TypeSpec::INTEGER, operator, TypeSpec::INTEGER) => Err(String::from(format!("Semantic Analyzer Error: Binary operator {:?} is incompatible with {:?} types", operator, TypeSpec::INTEGER))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Semantic Analyzer Error: Binary operator {:?} is incompatible with {:?} types", operator, TypeSpec::INTEGER)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:401:104 [INFO] [stderr] | [INFO] [stderr] 401 | (TypeSpec::REAL, operator, TypeSpec::REAL) => Err(String::from(format!("Semantic Analyzer Error: Binary operator {:?} is incompatible with {:?} types", operator, TypeSpec::REAL))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Semantic Analyzer Error: Binary operator {:?} is incompatible with {:?} types", operator, TypeSpec::REAL)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:402:104 [INFO] [stderr] | [INFO] [stderr] 402 | (TypeSpec::STRING, operator, TypeSpec::STRING) => Err(String::from(format!("Semantic Analyzer Error: Binary operator {:?} is incompatible with {:?} types", operator, TypeSpec::STRING))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Semantic Analyzer Error: Binary operator {:?} is incompatible with {:?} types", operator, TypeSpec::STRING)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:403:104 [INFO] [stderr] | [INFO] [stderr] 403 | (TypeSpec::BOOLEAN, operator, TypeSpec::BOOLEAN) => Err(String::from(format!("Semantic Analyzer Error: Binary operator {:?} is incompatible with {:?} types", operator, TypeSpec::BOOLEAN))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Semantic Analyzer Error: Binary operator {:?} is incompatible with {:?} types", operator, TypeSpec::BOOLEAN)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:404:104 [INFO] [stderr] | [INFO] [stderr] 404 | (type_spec_left, operator, type_spec_right) => Err(String::from(format!("Semantic Analyzer Error: Attempted to use binary operator {:?} with mismatching types {:?} and {:?}", operator, type_spec_left, type_spec_right))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Semantic Analyzer Error: Attempted to use binary operator {:?} with mismatching types {:?} and {:?}", operator, type_spec_left, type_spec_right)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:433:67 [INFO] [stderr] | [INFO] [stderr] 433 | Symbol::Callable(callable) => Err(String::from(format!("Semantic Analyzer Error: Attempted to use callable {:?} as a variable", callable))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Semantic Analyzer Error: Attempted to use callable {:?} as a variable", callable)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:435:41 [INFO] [stderr] | [INFO] [stderr] 435 | None => Err(String::from(format!("Semantic Analyzer Error: Unknown variable with name {}", name))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Semantic Analyzer Error: Unknown variable with name {}", name)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/analyzer/symbol_table.rs:37:36 [INFO] [stderr] | [INFO] [stderr] 37 | pub fn lookup(&mut self, name: &String) -> Option<&Symbol> { [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/analyzer/symbol_table.rs:49:42 [INFO] [stderr] | [INFO] [stderr] 49 | pub fn local_lookup(&mut self, name: &String) -> Option<&Symbol> { [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: use of `writeln!(stderr(), ...).unwrap()`. Consider using `eprintln!` instead [INFO] [stderr] --> src/interpreter/interpreter.rs:52:13 [INFO] [stderr] | [INFO] [stderr] 52 | writeln!(io::stderr(), "{}", error).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [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/interpreter.rs:93:48 [INFO] [stderr] | [INFO] [stderr] 93 | pub fn visit_declarations(&mut self, node: &Vec) -> Result<(), String> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: change this to: `&[Declarations]` [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 function has a cyclomatic complexity of 38 [INFO] [stderr] --> src/interpreter/interpreter.rs:220:5 [INFO] [stderr] | [INFO] [stderr] 220 | / pub fn visit_function_call(&mut self, node: &FunctionCall) -> Result { [INFO] [stderr] 221 | | return match node { [INFO] [stderr] 222 | | FunctionCall(Variable(function_name), CallParameters(given_parameters)) => { [INFO] [stderr] 223 | | let callable = match self.scope()?.get(function_name) { [INFO] [stderr] ... | [INFO] [stderr] 275 | | }; [INFO] [stderr] 276 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/interpreter/interpreter.rs:227:94 [INFO] [stderr] | [INFO] [stderr] 227 | _ => Err(String::from(format!("Internal Interpreter Error: Expected a callable with the name '{:?}'", function_name))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Internal Interpreter Error: Expected a callable with the name '{:?}'", function_name)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/interpreter/interpreter.rs:272:71 [INFO] [stderr] | [INFO] [stderr] 272 | _ => Err(String::from(format!("Internal Interpreter Error: Expected {:?} to be a callable", callable))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Internal Interpreter Error: Expected {:?} to be a callable", callable)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 52 [INFO] [stderr] --> src/interpreter/interpreter.rs:297:5 [INFO] [stderr] | [INFO] [stderr] 297 | / pub fn visit_binop(&mut self, node: &BinaryOpExpr) -> Result { [INFO] [stderr] 298 | | return match node { [INFO] [stderr] 299 | | BinaryOpExpr(left, BinaryOperator::Plus, right) => Ok(self.visit_expr(left)?.add(&self.visit_expr(right)?)?), [INFO] [stderr] 300 | | BinaryOpExpr(left, BinaryOperator::Minus, right) => Ok(self.visit_expr(left)?.subtract(&self.visit_expr(right)?)?), [INFO] [stderr] ... | [INFO] [stderr] 312 | | }; [INFO] [stderr] 313 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/interpreter/interpreter.rs:335:41 [INFO] [stderr] | [INFO] [stderr] 335 | None => Err(String::from(format!("Internal Interpreter Error: Unknown variable '{}'", name))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Internal Interpreter Error: Unknown variable '{}'", name)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/interpreter/scope.rs:33:33 [INFO] [stderr] | [INFO] [stderr] 33 | pub fn get(&mut self, name: &String) -> Option<&Object> { [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] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/interpreter/object.rs:172:56 [INFO] [stderr] | [INFO] [stderr] 172 | => Ok(Object::Primitive(Primitive::Boolean(left == right))), [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider comparing them within some error: `(left - right).abs() < error` [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/interpreter/object.rs:172:56 [INFO] [stderr] | [INFO] [stderr] 172 | => Ok(Object::Primitive(Primitive::Boolean(left == right))), [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/interpreter/object.rs:182:56 [INFO] [stderr] | [INFO] [stderr] 182 | => Ok(Object::Primitive(Primitive::Boolean(left != right))), [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider comparing them within some error: `(left - right).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/interpreter/object.rs:182:56 [INFO] [stderr] | [INFO] [stderr] 182 | => Ok(Object::Primitive(Primitive::Boolean(left != right))), [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `rascal`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: use of `writeln!(stderr(), ...).unwrap()`. Consider using `eprintln!` instead [INFO] [stderr] --> src/lexer/lexer.rs:40:21 [INFO] [stderr] | [INFO] [stderr] 40 | writeln!(io::stderr(), "{}", error).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_write)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lexer/lexer.rs:73:50 [INFO] [stderr] | [INFO] [stderr] 73 | Some(c) => Err(String::from(format!("Lexer Error: Expected floating point number at: {}.{}", integer, c))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Lexer Error: Expected floating point number at: {}.{}", integer, c)` [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: identical conversion [INFO] [stderr] --> src/lexer/lexer.rs:74:50 [INFO] [stderr] | [INFO] [stderr] 74 | None => Err(String::from(format!("Lexer Error: Expected floating point number at: {}.", integer))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Lexer Error: Expected floating point number at: {}.", integer)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:73:48 [INFO] [stderr] | [INFO] [stderr] 73 | _ => Err(String::from(format!("Expression Parse Error at token {:?}", token))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Expression Parse Error at token {:?}", token)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:93:51 [INFO] [stderr] | [INFO] [stderr] 93 | _ => Err(String::from(format!("Expression Parse Error at token {:?}", token))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Expression Parse Error at token {:?}", token)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:117:38 [INFO] [stderr] | [INFO] [stderr] 117 | _ => Err(String::from(format!("Program Parse Error at {:?}: Expected token {:?}", variable, Token::SEMI))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Program Parse Error at {:?}: Expected token {:?}", variable, Token::SEMI)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:122:37 [INFO] [stderr] | [INFO] [stderr] 122 | _ => Err(String::from(format!("Program Parse Error: Expected token {:?}", Token::DOT))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Program Parse Error: Expected token {:?}", Token::DOT)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parser/parser.rs:149:16 [INFO] [stderr] | [INFO] [stderr] 149 | if variable_declarations.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!variable_declarations.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: identical conversion [INFO] [stderr] --> src/parser/parser.rs:152:28 [INFO] [stderr] | [INFO] [stderr] 152 | return Err(String::from(format!("Declarations Parse Error: Expected at least one variable declaration after token {:?}", Token::VAR))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Declarations Parse Error: Expected at least one variable declaration after token {:?}", Token::VAR)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parser/parser.rs:167:12 [INFO] [stderr] | [INFO] [stderr] 167 | if procedure_declarations.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!procedure_declarations.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/parser/parser.rs:171:12 [INFO] [stderr] | [INFO] [stderr] 171 | if function_declarations.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!function_declarations.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: identical conversion [INFO] [stderr] --> src/parser/parser.rs:193:42 [INFO] [stderr] | [INFO] [stderr] 193 | _ => Err(String::from(format!("Variable Declaration Parse Error: Expected id token"))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Variable Declaration Parse Error: Expected id token")` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/parser/parser.rs:193:55 [INFO] [stderr] | [INFO] [stderr] 193 | _ => Err(String::from(format!("Variable Declaration Parse Error: Expected id token"))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Variable Declaration Parse Error: Expected id token".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] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:204:46 [INFO] [stderr] | [INFO] [stderr] 204 | _ => Err(String::from(format!("Variable Declaration Parse Error: Expected id token after token {:?}", Token::COMMA))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Variable Declaration Parse Error: Expected id token after token {:?}", Token::COMMA)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:211:55 [INFO] [stderr] | [INFO] [stderr] 211 | (type_spec, _) => Err(String::from(format!("Variable Declaration Parse Error: Expected {:?} token after {:?}", Token::SEMI, type_spec))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Variable Declaration Parse Error: Expected {:?} token after {:?}", Token::SEMI, type_spec)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:213:39 [INFO] [stderr] | [INFO] [stderr] 213 | _ => Err(String::from(format!("Variable Declaration Parse Error: Expected {:?} token after declared variables", Token::COLON))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Variable Declaration Parse Error: Expected {:?} token after declared variables", Token::COLON)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:226:41 [INFO] [stderr] | [INFO] [stderr] 226 | _ => Err(String::from(format!("TypeSpec Parse Error: Expected one of {:?}", vec![TypeSpec::INTEGER, TypeSpec::REAL, TypeSpec::STRING, TypeSpec::BOOLEAN]))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("TypeSpec Parse Error: Expected one of {:?}", vec![TypeSpec::INTEGER, TypeSpec::REAL, TypeSpec::STRING, TypeSpec::BOOLEAN])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:236:68 [INFO] [stderr] | [INFO] [stderr] 236 | _ => Err(String::from(format!("Procedure Declaration Parse Error: Expected {:?} ", Token::PROCEDURE))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Procedure Declaration Parse Error: Expected {:?} ", Token::PROCEDURE)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:251:38 [INFO] [stderr] | [INFO] [stderr] 251 | _ => Err(String::from(format!("Procedure Declaration Parse Error: Expected token {:?} after {:?}", Token::SEMI, parameters))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Procedure Declaration Parse Error: Expected token {:?} after {:?}", Token::SEMI, parameters)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:263:67 [INFO] [stderr] | [INFO] [stderr] 263 | _ => Err(String::from(format!("Function Declaration Parse Error: Expected {:?} ", Token::FUNCTION))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Function Declaration Parse Error: Expected {:?} ", Token::FUNCTION)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:274:39 [INFO] [stderr] | [INFO] [stderr] 274 | _ => Err(String::from(format!("Function Declaration Parse Error: Expected {:?} after {:?}", Token::COLON, parameters))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Function Declaration Parse Error: Expected {:?} after {:?}", Token::COLON, parameters)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:278:38 [INFO] [stderr] | [INFO] [stderr] 278 | _ => Err(String::from(format!("Function Declaration Parse Error: Expected {:?} after {:?}", Token::SEMI, return_type))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Function Declaration Parse Error: Expected {:?} after {:?}", Token::SEMI, return_type)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:315:42 [INFO] [stderr] | [INFO] [stderr] 315 | token => Err(String::from(format!("Formal Parameters Parse Error: Expected id token, got token {:?}", token))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Formal Parameters Parse Error: Expected id token, got token {:?}", token)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:326:46 [INFO] [stderr] | [INFO] [stderr] 326 | _ => Err(String::from(format!("Formal Parameters Parse Error: Expected id token after {:?}", Token::COMMA))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Formal Parameters Parse Error: Expected id token after {:?}", Token::COMMA)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:332:39 [INFO] [stderr] | [INFO] [stderr] 332 | _ => Err(String::from(format!("Formal Parameters Parse Error: Expected token {:?} after parameter identifiers", Token::COLON))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Formal Parameters Parse Error: Expected token {:?} after parameter identifiers", Token::COLON)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:344:39 [INFO] [stderr] | [INFO] [stderr] 344 | _ => Err(String::from(format!("Compound Statement Parse Error: Expected token {:?}", Token::BEGIN))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Compound Statement Parse Error: Expected token {:?}", Token::BEGIN)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:379:50 [INFO] [stderr] | [INFO] [stderr] 379 | (expr, _) => Err(String::from(format!("If Statement Parse Error: Expected token {:?} after {:?}", Token::THEN, expr))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("If Statement Parse Error: Expected token {:?} after {:?}", Token::THEN, expr)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:381:36 [INFO] [stderr] | [INFO] [stderr] 381 | _ => Err(String::from(format!("If statement Parse Error: Expected token {:?}", Token::IF))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("If statement Parse Error: Expected token {:?}", Token::IF)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:403:50 [INFO] [stderr] | [INFO] [stderr] 403 | (expr, _) => Err(String::from(format!("Assignment Statement Parse Error: Expected {:?} after {:?}", Token::SEMI, expr))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Assignment Statement Parse Error: Expected {:?} after {:?}", Token::SEMI, expr)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:405:47 [INFO] [stderr] | [INFO] [stderr] 405 | (var, _) => Err(String::from(format!("Assignment Statement Parse Error: Expected {:?} after {:?}", Token::ASSIGN, var))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Assignment Statement Parse Error: Expected {:?} after {:?}", Token::ASSIGN, var)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:425:52 [INFO] [stderr] | [INFO] [stderr] 425 | (variable, _) => Err(String::from(format!("Function Call Parse Error: Expected token {:?} after {:?}", Token::LPAREN, variable))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Function Call Parse Error: Expected token {:?} after {:?}", Token::LPAREN, variable)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:430:78 [INFO] [stderr] | [INFO] [stderr] 430 | (call_parameters, _, _) => Err(String::from(format!("Function Call Parse Error: Expected tokens {:?} {:?} after {:?}", Token::RPAREN, Token::SEMI, call_parameters))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Function Call Parse Error: Expected tokens {:?} {:?} after {:?}", Token::RPAREN, Token::SEMI, call_parameters)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/parser/parser.rs:454:39 [INFO] [stderr] | [INFO] [stderr] 454 | let token = self.lexer.next().ok_or(String::from("Expression Parse Error: Expected a token, found none"))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| String::from("Expression Parse Error: Expected a token, found none"))` [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: use of `ok_or` followed by a function call [INFO] [stderr] --> src/parser/parser.rs:460:43 [INFO] [stderr] | [INFO] [stderr] 460 | let token = self.lexer.next().ok_or(String::from("Expression Parse Error: Expected a token, found none"))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| String::from("Expression Parse Error: Expected a token, found none"))` [INFO] [stderr] | [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: identical conversion [INFO] [stderr] --> src/parser/parser.rs:474:37 [INFO] [stderr] | [INFO] [stderr] 474 | Some(token) => Err(String::from(format!("Parse Error: Expected {:?} token, found token {:?}", Token::EOF, token))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Parse Error: Expected {:?} token, found token {:?}", Token::EOF, token)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parser.rs:475:37 [INFO] [stderr] | [INFO] [stderr] 475 | None => Err(String::from(format!("Parse Error: Expected {:?} token, found None", Token::EOF))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Parse Error: Expected {:?} token, found None", Token::EOF)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/parser/parser.rs:763:24 [INFO] [stderr] | [INFO] [stderr] 763 | for literal in vec!["5", "5.5", "'test'", "true"] { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&["5", "5.5", "'test'", "true"]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_vec)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parselet.rs:59:52 [INFO] [stderr] | [INFO] [stderr] 59 | (expr, _) => Err(String::from(format!("Grouping Parse Error: Expected token {:?} after {:?}", Token::RPAREN, expr))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Grouping Parse Error: Expected token {:?} after {:?}", Token::RPAREN, expr)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parselet.rs:61:34 [INFO] [stderr] | [INFO] [stderr] 61 | _ => Err(String::from(format!("Grouping Parse Error: Expected token {:?}", Token::LPAREN))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Grouping Parse Error: Expected token {:?}", Token::LPAREN)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parselet.rs:77:34 [INFO] [stderr] | [INFO] [stderr] 77 | _ => Err(String::from(format!("Unary Op Parse Error: Expected one of {:?}", vec![Token::PLUS, Token::MINUS, Token::NOT]))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Unary Op Parse Error: Expected one of {:?}", vec![Token::PLUS, Token::MINUS, Token::NOT])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parselet.rs:116:17 [INFO] [stderr] | [INFO] [stderr] 116 | / String::from(format!("Binary Op Parse Error: Expected one of {:?}", vec![ [INFO] [stderr] 117 | | Token::PLUS, Token::MINUS, Token::MULTIPLY, Token::INTEGER_DIV, Token::FLOAT_DIV, Token::AND, [INFO] [stderr] 118 | | Token::OR, Token::LESS_THAN, Token::LESS_THAN_OR_EQUAL, Token::GREATER_THAN, Token::GREATER_THAN_OR_EQUAL, [INFO] [stderr] 119 | | Token::EQUAL, Token::NOT_EQUAL [INFO] [stderr] 120 | | ])) [INFO] [stderr] | |___________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] help: consider removing `String::from()` [INFO] [stderr] | [INFO] [stderr] 116 | format!("Binary Op Parse Error: Expected one of {:?}", vec![ [INFO] [stderr] 117 | Token::PLUS, Token::MINUS, Token::MULTIPLY, Token::INTEGER_DIV, Token::FLOAT_DIV, Token::AND, [INFO] [stderr] 118 | Token::OR, Token::LESS_THAN, Token::LESS_THAN_OR_EQUAL, Token::GREATER_THAN, Token::GREATER_THAN_OR_EQUAL, [INFO] [stderr] 119 | Token::EQUAL, Token::NOT_EQUAL [INFO] [stderr] 120 | ]) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parselet.rs:131:58 [INFO] [stderr] | [INFO] [stderr] 131 | (parameters, _) => Err(String::from(format!("Function Call Parse Error: Expected token {:?} after {:?}", Token::RPAREN, parameters))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Function Call Parse Error: Expected token {:?} after {:?}", Token::RPAREN, parameters)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/parser/parselet.rs:133:58 [INFO] [stderr] | [INFO] [stderr] 133 | (_, _) => Err(String::from(format!("Function Call Parse Error: Expected variable token and {:?}", Token::LPAREN))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Function Call Parse Error: Expected variable token and {:?}", Token::LPAREN)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: use of `writeln!(stderr(), ...).unwrap()`. Consider using `eprintln!` instead [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:53:13 [INFO] [stderr] | [INFO] [stderr] 53 | writeln!(io::stderr(), "{}", error).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [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/analyzer/semantic_analyzer.rs:94:48 [INFO] [stderr] | [INFO] [stderr] 94 | pub fn visit_declarations(&mut self, node: &Vec) -> Result<(), String> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: change this to: `&[Declarations]` [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: identical conversion [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:156:67 [INFO] [stderr] | [INFO] [stderr] 156 | (actual, expected) => Err(String::from( [INFO] [stderr] | ___________________________________________________________________^ [INFO] [stderr] 157 | | format!("Semantic Analyzer Error: Mismatching return types in function '{:?}'. Declared return type of {:?}, actual return type of {:?}", name, expected, actual) [INFO] [stderr] 158 | | )) [INFO] [stderr] | |_____________________^ help: consider removing `String::from()`: `format!("Semantic Analyzer Error: Mismatching return types in function '{:?}'. Declared return type of {:?}, actual return type of {:?}", name, expected, actual)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:186:41 [INFO] [stderr] | [INFO] [stderr] 186 | TypeSpec::INTEGER => Ok(names.iter().for_each(|name| vars.push(VarSymbol::INTEGER(name.to_owned())))), [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] 186 | TypeSpec::INTEGER => Ok(()), [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:187:41 [INFO] [stderr] | [INFO] [stderr] 187 | TypeSpec::REAL => Ok(names.iter().for_each(|name| vars.push(VarSymbol::REAL(name.to_owned())))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [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] 187 | TypeSpec::REAL => Ok(()), [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:188:41 [INFO] [stderr] | [INFO] [stderr] 188 | TypeSpec::STRING => Ok(names.iter().for_each(|name| vars.push(VarSymbol::STRING(name.to_owned())))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [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] 188 | TypeSpec::STRING => Ok(()), [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:189:41 [INFO] [stderr] | [INFO] [stderr] 189 | TypeSpec::BOOLEAN => Ok(names.iter().for_each(|name| vars.push(VarSymbol::BOOLEAN(name.to_owned())))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [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] 189 | TypeSpec::BOOLEAN => Ok(()), [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:202:40 [INFO] [stderr] | [INFO] [stderr] 202 | Some(_) => Err(String::from(format!("Semantic Analyzer Error: Variable declared more than once: {}", name))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Semantic Analyzer Error: Variable declared more than once: {}", name)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:204:53 [INFO] [stderr] | [INFO] [stderr] 204 | TypeSpec::INTEGER => Ok(self.scope()?.define(Symbol::Var(VarSymbol::INTEGER(name.to_owned())))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [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] 204 | TypeSpec::INTEGER => Ok(()), [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:205:53 [INFO] [stderr] | [INFO] [stderr] 205 | TypeSpec::REAL => Ok(self.scope()?.define(Symbol::Var(VarSymbol::REAL(name.to_owned())))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [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] 205 | TypeSpec::REAL => Ok(()), [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:206:53 [INFO] [stderr] | [INFO] [stderr] 206 | TypeSpec::STRING => Ok(self.scope()?.define(Symbol::Var(VarSymbol::STRING(name.to_owned())))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [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] 206 | TypeSpec::STRING => Ok(()), [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:207:53 [INFO] [stderr] | [INFO] [stderr] 207 | TypeSpec::BOOLEAN => Ok(self.scope()?.define(Symbol::Var(VarSymbol::BOOLEAN(name.to_owned())))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [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] 207 | TypeSpec::BOOLEAN => Ok(()), [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:279:42 [INFO] [stderr] | [INFO] [stderr] 279 | None => Err(String::from(format!("Semantic Analyzer Error: Variable {} was never defined", name))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Semantic Analyzer Error: Variable {} was never defined", name)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:287:84 [INFO] [stderr] | [INFO] [stderr] 287 | (Symbol::Var(var_symbol), TypeSpec::UNIT) => Err(String::from(format!("Semantic Analyzer Error: Attempted to assign {:?} to a statement with no return type", var_symbol))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Semantic Analyzer Error: Attempted to assign {:?} to a statement with no return type", var_symbol)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:288:84 [INFO] [stderr] | [INFO] [stderr] 288 | (Symbol::Var(var_symbol), type_spec) => Err(String::from(format!("Semantic Analyzer Error: Mismatched Types, Attempted to assign {:?} to {:?}", type_spec, var_symbol))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Semantic Analyzer Error: Mismatched Types, Attempted to assign {:?} to {:?}", type_spec, var_symbol)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:289:84 [INFO] [stderr] | [INFO] [stderr] 289 | (Symbol::Callable(callable), _) => Err(String::from(format!("Semantic Analyzer Error: Attempted to assign expression to callable {:?}", callable))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Semantic Analyzer Error: Attempted to assign expression to callable {:?}", callable)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:300:61 [INFO] [stderr] | [INFO] [stderr] 300 | _ => Err(String::from(format!("Semantic Analyzer Error: Unknown callable '{:?}'", name))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Semantic Analyzer Error: Unknown callable '{:?}'", name)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:315:79 [INFO] [stderr] | [INFO] [stderr] 315 | (expected, actual) => Err(String::from(format!("Semantic Analyzer Error: Callable expected parameter of type {:?}, but {:?} was given", expected, actual))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Semantic Analyzer Error: Callable expected parameter of type {:?}, but {:?} was given", expected, actual)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:323:25 [INFO] [stderr] | [INFO] [stderr] 323 | Err(String::from(format!("Semantic Analyzer Error: Callable {:?} expected {:?} arguments, but {:?} were given", callable, declared_params.len(), given_params.len()))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Semantic Analyzer Error: Callable {:?} expected {:?} arguments, but {:?} were given", callable, declared_params.len(), given_params.len())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:363:70 [INFO] [stderr] | [INFO] [stderr] 363 | (operator, type_spec) => Err(String::from( [INFO] [stderr] | ______________________________________________________________________^ [INFO] [stderr] 364 | | format!("Semantic Analyzer Error: Attempted to use unary operator {:?} with incompatible type {:?}", operator, type_spec) [INFO] [stderr] 365 | | )) [INFO] [stderr] | |_____________________^ help: consider removing `String::from()`: `format!("Semantic Analyzer Error: Attempted to use unary operator {:?} with incompatible type {:?}", operator, type_spec)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 30 [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:370:5 [INFO] [stderr] | [INFO] [stderr] 370 | / pub fn visit_binop(&mut self, expr: &BinaryOpExpr) -> Result { [INFO] [stderr] 371 | | return match expr { [INFO] [stderr] 372 | | BinaryOpExpr(left, operator, right) => [INFO] [stderr] 373 | | match (self.visit_expr(left)?, operator, self.visit_expr(right)?) { [INFO] [stderr] ... | [INFO] [stderr] 406 | | }; [INFO] [stderr] 407 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:400:104 [INFO] [stderr] | [INFO] [stderr] 400 | (TypeSpec::INTEGER, operator, TypeSpec::INTEGER) => Err(String::from(format!("Semantic Analyzer Error: Binary operator {:?} is incompatible with {:?} types", operator, TypeSpec::INTEGER))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Semantic Analyzer Error: Binary operator {:?} is incompatible with {:?} types", operator, TypeSpec::INTEGER)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:401:104 [INFO] [stderr] | [INFO] [stderr] 401 | (TypeSpec::REAL, operator, TypeSpec::REAL) => Err(String::from(format!("Semantic Analyzer Error: Binary operator {:?} is incompatible with {:?} types", operator, TypeSpec::REAL))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Semantic Analyzer Error: Binary operator {:?} is incompatible with {:?} types", operator, TypeSpec::REAL)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:402:104 [INFO] [stderr] | [INFO] [stderr] 402 | (TypeSpec::STRING, operator, TypeSpec::STRING) => Err(String::from(format!("Semantic Analyzer Error: Binary operator {:?} is incompatible with {:?} types", operator, TypeSpec::STRING))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Semantic Analyzer Error: Binary operator {:?} is incompatible with {:?} types", operator, TypeSpec::STRING)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:403:104 [INFO] [stderr] | [INFO] [stderr] 403 | (TypeSpec::BOOLEAN, operator, TypeSpec::BOOLEAN) => Err(String::from(format!("Semantic Analyzer Error: Binary operator {:?} is incompatible with {:?} types", operator, TypeSpec::BOOLEAN))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Semantic Analyzer Error: Binary operator {:?} is incompatible with {:?} types", operator, TypeSpec::BOOLEAN)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:404:104 [INFO] [stderr] | [INFO] [stderr] 404 | (type_spec_left, operator, type_spec_right) => Err(String::from(format!("Semantic Analyzer Error: Attempted to use binary operator {:?} with mismatching types {:?} and {:?}", operator, type_spec_left, type_spec_right))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Semantic Analyzer Error: Attempted to use binary operator {:?} with mismatching types {:?} and {:?}", operator, type_spec_left, type_spec_right)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:433:67 [INFO] [stderr] | [INFO] [stderr] 433 | Symbol::Callable(callable) => Err(String::from(format!("Semantic Analyzer Error: Attempted to use callable {:?} as a variable", callable))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Semantic Analyzer Error: Attempted to use callable {:?} as a variable", callable)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/analyzer/semantic_analyzer.rs:435:41 [INFO] [stderr] | [INFO] [stderr] 435 | None => Err(String::from(format!("Semantic Analyzer Error: Unknown variable with name {}", name))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Semantic Analyzer Error: Unknown variable with name {}", name)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/analyzer/symbol_table.rs:37:36 [INFO] [stderr] | [INFO] [stderr] 37 | pub fn lookup(&mut self, name: &String) -> Option<&Symbol> { [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/analyzer/symbol_table.rs:49:42 [INFO] [stderr] | [INFO] [stderr] 49 | pub fn local_lookup(&mut self, name: &String) -> Option<&Symbol> { [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: use of `writeln!(stderr(), ...).unwrap()`. Consider using `eprintln!` instead [INFO] [stderr] --> src/interpreter/interpreter.rs:52:13 [INFO] [stderr] | [INFO] [stderr] 52 | writeln!(io::stderr(), "{}", error).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [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/interpreter.rs:93:48 [INFO] [stderr] | [INFO] [stderr] 93 | pub fn visit_declarations(&mut self, node: &Vec) -> Result<(), String> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: change this to: `&[Declarations]` [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 function has a cyclomatic complexity of 38 [INFO] [stderr] --> src/interpreter/interpreter.rs:220:5 [INFO] [stderr] | [INFO] [stderr] 220 | / pub fn visit_function_call(&mut self, node: &FunctionCall) -> Result { [INFO] [stderr] 221 | | return match node { [INFO] [stderr] 222 | | FunctionCall(Variable(function_name), CallParameters(given_parameters)) => { [INFO] [stderr] 223 | | let callable = match self.scope()?.get(function_name) { [INFO] [stderr] ... | [INFO] [stderr] 275 | | }; [INFO] [stderr] 276 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/interpreter/interpreter.rs:227:94 [INFO] [stderr] | [INFO] [stderr] 227 | _ => Err(String::from(format!("Internal Interpreter Error: Expected a callable with the name '{:?}'", function_name))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Internal Interpreter Error: Expected a callable with the name '{:?}'", function_name)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/interpreter/interpreter.rs:272:71 [INFO] [stderr] | [INFO] [stderr] 272 | _ => Err(String::from(format!("Internal Interpreter Error: Expected {:?} to be a callable", callable))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Internal Interpreter Error: Expected {:?} to be a callable", callable)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 52 [INFO] [stderr] --> src/interpreter/interpreter.rs:297:5 [INFO] [stderr] | [INFO] [stderr] 297 | / pub fn visit_binop(&mut self, node: &BinaryOpExpr) -> Result { [INFO] [stderr] 298 | | return match node { [INFO] [stderr] 299 | | BinaryOpExpr(left, BinaryOperator::Plus, right) => Ok(self.visit_expr(left)?.add(&self.visit_expr(right)?)?), [INFO] [stderr] 300 | | BinaryOpExpr(left, BinaryOperator::Minus, right) => Ok(self.visit_expr(left)?.subtract(&self.visit_expr(right)?)?), [INFO] [stderr] ... | [INFO] [stderr] 312 | | }; [INFO] [stderr] 313 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/interpreter/interpreter.rs:335:41 [INFO] [stderr] | [INFO] [stderr] 335 | None => Err(String::from(format!("Internal Interpreter Error: Unknown variable '{}'", name))) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("Internal Interpreter Error: Unknown variable '{}'", name)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/interpreter/scope.rs:33:33 [INFO] [stderr] | [INFO] [stderr] 33 | pub fn get(&mut self, name: &String) -> Option<&Object> { [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] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/interpreter/object.rs:172:56 [INFO] [stderr] | [INFO] [stderr] 172 | => Ok(Object::Primitive(Primitive::Boolean(left == right))), [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider comparing them within some error: `(left - right).abs() < error` [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/interpreter/object.rs:172:56 [INFO] [stderr] | [INFO] [stderr] 172 | => Ok(Object::Primitive(Primitive::Boolean(left == right))), [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/interpreter/object.rs:182:56 [INFO] [stderr] | [INFO] [stderr] 182 | => Ok(Object::Primitive(Primitive::Boolean(left != right))), [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider comparing them within some error: `(left - right).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/interpreter/object.rs:182:56 [INFO] [stderr] | [INFO] [stderr] 182 | => Ok(Object::Primitive(Primitive::Boolean(left != right))), [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `rascal`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "e3856e07cac141021b69f13093dff9fdce9bce9175a3607df80a04aef72162b0"` [INFO] running `"docker" "rm" "-f" "e3856e07cac141021b69f13093dff9fdce9bce9175a3607df80a04aef72162b0"` [INFO] [stdout] e3856e07cac141021b69f13093dff9fdce9bce9175a3607df80a04aef72162b0