branch: elpa/flycheck
commit 0e18f7fba13aa0436bdd952f06a0b7ab54ed1cd1
Author: Bozhidar Batsov <[email protected]>
Commit: Bozhidar Batsov <[email protected]>
Update Rust test expectations for current compiler and add clippy test
Update all rust-cargo and rust checker test expectations to match
Rust 1.91 output: changed message formats, note grouping, and new
diagnostics. Add fn main() to standalone test files to avoid flaky
E0601 errors. Add a new rust-clippy checker test.
---
.../resources/language/rust/clippy-test/Cargo.toml | 3 +
.../language/rust/clippy-test/src/main.rs | 7 ++
.../language/rust/flycheck-test/src/macro-error.rs | 2 +-
.../rust/flycheck-test/src/multiline-error.rs | 2 +-
.../language/rust/standalone-importing.rs | 4 +
test/specs/languages/test-rust.el | 121 ++++++++++-----------
6 files changed, 72 insertions(+), 67 deletions(-)
diff --git a/test/resources/language/rust/clippy-test/Cargo.toml
b/test/resources/language/rust/clippy-test/Cargo.toml
new file mode 100644
index 0000000000..b08fbe6ff9
--- /dev/null
+++ b/test/resources/language/rust/clippy-test/Cargo.toml
@@ -0,0 +1,3 @@
+[package]
+name = "clippy-test"
+version = "0.1.0"
diff --git a/test/resources/language/rust/clippy-test/src/main.rs
b/test/resources/language/rust/clippy-test/src/main.rs
new file mode 100644
index 0000000000..5b0932ef03
--- /dev/null
+++ b/test/resources/language/rust/clippy-test/src/main.rs
@@ -0,0 +1,7 @@
+fn returns_true() -> bool {
+ return true;
+}
+
+fn main() {
+ let _ = returns_true();
+}
diff --git a/test/resources/language/rust/flycheck-test/src/macro-error.rs
b/test/resources/language/rust/flycheck-test/src/macro-error.rs
index c2506bd5f1..a0013fb017 100644
--- a/test/resources/language/rust/flycheck-test/src/macro-error.rs
+++ b/test/resources/language/rust/flycheck-test/src/macro-error.rs
@@ -1,3 +1,3 @@
-fn foo() {
+fn main() {
println!("{}");
}
diff --git a/test/resources/language/rust/flycheck-test/src/multiline-error.rs
b/test/resources/language/rust/flycheck-test/src/multiline-error.rs
index 930b8c8feb..58d84009b9 100644
--- a/test/resources/language/rust/flycheck-test/src/multiline-error.rs
+++ b/test/resources/language/rust/flycheck-test/src/multiline-error.rs
@@ -2,7 +2,7 @@ fn foo(bar: u8) -> u8 {
bar + 1
}
-fn spam() {
+fn main() {
let i: i8 = -1;
foo(i);
}
diff --git a/test/resources/language/rust/standalone-importing.rs
b/test/resources/language/rust/standalone-importing.rs
new file mode 100644
index 0000000000..92b688611b
--- /dev/null
+++ b/test/resources/language/rust/standalone-importing.rs
@@ -0,0 +1,4 @@
+use super::nonexistent;
+fn main() {
+ println!("hey {}", nonexistent::BAR);
+}
diff --git a/test/specs/languages/test-rust.el
b/test/specs/languages/test-rust.el
index e223257ca6..da00384793 100644
--- a/test/specs/languages/test-rust.el
+++ b/test/specs/languages/test-rust.el
@@ -35,10 +35,10 @@
(flycheck-buttercup-cargo-clean "language/rust/flycheck-test/Cargo.toml")
(flycheck-buttercup-should-syntax-check
"language/rust/flycheck-test/src/warnings.rs" 'rust-mode
- '(3 4 warning "function is never used: `main`"
+ '(3 4 warning "function `main` is never used"
:checker rust-cargo :id "dead_code" :group 1
:end-line 3 :end-column 8)
- '(3 4 info "`#[warn(dead_code)]` on by default"
+ '(3 4 info "`#[warn(dead_code)]` (part of `#[warn(unused)]`) on by
default"
:checker rust-cargo :id "dead_code" :group 1
:end-line 3 :end-column 8)
'(4 9 warning "unused variable: `x`"
@@ -55,10 +55,10 @@
(flycheck-buttercup-cargo-clean "language/rust/flycheck-test/Cargo.toml")
(flycheck-buttercup-should-syntax-check
"language/rust/flycheck-test/src/warnings.rs" 'rust-mode
- '(3 4 warning "function is never used: `main`"
+ '(3 4 warning "function `main` is never used"
:checker rust-cargo :id "dead_code" :group 1
:end-line 3 :end-column 8)
- '(3 4 info "`#[warn(dead_code)]` on by default"
+ '(3 4 info "`#[warn(dead_code)]` (part of `#[warn(unused)]`) on by
default"
:checker rust-cargo :id "dead_code" :group 1
:end-line 3 :end-column 8)
'(4 9 warning "unused variable: `x`"
@@ -86,35 +86,20 @@
(flycheck-buttercup-cargo-clean
"language/rust/cargo-targets/Cargo.toml")
(flycheck-buttercup-should-syntax-check
"language/rust/cargo-targets/src/lib.rs" 'rust-mode
- '(3 4 warning "function is never used: `foo_lib`"
+ '(3 4 warning "function `foo_lib` is never used"
:checker rust-cargo :id "dead_code" :group 1
:end-line 3 :end-column 11)
- '(6 17 warning "unused variable: `foo_lib_test`"
- :checker rust-cargo :id "unused_variables" :group 2
- :end-line 6 :end-column 29)
- '(6 17 info "`#[warn(unused_variables)]` on by default"
- :checker rust-cargo :id "unused_variables" :group 2
- :end-line 6 :end-column 29)
- '(6 17 info "if this is intentional, prefix it with an underscore:
`_foo_lib_test`"
- :checker rust-cargo :id "unused_variables" :group 2
- :end-line 6 :end-column 29)))
+ '(3 4 info "`#[warn(dead_code)]` (part of `#[warn(unused)]`) on by
default"
+ :checker rust-cargo :id "dead_code" :group 1
+ :end-line 3 :end-column 11)))
(let ((flycheck-rust-crate-type "lib"))
(flycheck-buttercup-cargo-clean
"language/rust/cargo-targets/Cargo.toml")
(flycheck-buttercup-should-syntax-check
"language/rust/cargo-targets/src/a.rs" 'rust-mode
- '(1 4 warning "function is never used: `foo_a`"
+ '(1 4 warning "function `foo_a` is never used"
:checker rust-cargo :id "dead_code" :group 1
- :end-line 1 :end-column 9)
- '(1 4 info "`#[warn(dead_code)]` on by default"
- :checker rust-cargo :id "dead_code" :group 1
- :end-line 1 :end-column 9)
- '(4 17 warning "unused variable: `foo_a_test`"
- :checker rust-cargo :id "unused_variables" :group 2
- :end-line 4 :end-column 27)
- '(4 17 info "if this is intentional, prefix it with an underscore:
`_foo_a_test`"
- :checker rust-cargo :id "unused_variables" :group 2
- :end-line 4 :end-column 27)))
+ :end-line 1 :end-column 9)))
(let ((flycheck-rust-crate-type "bin")
(flycheck-rust-binary-name "cargo-targets"))
@@ -124,18 +109,12 @@
'(1 17 warning "unused variable: `foo_main`"
:checker rust-cargo :id "unused_variables" :group 1
:end-line 1 :end-column 25)
- '(1 17 info "`#[warn(unused_variables)]` on by default"
+ '(1 17 info "`#[warn(unused_variables)]` (part of `#[warn(unused)]`)
on by default"
:checker rust-cargo :id "unused_variables" :group 1
:end-line 1 :end-column 25)
'(1 17 info "if this is intentional, prefix it with an underscore:
`_foo_main`"
:checker rust-cargo :id "unused_variables" :group 1
- :end-line 1 :end-column 25)
- '(4 17 warning "unused variable: `foo_main_test`"
- :checker rust-cargo :id "unused_variables" :group 2
- :end-line 4 :end-column 30)
- '(4 17 info "if this is intentional, prefix it with an underscore:
`_foo_main_test`"
- :checker rust-cargo :id "unused_variables" :group 2
- :end-line 4 :end-column 30)))
+ :end-line 1 :end-column 25)))
(let ((flycheck-rust-crate-type "bin")
(flycheck-rust-binary-name "a"))
@@ -145,18 +124,12 @@
'(1 17 warning "unused variable: `foo_bin_a`"
:checker rust-cargo :id "unused_variables" :group 1
:end-line 1 :end-column 26)
- '(1 17 info "`#[warn(unused_variables)]` on by default"
+ '(1 17 info "`#[warn(unused_variables)]` (part of `#[warn(unused)]`)
on by default"
:checker rust-cargo :id "unused_variables" :group 1
:end-line 1 :end-column 26)
'(1 17 info "if this is intentional, prefix it with an underscore:
`_foo_bin_a`"
:checker rust-cargo :id "unused_variables" :group 1
- :end-line 1 :end-column 26)
- '(4 17 warning "unused variable: `foo_bin_a_test`"
- :checker rust-cargo :id "unused_variables" :group 2
- :end-line 4 :end-column 31)
- '(4 17 info "if this is intentional, prefix it with an underscore:
`_foo_bin_a_test`"
- :checker rust-cargo :id "unused_variables" :group 2
- :end-line 4 :end-column 31)))
+ :end-line 1 :end-column 26)))
(let ((flycheck-rust-crate-type "bench")
(flycheck-rust-binary-name "a"))
@@ -166,7 +139,7 @@
'(1 17 warning "unused variable: `foo_bench_a`"
:checker rust-cargo :id "unused_variables" :group 1
:end-line 1 :end-column 28)
- '(1 17 info "`#[warn(unused_variables)]` on by default"
+ '(1 17 info "`#[warn(unused_variables)]` (part of `#[warn(unused)]`)
on by default"
:checker rust-cargo :id "unused_variables" :group 1
:end-line 1 :end-column 28)
'(1 17 info "if this is intentional, prefix it with an underscore:
`_foo_bench_a`"
@@ -187,16 +160,16 @@
'(2 16 warning "unused variable: `foo_test_a_test`"
:checker rust-cargo :id "unused_variables" :group 1
:end-line 2 :end-column 31)
- '(2 16 info "`#[warn(unused_variables)]` on by default"
+ '(2 16 info "`#[warn(unused_variables)]` (part of `#[warn(unused)]`)
on by default"
:checker rust-cargo :id "unused_variables" :group 1
:end-line 2 :end-column 31)
'(2 16 info "if this is intentional, prefix it with an underscore:
`_foo_test_a_test`"
:checker rust-cargo :id "unused_variables" :group 1
:end-line 2 :end-column 31)
- '(4 4 warning "function is never used: `foo_test_a`"
+ '(4 4 warning "function `foo_test_a` is never used"
:checker rust-cargo :id "dead_code" :group 2
:end-line 4 :end-column 14)
- '(4 4 info "`#[warn(dead_code)]` on by default"
+ '(4 4 info "`#[warn(dead_code)]` (part of `#[warn(unused)]`) on by
default"
:checker rust-cargo :id "dead_code" :group 2
:end-line 4 :end-column 14)))
@@ -208,18 +181,12 @@
'(1 17 warning "unused variable: `foo_ex_a`"
:checker rust-cargo :id "unused_variables" :group 1
:end-line 1 :end-column 25)
- '(1 17 info "`#[warn(unused_variables)]` on by default"
+ '(1 17 info "`#[warn(unused_variables)]` (part of `#[warn(unused)]`)
on by default"
:checker rust-cargo :id "unused_variables" :group 1
:end-line 1 :end-column 25)
'(1 17 info "if this is intentional, prefix it with an underscore:
`_foo_ex_a`"
:checker rust-cargo :id "unused_variables" :group 1
- :end-line 1 :end-column 25)
- '(4 17 warning "unused variable: `foo_ex_a_test`"
- :checker rust-cargo :id "unused_variables" :group 2
- :end-line 4 :end-column 30)
- '(4 17 info "if this is intentional, prefix it with an underscore:
`_foo_ex_a_test`"
- :checker rust-cargo :id "unused_variables" :group 2
- :end-line 4 :end-column 30)))))
+ :end-line 1 :end-column 25)))))
(flycheck-buttercup-def-checker-test rust-cargo rust workspace-subcrate
(let ((flycheck-disabled-checkers '(rust))
@@ -231,7 +198,7 @@
'(2 7 warning "unused variable: `a`"
:checker rust-cargo :id "unused_variables" :group 1
:end-line 2 :end-column 8)
- '(2 7 info "`#[warn(unused_variables)]` on by default"
+ '(2 7 info "`#[warn(unused_variables)]` (part of `#[warn(unused)]`) on
by default"
:checker rust-cargo :id "unused_variables" :group 1
:end-line 2 :end-column 8)
'(2 7 info "if this is intentional, prefix it with an underscore: `_a`"
@@ -248,13 +215,13 @@
'(2 1 warning "unused `#[macro_use]` import"
:checker rust-cargo :id "unused_imports" :group 1
:end-line 2 :end-column 13)
- '(2 1 info "`#[warn(unused_imports)]` on by default"
+ '(2 1 info "`#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by
default"
:checker rust-cargo :id "unused_imports" :group 1
:end-line 2 :end-column 13)
'(8 9 warning "unused variable: `foo`"
:checker rust-cargo :id "unused_variables" :group 2
:end-line 8 :end-column 12)
- '(8 9 info "`#[warn(unused_variables)]` on by default"
+ '(8 9 info "`#[warn(unused_variables)]` (part of `#[warn(unused)]`) on
by default"
:checker rust-cargo :id "unused_variables" :group 2
:end-line 8 :end-column 12)
'(8 9 info "if this is intentional, prefix it with an underscore:
`_foo`"
@@ -272,10 +239,16 @@
(let ((flycheck-disabled-checkers '(rust-cargo)))
(flycheck-buttercup-should-syntax-check
"language/rust/flycheck-test/src/multiline-error.rs" 'rust-mode
+ '(1 8 info "function defined here"
+ :checker rust :id "E0308" :group 1
+ :end-line 1 :end-column 15)
+ '(7 5 info "arguments to this function are incorrect"
+ :checker rust :id "E0308" :group 1
+ :end-line 7 :end-column 8)
'(7 9 error "mismatched types (expected `u8`, found `i8`)"
:checker rust :id "E0308" :group 1
:end-line 7 :end-column 10)
- '(7 9 info "you can convert an `i8` to a `u8` and panic if the
converted value doesn't fit: `i.try_into().unwrap()`"
+ '(7 10 info "you can convert an `i8` to a `u8` and panic if the
converted value doesn't fit: `.try_into().unwrap()`"
:checker rust :id "E0308" :group 1
:end-line 7 :end-column 10))))
@@ -286,7 +259,7 @@
'(4 9 warning "unused variable: `x`"
:checker rust :id "unused_variables" :group 1
:end-line 4 :end-column 10)
- '(4 9 info "`#[warn(unused_variables)]` on by default"
+ '(4 9 info "`#[warn(unused_variables)]` (part of `#[warn(unused)]`) on
by default"
:checker rust :id "unused_variables" :group 1
:end-line 4 :end-column 10)
'(4 9 info "if this is intentional, prefix it with an underscore: `_x`"
@@ -297,6 +270,9 @@
(let ((flycheck-disabled-checkers '(rust-cargo)))
(flycheck-buttercup-should-syntax-check
"language/rust/flycheck-test/src/note-and-help.rs" 'rust-mode
+ '(4 1 info "if `NonPOD` implemented `Clone`, you could clone the value"
+ :checker rust :id "E0382" :group 1
+ :end-line 4 :end-column 14)
'(10 9 info "move occurs because `_x` has type `NonPOD`, which does not
implement the `Copy` trait"
:checker rust :id "E0382" :group 1
:end-line 10 :end-column 11)
@@ -310,13 +286,10 @@
(flycheck-buttercup-def-checker-test rust rust crate-root-not-set
(let ((flycheck-disabled-checkers '(rust-cargo)))
(flycheck-buttercup-should-syntax-check
- "language/rust/flycheck-test/src/importing.rs" 'rust-mode
+ "language/rust/standalone-importing.rs" 'rust-mode
'(1 5 error "failed to resolve: there are too many leading `super`
keywords (there are too many leading `super` keywords)"
- :checker rust :id "E0433" :group 2
- :end-line 1 :end-column 10)
- '(4 24 error "failed to resolve: use of undeclared crate or module
`imported` (use of undeclared crate or module `imported`)"
- :checker rust :id "E0433" :group 3
- :end-line 4 :end-column 32))))
+ :checker rust :id "E0433" :group 1
+ :end-line 1 :end-column 10))))
(flycheck-buttercup-def-checker-test rust rust macro-error
(let ((flycheck-disabled-checkers '(rust-cargo)))
@@ -324,6 +297,24 @@
"language/rust/flycheck-test/src/macro-error.rs" 'rust-mode
'(2 13 error "1 positional argument in format string, but no arguments
were given"
:checker rust :group 1
- :end-line 2 :end-column 15)))))
+ :end-line 2 :end-column 15))))
+
+ (flycheck-buttercup-def-checker-test rust-clippy rust default
+ (let ((flycheck-disabled-checkers '(rust rust-cargo)))
+ (flycheck-buttercup-cargo-clean "language/rust/clippy-test/Cargo.toml")
+ (flycheck-buttercup-should-syntax-check
+ "language/rust/clippy-test/src/main.rs" 'rust-mode
+ '(2 5 warning "unneeded `return` statement"
+ :checker rust-clippy :id "clippy::needless_return" :group 1
+ :end-line 2 :end-column 16)
+ '(2 5 info "for further information visit
https://rust-lang.github.io/rust-clippy/rust-1.91.0/index.html#needless_return"
+ :checker rust-clippy :id "clippy::needless_return" :group 1
+ :end-line 2 :end-column 16)
+ '(2 5 info "`#[warn(clippy::needless_return)]` on by default"
+ :checker rust-clippy :id "clippy::needless_return" :group 1
+ :end-line 2 :end-column 16)
+ '(2 5 info "remove `return`: `true`"
+ :checker rust-clippy :id "clippy::needless_return" :group 1
+ :end-line 2 :end-column 16)))))
;;; test-rust.el ends here