[INFO] updating cached repository lars-t-hansen/pl0 [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/lars-t-hansen/pl0 [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/lars-t-hansen/pl0" "work/ex/clippy-test-run/sources/stable/gh/lars-t-hansen/pl0"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/lars-t-hansen/pl0'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/lars-t-hansen/pl0" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/lars-t-hansen/pl0"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/lars-t-hansen/pl0'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 7e54fa1e22f3e3a5adb3c32fccc84b6e3e290483 [INFO] sha for GitHub repo lars-t-hansen/pl0: 7e54fa1e22f3e3a5adb3c32fccc84b6e3e290483 [INFO] validating manifest of lars-t-hansen/pl0 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 lars-t-hansen/pl0 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 lars-t-hansen/pl0 [INFO] finished frobbing lars-t-hansen/pl0 [INFO] frobbed toml for lars-t-hansen/pl0 written to work/ex/clippy-test-run/sources/stable/gh/lars-t-hansen/pl0/Cargo.toml [INFO] started frobbing lars-t-hansen/pl0 [INFO] finished frobbing lars-t-hansen/pl0 [INFO] frobbed toml for lars-t-hansen/pl0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/lars-t-hansen/pl0/Cargo.toml [INFO] crate lars-t-hansen/pl0 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 lars-t-hansen/pl0 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-0/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/lars-t-hansen/pl0:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 836a6a36424730163509a1a47915af4c22094cff607ed17bec71bdda7ad0b42b [INFO] running `"docker" "start" "-a" "836a6a36424730163509a1a47915af4c22094cff607ed17bec71bdda7ad0b42b"` [INFO] [stderr] Checking pl0 v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:23:19 [INFO] [stderr] | [INFO] [stderr] 23 | Program { fns: fns, vars: vars } [INFO] [stderr] | ^^^^^^^^ help: replace it with: `fns` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:23:29 [INFO] [stderr] | [INFO] [stderr] 23 | Program { fns: fns, vars: vars } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `vars` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:43:19 [INFO] [stderr] | [INFO] [stderr] 43 | FunDefn { name: name, formals: formals, ret: ret, body: body } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:43:31 [INFO] [stderr] | [INFO] [stderr] 43 | FunDefn { name: name, formals: formals, ret: ret, body: body } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `formals` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:43:49 [INFO] [stderr] | [INFO] [stderr] 43 | FunDefn { name: name, formals: formals, ret: ret, body: body } [INFO] [stderr] | ^^^^^^^^ help: replace it with: `ret` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:43:59 [INFO] [stderr] | [INFO] [stderr] 43 | FunDefn { name: name, formals: formals, ret: ret, body: body } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `body` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:57:19 [INFO] [stderr] | [INFO] [stderr] 57 | VarDefn { name: name, ty: ty } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:57:31 [INFO] [stderr] | [INFO] [stderr] 57 | VarDefn { name: name, ty: ty } [INFO] [stderr] | ^^^^^^ help: replace it with: `ty` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:81:41 [INFO] [stderr] | [INFO] [stderr] 81 | Stmt::Var(Box::new(VarDefnStmt{ defn: defn })) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `defn` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:94:43 [INFO] [stderr] | [INFO] [stderr] 94 | Stmt::Block(Box::new( BlockStmt { phrases: phrases } )) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `phrases` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:107:41 [INFO] [stderr] | [INFO] [stderr] 107 | Stmt::Expr(Box::new( ExprStmt { expr: expr } )) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:122:36 [INFO] [stderr] | [INFO] [stderr] 122 | Stmt::If(Box::new(IfStmt { test: test, consequent: consequent, alternate: alternate })) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `test` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:122:48 [INFO] [stderr] | [INFO] [stderr] 122 | Stmt::If(Box::new(IfStmt { test: test, consequent: consequent, alternate: alternate })) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `consequent` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:122:72 [INFO] [stderr] | [INFO] [stderr] 122 | Stmt::If(Box::new(IfStmt { test: test, consequent: consequent, alternate: alternate })) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `alternate` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:136:42 [INFO] [stderr] | [INFO] [stderr] 136 | Stmt::While(Box::new(WhileStmt { test: test, body: body })) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `test` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:136:54 [INFO] [stderr] | [INFO] [stderr] 136 | Stmt::While(Box::new(WhileStmt { test: test, body: body })) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `body` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:150:44 [INFO] [stderr] | [INFO] [stderr] 150 | Stmt::Return(Box::new(ReturnStmt { expr: expr, ty: Cell::new(TypeName::VOID) })) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:186:43 [INFO] [stderr] | [INFO] [stderr] 186 | Expr::Unary(Box::new( UnaryExpr { op: op, expr: expr, ty: Cell::new(TypeName::VOID) } )) [INFO] [stderr] | ^^^^^^ help: replace it with: `op` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:186:51 [INFO] [stderr] | [INFO] [stderr] 186 | Expr::Unary(Box::new( UnaryExpr { op: op, expr: expr, ty: Cell::new(TypeName::VOID) } )) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:220:45 [INFO] [stderr] | [INFO] [stderr] 220 | Expr::Binary(Box::new( BinaryExpr { op: op, lhs: lhs, rhs: rhs, ty: Cell::new(TypeName::VOID) } )) [INFO] [stderr] | ^^^^^^ help: replace it with: `op` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:220:53 [INFO] [stderr] | [INFO] [stderr] 220 | Expr::Binary(Box::new( BinaryExpr { op: op, lhs: lhs, rhs: rhs, ty: Cell::new(TypeName::VOID) } )) [INFO] [stderr] | ^^^^^^^^ help: replace it with: `lhs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:220:63 [INFO] [stderr] | [INFO] [stderr] 220 | Expr::Binary(Box::new( BinaryExpr { op: op, lhs: lhs, rhs: rhs, ty: Cell::new(TypeName::VOID) } )) [INFO] [stderr] | ^^^^^^^^ help: replace it with: `rhs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:235:40 [INFO] [stderr] | [INFO] [stderr] 235 | Expr::Call(Box::new(CallExpr { name: name, args: args, ty: Cell::new(TypeName::VOID) })) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:235:52 [INFO] [stderr] | [INFO] [stderr] 235 | Expr::Call(Box::new(CallExpr { name: name, args: args, ty: Cell::new(TypeName::VOID) })) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `args` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:250:44 [INFO] [stderr] | [INFO] [stderr] 250 | Expr::Assign(Box::new(AssignExpr { name: name, expr: expr, ty: Cell::new(TypeName::VOID) })) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:250:56 [INFO] [stderr] | [INFO] [stderr] 250 | Expr::Assign(Box::new(AssignExpr { name: name, expr: expr, ty: Cell::new(TypeName::VOID) })) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:263:44 [INFO] [stderr] | [INFO] [stderr] 263 | Expr::IntLit(Box::new(IntLitExpr { n: n })) [INFO] [stderr] | ^^^^ help: replace it with: `n` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:276:44 [INFO] [stderr] | [INFO] [stderr] 276 | Expr::NumLit(Box::new(NumLitExpr { n: n })) [INFO] [stderr] | ^^^^ help: replace it with: `n` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:290:36 [INFO] [stderr] | [INFO] [stderr] 290 | Expr::Id(Box::new(IdExpr { name: name, ty: Cell::new(TypeName::VOID) })) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ir.rs:63:13 [INFO] [stderr] | [INFO] [stderr] 63 | entry_block: entry_block, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `entry_block` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ir.rs:64:13 [INFO] [stderr] | [INFO] [stderr] 64 | exit_block: exit_block, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `exit_block` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ir.rs:65:13 [INFO] [stderr] | [INFO] [stderr] 65 | ir: ir [INFO] [stderr] | ^^^^^^ help: replace it with: `ir` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/irgen.rs:389:27 [INFO] [stderr] | [INFO] [stderr] 389 | self.ir.push(IR { op: op, prev: self.last as u32, next: ir::NULL }); [INFO] [stderr] | ^^^^^^ help: replace it with: `op` [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:23:19 [INFO] [stderr] | [INFO] [stderr] 23 | Program { fns: fns, vars: vars } [INFO] [stderr] | ^^^^^^^^ help: replace it with: `fns` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:23:29 [INFO] [stderr] | [INFO] [stderr] 23 | Program { fns: fns, vars: vars } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `vars` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:43:19 [INFO] [stderr] | [INFO] [stderr] 43 | FunDefn { name: name, formals: formals, ret: ret, body: body } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:43:31 [INFO] [stderr] | [INFO] [stderr] 43 | FunDefn { name: name, formals: formals, ret: ret, body: body } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `formals` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:43:49 [INFO] [stderr] | [INFO] [stderr] 43 | FunDefn { name: name, formals: formals, ret: ret, body: body } [INFO] [stderr] | ^^^^^^^^ help: replace it with: `ret` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:43:59 [INFO] [stderr] | [INFO] [stderr] 43 | FunDefn { name: name, formals: formals, ret: ret, body: body } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `body` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:57:19 [INFO] [stderr] | [INFO] [stderr] 57 | VarDefn { name: name, ty: ty } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:57:31 [INFO] [stderr] | [INFO] [stderr] 57 | VarDefn { name: name, ty: ty } [INFO] [stderr] | ^^^^^^ help: replace it with: `ty` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:81:41 [INFO] [stderr] | [INFO] [stderr] 81 | Stmt::Var(Box::new(VarDefnStmt{ defn: defn })) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `defn` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:94:43 [INFO] [stderr] | [INFO] [stderr] 94 | Stmt::Block(Box::new( BlockStmt { phrases: phrases } )) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `phrases` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:107:41 [INFO] [stderr] | [INFO] [stderr] 107 | Stmt::Expr(Box::new( ExprStmt { expr: expr } )) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:122:36 [INFO] [stderr] | [INFO] [stderr] 122 | Stmt::If(Box::new(IfStmt { test: test, consequent: consequent, alternate: alternate })) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `test` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:122:48 [INFO] [stderr] | [INFO] [stderr] 122 | Stmt::If(Box::new(IfStmt { test: test, consequent: consequent, alternate: alternate })) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `consequent` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:122:72 [INFO] [stderr] | [INFO] [stderr] 122 | Stmt::If(Box::new(IfStmt { test: test, consequent: consequent, alternate: alternate })) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `alternate` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:136:42 [INFO] [stderr] | [INFO] [stderr] 136 | Stmt::While(Box::new(WhileStmt { test: test, body: body })) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `test` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:136:54 [INFO] [stderr] | [INFO] [stderr] 136 | Stmt::While(Box::new(WhileStmt { test: test, body: body })) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `body` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:150:44 [INFO] [stderr] | [INFO] [stderr] 150 | Stmt::Return(Box::new(ReturnStmt { expr: expr, ty: Cell::new(TypeName::VOID) })) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:186:43 [INFO] [stderr] | [INFO] [stderr] 186 | Expr::Unary(Box::new( UnaryExpr { op: op, expr: expr, ty: Cell::new(TypeName::VOID) } )) [INFO] [stderr] | ^^^^^^ help: replace it with: `op` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:186:51 [INFO] [stderr] | [INFO] [stderr] 186 | Expr::Unary(Box::new( UnaryExpr { op: op, expr: expr, ty: Cell::new(TypeName::VOID) } )) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:220:45 [INFO] [stderr] | [INFO] [stderr] 220 | Expr::Binary(Box::new( BinaryExpr { op: op, lhs: lhs, rhs: rhs, ty: Cell::new(TypeName::VOID) } )) [INFO] [stderr] | ^^^^^^ help: replace it with: `op` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:220:53 [INFO] [stderr] | [INFO] [stderr] 220 | Expr::Binary(Box::new( BinaryExpr { op: op, lhs: lhs, rhs: rhs, ty: Cell::new(TypeName::VOID) } )) [INFO] [stderr] | ^^^^^^^^ help: replace it with: `lhs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:220:63 [INFO] [stderr] | [INFO] [stderr] 220 | Expr::Binary(Box::new( BinaryExpr { op: op, lhs: lhs, rhs: rhs, ty: Cell::new(TypeName::VOID) } )) [INFO] [stderr] | ^^^^^^^^ help: replace it with: `rhs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:235:40 [INFO] [stderr] | [INFO] [stderr] 235 | Expr::Call(Box::new(CallExpr { name: name, args: args, ty: Cell::new(TypeName::VOID) })) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:235:52 [INFO] [stderr] | [INFO] [stderr] 235 | Expr::Call(Box::new(CallExpr { name: name, args: args, ty: Cell::new(TypeName::VOID) })) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `args` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:250:44 [INFO] [stderr] | [INFO] [stderr] 250 | Expr::Assign(Box::new(AssignExpr { name: name, expr: expr, ty: Cell::new(TypeName::VOID) })) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:250:56 [INFO] [stderr] | [INFO] [stderr] 250 | Expr::Assign(Box::new(AssignExpr { name: name, expr: expr, ty: Cell::new(TypeName::VOID) })) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `expr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:263:44 [INFO] [stderr] | [INFO] [stderr] 263 | Expr::IntLit(Box::new(IntLitExpr { n: n })) [INFO] [stderr] | ^^^^ help: replace it with: `n` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:276:44 [INFO] [stderr] | [INFO] [stderr] 276 | Expr::NumLit(Box::new(NumLitExpr { n: n })) [INFO] [stderr] | ^^^^ help: replace it with: `n` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:290:36 [INFO] [stderr] | [INFO] [stderr] 290 | Expr::Id(Box::new(IdExpr { name: name, ty: Cell::new(TypeName::VOID) })) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ir.rs:63:13 [INFO] [stderr] | [INFO] [stderr] 63 | entry_block: entry_block, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `entry_block` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lex.rs:66:13 [INFO] [stderr] | [INFO] [stderr] 66 | names: names [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `names` [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parse.rs:57:13 [INFO] [stderr] | [INFO] [stderr] 57 | l: l, [INFO] [stderr] | ^^^^ help: replace it with: `l` [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ir.rs:64:13 [INFO] [stderr] | [INFO] [stderr] 64 | exit_block: exit_block, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `exit_block` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ir.rs:65:13 [INFO] [stderr] | [INFO] [stderr] 65 | ir: ir [INFO] [stderr] | ^^^^^^ help: replace it with: `ir` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/irgen.rs:389:27 [INFO] [stderr] | [INFO] [stderr] 389 | self.ir.push(IR { op: op, prev: self.last as u32, next: ir::NULL }); [INFO] [stderr] | ^^^^^^ help: replace it with: `op` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tycheck.rs:109:13 [INFO] [stderr] | [INFO] [stderr] 109 | ret: ret, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `ret` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lex.rs:66:13 [INFO] [stderr] | [INFO] [stderr] 66 | names: names [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `names` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parse.rs:57:13 [INFO] [stderr] | [INFO] [stderr] 57 | l: l, [INFO] [stderr] | ^^^^ help: replace it with: `l` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tycheck.rs:109:13 [INFO] [stderr] | [INFO] [stderr] 109 | ret: ret, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `ret` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/env.rs:80:9 [INFO] [stderr] | [INFO] [stderr] 80 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [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/env.rs:101:9 [INFO] [stderr] | [INFO] [stderr] 101 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `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: long literal lacking separators [INFO] [stderr] --> src/ir.rs:77:24 [INFO] [stderr] | [INFO] [stderr] 77 | pub const NULL : u32 = 911911; // A `prev` or `next` link without a target (visually distinct) [INFO] [stderr] | ^^^^^^ help: consider: `911_911` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/ir.rs:115:27 [INFO] [stderr] | [INFO] [stderr] 115 | pub const UNBOUND : u32 = 0xFFFFFFFF; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xFFFF_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/irgen.rs:13:5 [INFO] [stderr] | [INFO] [stderr] 13 | return irp; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `irp` [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/irgen.rs:221:17 [INFO] [stderr] | [INFO] [stderr] 221 | return er; [INFO] [stderr] | ^^^^^^^^^^ help: remove `return` as shown: `er` [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/irgen.rs:257:9 [INFO] [stderr] | [INFO] [stderr] 257 | return l; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `l` [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/irgen.rs:263:9 [INFO] [stderr] | [INFO] [stderr] 263 | return l; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `l` [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/irgen.rs:270:9 [INFO] [stderr] | [INFO] [stderr] 270 | return l; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `l` [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/irgen.rs:274:9 [INFO] [stderr] | [INFO] [stderr] 274 | return self.add_instr(Op::GetLocal(l)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.add_instr(Op::GetLocal(l))` [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/irgen.rs:322:9 [INFO] [stderr] | [INFO] [stderr] 322 | return self.add_instr(Op::Literal(l)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.add_instr(Op::Literal(l))` [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/irgen.rs:326:9 [INFO] [stderr] | [INFO] [stderr] 326 | return self.add_instr(Op::Incoming(arg)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.add_instr(Op::Incoming(arg))` [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/irgen.rs:330:9 [INFO] [stderr] | [INFO] [stderr] 330 | return self.add_instr(Op::Op1(op, rs)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.add_instr(Op::Op1(op, rs))` [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/irgen.rs:334:9 [INFO] [stderr] | [INFO] [stderr] 334 | return self.add_instr(Op::Op2(op, rs1, rs2)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.add_instr(Op::Op2(op, rs1, rs2))` [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/irgen.rs:338:9 [INFO] [stderr] | [INFO] [stderr] 338 | return ir::label_unbound(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `ir::label_unbound()` [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/irgen.rs:365:9 [INFO] [stderr] | [INFO] [stderr] 365 | return x; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `x` [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/irgen.rs:371:9 [INFO] [stderr] | [INFO] [stderr] 371 | return x; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `x` [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/irgen.rs:392:9 [INFO] [stderr] | [INFO] [stderr] 392 | return idx; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `idx` [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: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/lex.rs:156:16 [INFO] [stderr] | [INFO] [stderr] 156 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 157 | | if let Ok(x) = s.parse::() { Token::INTLIT(x) } else { self.bad() } [INFO] [stderr] 158 | | } [INFO] [stderr] | |_________^ help: try: `if let Ok(x) = s.parse::() { Token::INTLIT(x) } else { self.bad() }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lex.rs:167:9 [INFO] [stderr] | [INFO] [stderr] 167 | return s; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `s` [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/names.rs:33:9 [INFO] [stderr] | [INFO] [stderr] 33 | return Name::N(x as u32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Name::N(x as u32)` [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/parse.rs:224:9 [INFO] [stderr] | [INFO] [stderr] 224 | return Ok(lhs); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(lhs)` [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/parse.rs:322:9 [INFO] [stderr] | [INFO] [stderr] 322 | return t; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `t` [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/parse.rs:331:9 [INFO] [stderr] | [INFO] [stderr] 331 | return self.l.next(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.l.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/env.rs:80:9 [INFO] [stderr] | [INFO] [stderr] 80 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [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/env.rs:101:9 [INFO] [stderr] | [INFO] [stderr] 101 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `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: long literal lacking separators [INFO] [stderr] --> src/ir.rs:77:24 [INFO] [stderr] | [INFO] [stderr] 77 | pub const NULL : u32 = 911911; // A `prev` or `next` link without a target (visually distinct) [INFO] [stderr] | ^^^^^^ help: consider: `911_911` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/ir.rs:115:27 [INFO] [stderr] | [INFO] [stderr] 115 | pub const UNBOUND : u32 = 0xFFFFFFFF; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xFFFF_FFFF` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/irgen.rs:13:5 [INFO] [stderr] | [INFO] [stderr] 13 | return irp; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `irp` [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/irgen.rs:221:17 [INFO] [stderr] | [INFO] [stderr] 221 | return er; [INFO] [stderr] | ^^^^^^^^^^ help: remove `return` as shown: `er` [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/irgen.rs:257:9 [INFO] [stderr] | [INFO] [stderr] 257 | return l; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `l` [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/irgen.rs:263:9 [INFO] [stderr] | [INFO] [stderr] 263 | return l; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `l` [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/irgen.rs:270:9 [INFO] [stderr] | [INFO] [stderr] 270 | return l; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `l` [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/irgen.rs:274:9 [INFO] [stderr] | [INFO] [stderr] 274 | return self.add_instr(Op::GetLocal(l)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.add_instr(Op::GetLocal(l))` [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/irgen.rs:322:9 [INFO] [stderr] | [INFO] [stderr] 322 | return self.add_instr(Op::Literal(l)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.add_instr(Op::Literal(l))` [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/irgen.rs:326:9 [INFO] [stderr] | [INFO] [stderr] 326 | return self.add_instr(Op::Incoming(arg)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.add_instr(Op::Incoming(arg))` [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/irgen.rs:330:9 [INFO] [stderr] | [INFO] [stderr] 330 | return self.add_instr(Op::Op1(op, rs)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.add_instr(Op::Op1(op, rs))` [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/irgen.rs:334:9 [INFO] [stderr] | [INFO] [stderr] 334 | return self.add_instr(Op::Op2(op, rs1, rs2)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.add_instr(Op::Op2(op, rs1, rs2))` [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/irgen.rs:338:9 [INFO] [stderr] | [INFO] [stderr] 338 | return ir::label_unbound(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `ir::label_unbound()` [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/irgen.rs:365:9 [INFO] [stderr] | [INFO] [stderr] 365 | return x; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `x` [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/irgen.rs:371:9 [INFO] [stderr] | [INFO] [stderr] 371 | return x; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `x` [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/irgen.rs:392:9 [INFO] [stderr] | [INFO] [stderr] 392 | return idx; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `idx` [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: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/lex.rs:156:16 [INFO] [stderr] | [INFO] [stderr] 156 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 157 | | if let Ok(x) = s.parse::() { Token::INTLIT(x) } else { self.bad() } [INFO] [stderr] 158 | | } [INFO] [stderr] | |_________^ help: try: `if let Ok(x) = s.parse::() { Token::INTLIT(x) } else { self.bad() }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lex.rs:167:9 [INFO] [stderr] | [INFO] [stderr] 167 | return s; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `s` [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/names.rs:33:9 [INFO] [stderr] | [INFO] [stderr] 33 | return Name::N(x as u32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Name::N(x as u32)` [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/parse.rs:224:9 [INFO] [stderr] | [INFO] [stderr] 224 | return Ok(lhs); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(lhs)` [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/parse.rs:322:9 [INFO] [stderr] | [INFO] [stderr] 322 | return t; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `t` [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/parse.rs:331:9 [INFO] [stderr] | [INFO] [stderr] 331 | return self.l.next(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.l.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: variant is never constructed: `Nop` [INFO] [stderr] --> src/ir.rs:87:5 [INFO] [stderr] | [INFO] [stderr] 87 | Nop, [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Notreached` [INFO] [stderr] --> src/ir.rs:88:5 [INFO] [stderr] | [INFO] [stderr] 88 | Notreached, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `nop` [INFO] [stderr] --> src/irgen.rs:313:5 [INFO] [stderr] | [INFO] [stderr] 313 | fn nop(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `notreached` [INFO] [stderr] --> src/irgen.rs:317:5 [INFO] [stderr] | [INFO] [stderr] 317 | fn notreached(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `lookup` [INFO] [stderr] --> src/names.rs:36:5 [INFO] [stderr] | [INFO] [stderr] 36 | pub fn lookup(&self, id:Name) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/ast.rs:80:5 [INFO] [stderr] | [INFO] [stderr] 80 | / pub fn new(defn: VarDefn) -> Stmt { [INFO] [stderr] 81 | | Stmt::Var(Box::new(VarDefnStmt{ defn: defn })) [INFO] [stderr] 82 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_ret_no_self)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/ast.rs:93:5 [INFO] [stderr] | [INFO] [stderr] 93 | / pub fn new(phrases: Vec) -> Stmt { [INFO] [stderr] 94 | | Stmt::Block(Box::new( BlockStmt { phrases: phrases } )) [INFO] [stderr] 95 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/ast.rs:106:5 [INFO] [stderr] | [INFO] [stderr] 106 | / pub fn new(expr: Expr) -> Stmt { [INFO] [stderr] 107 | | Stmt::Expr(Box::new( ExprStmt { expr: expr } )) [INFO] [stderr] 108 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/ast.rs:121:5 [INFO] [stderr] | [INFO] [stderr] 121 | / pub fn new(test: Expr, consequent: Stmt, alternate: Option) -> Stmt { [INFO] [stderr] 122 | | Stmt::If(Box::new(IfStmt { test: test, consequent: consequent, alternate: alternate })) [INFO] [stderr] 123 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/ast.rs:135:5 [INFO] [stderr] | [INFO] [stderr] 135 | / pub fn new(test: Expr, body: Stmt) -> Stmt { [INFO] [stderr] 136 | | Stmt::While(Box::new(WhileStmt { test: test, body: body })) [INFO] [stderr] 137 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/ast.rs:149:5 [INFO] [stderr] | [INFO] [stderr] 149 | / pub fn new(expr: Option) -> Stmt { [INFO] [stderr] 150 | | Stmt::Return(Box::new(ReturnStmt { expr: expr, ty: Cell::new(TypeName::VOID) })) [INFO] [stderr] 151 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/ast.rs:185:5 [INFO] [stderr] | [INFO] [stderr] 185 | / pub fn new(op: Unop, expr: Expr) -> Expr { [INFO] [stderr] 186 | | Expr::Unary(Box::new( UnaryExpr { op: op, expr: expr, ty: Cell::new(TypeName::VOID) } )) [INFO] [stderr] 187 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/ast.rs:219:5 [INFO] [stderr] | [INFO] [stderr] 219 | / pub fn new(op: Binop, lhs: Expr, rhs: Expr) -> Expr { [INFO] [stderr] 220 | | Expr::Binary(Box::new( BinaryExpr { op: op, lhs: lhs, rhs: rhs, ty: Cell::new(TypeName::VOID) } )) [INFO] [stderr] 221 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/ast.rs:234:5 [INFO] [stderr] | [INFO] [stderr] 234 | / pub fn new(name: Name, args: Vec) -> Expr { [INFO] [stderr] 235 | | Expr::Call(Box::new(CallExpr { name: name, args: args, ty: Cell::new(TypeName::VOID) })) [INFO] [stderr] 236 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/ast.rs:249:5 [INFO] [stderr] | [INFO] [stderr] 249 | / pub fn new(name: Name, expr: Expr) -> Expr { [INFO] [stderr] 250 | | Expr::Assign(Box::new(AssignExpr { name: name, expr: expr, ty: Cell::new(TypeName::VOID) })) [INFO] [stderr] 251 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/ast.rs:262:5 [INFO] [stderr] | [INFO] [stderr] 262 | / pub fn new(n: i64) -> Expr { [INFO] [stderr] 263 | | Expr::IntLit(Box::new(IntLitExpr { n: n })) [INFO] [stderr] 264 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/ast.rs:275:5 [INFO] [stderr] | [INFO] [stderr] 275 | / pub fn new(n: f64) -> Expr { [INFO] [stderr] 276 | | Expr::NumLit(Box::new(NumLitExpr { n: n })) [INFO] [stderr] 277 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/ast.rs:289:5 [INFO] [stderr] | [INFO] [stderr] 289 | / pub fn new(name: Name) -> Expr { [INFO] [stderr] 290 | | Expr::Id(Box::new(IdExpr { name: name, ty: Cell::new(TypeName::VOID) })) [INFO] [stderr] 291 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/env.rs:25:31 [INFO] [stderr] | [INFO] [stderr] 25 | pub fn lookup(&self, name:&Name) -> Option { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Name` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/env.rs:35:39 [INFO] [stderr] | [INFO] [stderr] 35 | pub fn add_extern(&mut self, name:&Name, b:Denotation) { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/env.rs:39:39 [INFO] [stderr] | [INFO] [stderr] 39 | pub fn add_global(&mut self, name:&Name, b:Denotation) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/env.rs:68:31 [INFO] [stderr] | [INFO] [stderr] 68 | pub fn lookup(&self, name:&Name) -> Option { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/env.rs:75:32 [INFO] [stderr] | [INFO] [stderr] 75 | pub fn add(&mut self, name:&Name, denotation:Denotation) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/env.rs:83:28 [INFO] [stderr] | [INFO] [stderr] 83 | fn lookup_(&self, name:&Name) -> Option<(Denotation, i32)> { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/env.rs:84:12 [INFO] [stderr] | [INFO] [stderr] 84 | if self.locals.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.locals.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: manual implementation of an assign operation [INFO] [stderr] --> src/env.rs:95:21 [INFO] [stderr] | [INFO] [stderr] 95 | i = i+1; [INFO] [stderr] | ^^^^^^^ help: replace it with: `i += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/env.rs:97:17 [INFO] [stderr] | [INFO] [stderr] 97 | r = r-1; [INFO] [stderr] | ^^^^^^^ help: replace it with: `r -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/env.rs:98:17 [INFO] [stderr] | [INFO] [stderr] 98 | level = level + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: replace it with: `level += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: the variable `k` is used as a loop counter. Consider using `for (k, item) in &fun.formals.enumerate()` or similar iterators [INFO] [stderr] --> src/irgen.rs:61:19 [INFO] [stderr] | [INFO] [stderr] 61 | for vd in &fun.formals { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/irgen.rs:91:9 [INFO] [stderr] | [INFO] [stderr] 91 | / match stmt { [INFO] [stderr] 92 | | &Stmt::Block(ref s) => self.gen_block(s), [INFO] [stderr] 93 | | &Stmt::Expr(ref s) => { self.gen_expr(&s.expr); } [INFO] [stderr] 94 | | &Stmt::If(ref s) => self.gen_if(s), [INFO] [stderr] ... | [INFO] [stderr] 97 | | &Stmt::Var(ref s) => self.gen_vardefn(s) [INFO] [stderr] 98 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 91 | match *stmt { [INFO] [stderr] 92 | Stmt::Block(ref s) => self.gen_block(s), [INFO] [stderr] 93 | Stmt::Expr(ref s) => { self.gen_expr(&s.expr); } [INFO] [stderr] 94 | Stmt::If(ref s) => self.gen_if(s), [INFO] [stderr] 95 | Stmt::Return(ref s) => self.gen_return(s), [INFO] [stderr] 96 | Stmt::While(ref s) => self.gen_while(s), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/irgen.rs:101:34 [INFO] [stderr] | [INFO] [stderr] 101 | fn gen_block(&mut self, stmt:&Box) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `&BlockStmt` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::borrowed_box)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/irgen.rs:109:32 [INFO] [stderr] | [INFO] [stderr] 109 | fn gen_if(&mut self, stmt: &Box) { [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `&IfStmt` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/irgen.rs:132:35 [INFO] [stderr] | [INFO] [stderr] 132 | fn gen_while(&mut self, stmt: &Box) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `&WhileStmt` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/irgen.rs:145:35 [INFO] [stderr] | [INFO] [stderr] 145 | fn gen_return(&mut self, stmt:&Box) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `&ReturnStmt` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/irgen.rs:147:9 [INFO] [stderr] | [INFO] [stderr] 147 | / match &stmt.expr { [INFO] [stderr] 148 | | &Some(ref e) => { [INFO] [stderr] 149 | | let val = self.gen_expr(e); [INFO] [stderr] 150 | | self.returnval(val, last_block); [INFO] [stderr] ... | [INFO] [stderr] 154 | | } [INFO] [stderr] 155 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 147 | match stmt.expr { [INFO] [stderr] 148 | Some(ref e) => { [INFO] [stderr] 149 | let val = self.gen_expr(e); [INFO] [stderr] 150 | self.returnval(val, last_block); [INFO] [stderr] 151 | } [INFO] [stderr] 152 | None => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/irgen.rs:158:36 [INFO] [stderr] | [INFO] [stderr] 158 | fn gen_vardefn(&mut self, stmt:&Box) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `&VarDefnStmt` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/irgen.rs:167:9 [INFO] [stderr] | [INFO] [stderr] 167 | / match e { [INFO] [stderr] 168 | | &Expr::Unary(ref u) => { [INFO] [stderr] 169 | | let e0 = self.gen_expr(&u.expr); [INFO] [stderr] 170 | | let t = u.ty.get(); [INFO] [stderr] ... | [INFO] [stderr] 247 | | } [INFO] [stderr] 248 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 167 | match *e { [INFO] [stderr] 168 | Expr::Unary(ref u) => { [INFO] [stderr] 169 | let e0 = self.gen_expr(&u.expr); [INFO] [stderr] 170 | let t = u.ty.get(); [INFO] [stderr] 171 | match u.op { [INFO] [stderr] 172 | Unop::Negate => self.op1(typed_o1(t, O1::NegI, O1::NegN), e0), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/irgen.rs:254:38 [INFO] [stderr] | [INFO] [stderr] 254 | fn new_local_int(&mut self, name:&Name) -> Local { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/irgen.rs:260:38 [INFO] [stderr] | [INFO] [stderr] 260 | fn new_local_num(&mut self, name:&Name) -> Local { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/irgen.rs:342:23 [INFO] [stderr] | [INFO] [stderr] 342 | debug_assert!(match &self.ir[self.last].op { [INFO] [stderr] | _______________________^ [INFO] [stderr] 343 | | &Op::Block(_) => true, [INFO] [stderr] 344 | | _ => false [INFO] [stderr] 345 | | }); [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 342 | debug_assert!(match self.ir[self.last].op { [INFO] [stderr] 343 | Op::Block(_) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/irgen.rs:351:23 [INFO] [stderr] | [INFO] [stderr] 351 | debug_assert!(match &self.ir[self.last].op { [INFO] [stderr] | _______________________^ [INFO] [stderr] 352 | | &Op::Jump(_) | &Op::Jcc(_,_,_,_) | &Op::ReturnVal(_,_) | &Op::ReturnVoid(_) => true, [INFO] [stderr] 353 | | _ => false [INFO] [stderr] 354 | | }); [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 351 | debug_assert!(match self.ir[self.last].op { [INFO] [stderr] 352 | Op::Jump(_) | Op::Jcc(_,_,_,_) | Op::ReturnVal(_,_) | Op::ReturnVoid(_) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/irgen.rs:380:23 [INFO] [stderr] | [INFO] [stderr] 380 | debug_assert!(self.ir.len() == 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.ir.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: the `c @ _` pattern can be written as just `c` [INFO] [stderr] --> src/lex.rs:97:13 [INFO] [stderr] | [INFO] [stderr] 97 | c @ _ => { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lex.rs:214:47 [INFO] [stderr] | [INFO] [stderr] 214 | Some(Ok(c)) => char::from_u32(c as u32).unwrap(), [INFO] [stderr] | ^^^^^^^^ help: try: `u32::from(c)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/names.rs:25:32 [INFO] [stderr] | [INFO] [stderr] 25 | pub fn add(&mut self, name:&String) -> Name { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/tycheck.rs:154:36 [INFO] [stderr] | [INFO] [stderr] 154 | fn check_block(&mut self, stmt:&Box) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `&BlockStmt` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Nop` [INFO] [stderr] --> src/ir.rs:87:5 [INFO] [stderr] | [INFO] [stderr] 87 | Nop, [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Notreached` [INFO] [stderr] --> src/ir.rs:88:5 [INFO] [stderr] | [INFO] [stderr] 88 | Notreached, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `nop` [INFO] [stderr] --> src/irgen.rs:313:5 [INFO] [stderr] | [INFO] [stderr] 313 | fn nop(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `notreached` [INFO] [stderr] --> src/irgen.rs:317:5 [INFO] [stderr] | [INFO] [stderr] 317 | fn notreached(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `lookup` [INFO] [stderr] --> src/names.rs:36:5 [INFO] [stderr] | [INFO] [stderr] 36 | pub fn lookup(&self, id:Name) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/tycheck.rs:168:33 [INFO] [stderr] | [INFO] [stderr] 168 | fn check_if(&mut self, stmt:&Box) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `&IfStmt` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/tycheck.rs:171:9 [INFO] [stderr] | [INFO] [stderr] 171 | / match &stmt.alternate { [INFO] [stderr] 172 | | &None => { [INFO] [stderr] 173 | | try!(self.check_stmt(&stmt.consequent)); [INFO] [stderr] 174 | | Ok(false) [INFO] [stderr] ... | [INFO] [stderr] 180 | | } [INFO] [stderr] 181 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 171 | match stmt.alternate { [INFO] [stderr] 172 | None => { [INFO] [stderr] 173 | try!(self.check_stmt(&stmt.consequent)); [INFO] [stderr] 174 | Ok(false) [INFO] [stderr] 175 | } [INFO] [stderr] 176 | Some(ref alternate) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/tycheck.rs:184:36 [INFO] [stderr] | [INFO] [stderr] 184 | fn check_while(&mut self, stmt:&Box) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `&WhileStmt` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/tycheck.rs:191:37 [INFO] [stderr] | [INFO] [stderr] 191 | fn check_return(&mut self, stmt:&Box) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `&ReturnStmt` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/tycheck.rs:288:32 [INFO] [stderr] | [INFO] [stderr] 288 | fn add_var(&mut self, name:&Name, ty:TypeName) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/tycheck.rs:292:31 [INFO] [stderr] | [INFO] [stderr] 292 | fn lookup_var(&self, name:&Name) -> Result { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/tycheck.rs:303:30 [INFO] [stderr] | [INFO] [stderr] 303 | fn lookup_fn(&self, name:&Name) -> Result { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/ast.rs:80:5 [INFO] [stderr] | [INFO] [stderr] 80 | / pub fn new(defn: VarDefn) -> Stmt { [INFO] [stderr] 81 | | Stmt::Var(Box::new(VarDefnStmt{ defn: defn })) [INFO] [stderr] 82 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_ret_no_self)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/ast.rs:93:5 [INFO] [stderr] | [INFO] [stderr] 93 | / pub fn new(phrases: Vec) -> Stmt { [INFO] [stderr] 94 | | Stmt::Block(Box::new( BlockStmt { phrases: phrases } )) [INFO] [stderr] 95 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/ast.rs:106:5 [INFO] [stderr] | [INFO] [stderr] 106 | / pub fn new(expr: Expr) -> Stmt { [INFO] [stderr] 107 | | Stmt::Expr(Box::new( ExprStmt { expr: expr } )) [INFO] [stderr] 108 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/ast.rs:121:5 [INFO] [stderr] | [INFO] [stderr] 121 | / pub fn new(test: Expr, consequent: Stmt, alternate: Option) -> Stmt { [INFO] [stderr] 122 | | Stmt::If(Box::new(IfStmt { test: test, consequent: consequent, alternate: alternate })) [INFO] [stderr] 123 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/ast.rs:135:5 [INFO] [stderr] | [INFO] [stderr] 135 | / pub fn new(test: Expr, body: Stmt) -> Stmt { [INFO] [stderr] 136 | | Stmt::While(Box::new(WhileStmt { test: test, body: body })) [INFO] [stderr] 137 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/ast.rs:149:5 [INFO] [stderr] | [INFO] [stderr] 149 | / pub fn new(expr: Option) -> Stmt { [INFO] [stderr] 150 | | Stmt::Return(Box::new(ReturnStmt { expr: expr, ty: Cell::new(TypeName::VOID) })) [INFO] [stderr] 151 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/ast.rs:185:5 [INFO] [stderr] | [INFO] [stderr] 185 | / pub fn new(op: Unop, expr: Expr) -> Expr { [INFO] [stderr] 186 | | Expr::Unary(Box::new( UnaryExpr { op: op, expr: expr, ty: Cell::new(TypeName::VOID) } )) [INFO] [stderr] 187 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/ast.rs:219:5 [INFO] [stderr] | [INFO] [stderr] 219 | / pub fn new(op: Binop, lhs: Expr, rhs: Expr) -> Expr { [INFO] [stderr] 220 | | Expr::Binary(Box::new( BinaryExpr { op: op, lhs: lhs, rhs: rhs, ty: Cell::new(TypeName::VOID) } )) [INFO] [stderr] 221 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/ast.rs:234:5 [INFO] [stderr] | [INFO] [stderr] 234 | / pub fn new(name: Name, args: Vec) -> Expr { [INFO] [stderr] 235 | | Expr::Call(Box::new(CallExpr { name: name, args: args, ty: Cell::new(TypeName::VOID) })) [INFO] [stderr] 236 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/ast.rs:249:5 [INFO] [stderr] | [INFO] [stderr] 249 | / pub fn new(name: Name, expr: Expr) -> Expr { [INFO] [stderr] 250 | | Expr::Assign(Box::new(AssignExpr { name: name, expr: expr, ty: Cell::new(TypeName::VOID) })) [INFO] [stderr] 251 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/ast.rs:262:5 [INFO] [stderr] | [INFO] [stderr] 262 | / pub fn new(n: i64) -> Expr { [INFO] [stderr] 263 | | Expr::IntLit(Box::new(IntLitExpr { n: n })) [INFO] [stderr] 264 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/ast.rs:275:5 [INFO] [stderr] | [INFO] [stderr] 275 | / pub fn new(n: f64) -> Expr { [INFO] [stderr] 276 | | Expr::NumLit(Box::new(NumLitExpr { n: n })) [INFO] [stderr] 277 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: methods called `new` usually return `Self` [INFO] [stderr] --> src/ast.rs:289:5 [INFO] [stderr] | [INFO] [stderr] 289 | / pub fn new(name: Name) -> Expr { [INFO] [stderr] 290 | | Expr::Id(Box::new(IdExpr { name: name, ty: Cell::new(TypeName::VOID) })) [INFO] [stderr] 291 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/env.rs:25:31 [INFO] [stderr] | [INFO] [stderr] 25 | pub fn lookup(&self, name:&Name) -> Option { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Name` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/env.rs:35:39 [INFO] [stderr] | [INFO] [stderr] 35 | pub fn add_extern(&mut self, name:&Name, b:Denotation) { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/env.rs:39:39 [INFO] [stderr] | [INFO] [stderr] 39 | pub fn add_global(&mut self, name:&Name, b:Denotation) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/env.rs:68:31 [INFO] [stderr] | [INFO] [stderr] 68 | pub fn lookup(&self, name:&Name) -> Option { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/env.rs:75:32 [INFO] [stderr] | [INFO] [stderr] 75 | pub fn add(&mut self, name:&Name, denotation:Denotation) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/env.rs:83:28 [INFO] [stderr] | [INFO] [stderr] 83 | fn lookup_(&self, name:&Name) -> Option<(Denotation, i32)> { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/env.rs:84:12 [INFO] [stderr] | [INFO] [stderr] 84 | if self.locals.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.locals.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: manual implementation of an assign operation [INFO] [stderr] --> src/env.rs:95:21 [INFO] [stderr] | [INFO] [stderr] 95 | i = i+1; [INFO] [stderr] | ^^^^^^^ help: replace it with: `i += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/env.rs:97:17 [INFO] [stderr] | [INFO] [stderr] 97 | r = r-1; [INFO] [stderr] | ^^^^^^^ help: replace it with: `r -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/env.rs:98:17 [INFO] [stderr] | [INFO] [stderr] 98 | level = level + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: replace it with: `level += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: the variable `k` is used as a loop counter. Consider using `for (k, item) in &fun.formals.enumerate()` or similar iterators [INFO] [stderr] --> src/irgen.rs:61:19 [INFO] [stderr] | [INFO] [stderr] 61 | for vd in &fun.formals { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/irgen.rs:91:9 [INFO] [stderr] | [INFO] [stderr] 91 | / match stmt { [INFO] [stderr] 92 | | &Stmt::Block(ref s) => self.gen_block(s), [INFO] [stderr] 93 | | &Stmt::Expr(ref s) => { self.gen_expr(&s.expr); } [INFO] [stderr] 94 | | &Stmt::If(ref s) => self.gen_if(s), [INFO] [stderr] ... | [INFO] [stderr] 97 | | &Stmt::Var(ref s) => self.gen_vardefn(s) [INFO] [stderr] 98 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 91 | match *stmt { [INFO] [stderr] 92 | Stmt::Block(ref s) => self.gen_block(s), [INFO] [stderr] 93 | Stmt::Expr(ref s) => { self.gen_expr(&s.expr); } [INFO] [stderr] 94 | Stmt::If(ref s) => self.gen_if(s), [INFO] [stderr] 95 | Stmt::Return(ref s) => self.gen_return(s), [INFO] [stderr] 96 | Stmt::While(ref s) => self.gen_while(s), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/irgen.rs:101:34 [INFO] [stderr] | [INFO] [stderr] 101 | fn gen_block(&mut self, stmt:&Box) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `&BlockStmt` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::borrowed_box)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/irgen.rs:109:32 [INFO] [stderr] | [INFO] [stderr] 109 | fn gen_if(&mut self, stmt: &Box) { [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `&IfStmt` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/irgen.rs:132:35 [INFO] [stderr] | [INFO] [stderr] 132 | fn gen_while(&mut self, stmt: &Box) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `&WhileStmt` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/irgen.rs:145:35 [INFO] [stderr] | [INFO] [stderr] 145 | fn gen_return(&mut self, stmt:&Box) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `&ReturnStmt` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/irgen.rs:147:9 [INFO] [stderr] | [INFO] [stderr] 147 | / match &stmt.expr { [INFO] [stderr] 148 | | &Some(ref e) => { [INFO] [stderr] 149 | | let val = self.gen_expr(e); [INFO] [stderr] 150 | | self.returnval(val, last_block); [INFO] [stderr] ... | [INFO] [stderr] 154 | | } [INFO] [stderr] 155 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 147 | match stmt.expr { [INFO] [stderr] 148 | Some(ref e) => { [INFO] [stderr] 149 | let val = self.gen_expr(e); [INFO] [stderr] 150 | self.returnval(val, last_block); [INFO] [stderr] 151 | } [INFO] [stderr] 152 | None => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/irgen.rs:158:36 [INFO] [stderr] | [INFO] [stderr] 158 | fn gen_vardefn(&mut self, stmt:&Box) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `&VarDefnStmt` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/irgen.rs:167:9 [INFO] [stderr] | [INFO] [stderr] 167 | / match e { [INFO] [stderr] 168 | | &Expr::Unary(ref u) => { [INFO] [stderr] 169 | | let e0 = self.gen_expr(&u.expr); [INFO] [stderr] 170 | | let t = u.ty.get(); [INFO] [stderr] ... | [INFO] [stderr] 247 | | } [INFO] [stderr] 248 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 167 | match *e { [INFO] [stderr] 168 | Expr::Unary(ref u) => { [INFO] [stderr] 169 | let e0 = self.gen_expr(&u.expr); [INFO] [stderr] 170 | let t = u.ty.get(); [INFO] [stderr] 171 | match u.op { [INFO] [stderr] 172 | Unop::Negate => self.op1(typed_o1(t, O1::NegI, O1::NegN), e0), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/irgen.rs:254:38 [INFO] [stderr] | [INFO] [stderr] 254 | fn new_local_int(&mut self, name:&Name) -> Local { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/irgen.rs:260:38 [INFO] [stderr] | [INFO] [stderr] 260 | fn new_local_num(&mut self, name:&Name) -> Local { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/irgen.rs:342:23 [INFO] [stderr] | [INFO] [stderr] 342 | debug_assert!(match &self.ir[self.last].op { [INFO] [stderr] | _______________________^ [INFO] [stderr] 343 | | &Op::Block(_) => true, [INFO] [stderr] 344 | | _ => false [INFO] [stderr] 345 | | }); [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 342 | debug_assert!(match self.ir[self.last].op { [INFO] [stderr] 343 | Op::Block(_) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/irgen.rs:351:23 [INFO] [stderr] | [INFO] [stderr] 351 | debug_assert!(match &self.ir[self.last].op { [INFO] [stderr] | _______________________^ [INFO] [stderr] 352 | | &Op::Jump(_) | &Op::Jcc(_,_,_,_) | &Op::ReturnVal(_,_) | &Op::ReturnVoid(_) => true, [INFO] [stderr] 353 | | _ => false [INFO] [stderr] 354 | | }); [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 351 | debug_assert!(match self.ir[self.last].op { [INFO] [stderr] 352 | Op::Jump(_) | Op::Jcc(_,_,_,_) | Op::ReturnVal(_,_) | Op::ReturnVoid(_) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/irgen.rs:380:23 [INFO] [stderr] | [INFO] [stderr] 380 | debug_assert!(self.ir.len() == 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.ir.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: the `c @ _` pattern can be written as just `c` [INFO] [stderr] --> src/lex.rs:97:13 [INFO] [stderr] | [INFO] [stderr] 97 | c @ _ => { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/lex.rs:214:47 [INFO] [stderr] | [INFO] [stderr] 214 | Some(Ok(c)) => char::from_u32(c as u32).unwrap(), [INFO] [stderr] | ^^^^^^^^ help: try: `u32::from(c)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/names.rs:25:32 [INFO] [stderr] | [INFO] [stderr] 25 | pub fn add(&mut self, name:&String) -> Name { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/tycheck.rs:154:36 [INFO] [stderr] | [INFO] [stderr] 154 | fn check_block(&mut self, stmt:&Box) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `&BlockStmt` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/tycheck.rs:168:33 [INFO] [stderr] | [INFO] [stderr] 168 | fn check_if(&mut self, stmt:&Box) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `&IfStmt` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/tycheck.rs:171:9 [INFO] [stderr] | [INFO] [stderr] 171 | / match &stmt.alternate { [INFO] [stderr] 172 | | &None => { [INFO] [stderr] 173 | | try!(self.check_stmt(&stmt.consequent)); [INFO] [stderr] 174 | | Ok(false) [INFO] [stderr] ... | [INFO] [stderr] 180 | | } [INFO] [stderr] 181 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 171 | match stmt.alternate { [INFO] [stderr] 172 | None => { [INFO] [stderr] 173 | try!(self.check_stmt(&stmt.consequent)); [INFO] [stderr] 174 | Ok(false) [INFO] [stderr] 175 | } [INFO] [stderr] 176 | Some(ref alternate) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/tycheck.rs:184:36 [INFO] [stderr] | [INFO] [stderr] 184 | fn check_while(&mut self, stmt:&Box) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `&WhileStmt` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/tycheck.rs:191:37 [INFO] [stderr] | [INFO] [stderr] 191 | fn check_return(&mut self, stmt:&Box) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `&ReturnStmt` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/tycheck.rs:288:32 [INFO] [stderr] | [INFO] [stderr] 288 | fn add_var(&mut self, name:&Name, ty:TypeName) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/tycheck.rs:292:31 [INFO] [stderr] | [INFO] [stderr] 292 | fn lookup_var(&self, name:&Name) -> Result { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/tycheck.rs:303:30 [INFO] [stderr] | [INFO] [stderr] 303 | fn lookup_fn(&self, name:&Name) -> Result { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 1.77s [INFO] running `"docker" "inspect" "836a6a36424730163509a1a47915af4c22094cff607ed17bec71bdda7ad0b42b"` [INFO] running `"docker" "rm" "-f" "836a6a36424730163509a1a47915af4c22094cff607ed17bec71bdda7ad0b42b"` [INFO] [stdout] 836a6a36424730163509a1a47915af4c22094cff607ed17bec71bdda7ad0b42b