Closed Wyvern closed 4 months ago
Does it work with #[test]
?
Does it work with
#[test]
?
It's a typo, fixed it.
It should work, can you make a sample test case?
Ok. Let's put a non-existed function call in test, there's NO error prompt until you run test.
It's marked as unresolved:
rust-analyzer doesn't (yet) show errors for these because there would be too many false positives. But you can see them using something like:
{
"editor.semanticTokenColorCustomizations": {
"rules": {
"unresolvedReference": "#ff0000",
},
}
}
I think @Wyvern might be missing rustc errors from check-on-save? @Wyvern do you have any non-default settings? In particular rust-analyzer.checkOnSave.allTargets
or rust-analyzer.checkOnSave.target
?
"checkOnSave" enabled. Furthermore, I also enabled auto-save editing; problem stays.
By the way, rust-analyzer works normally in non-test scope. So, it's definitely the problem specifically to #[test] function.
Do you have rust-analyzer.checkOnSave.allTargets
or rust-analyzer.checkOnSave.target
set?
A related fix for me was to add "--all-targets" to my tasks.json file in vscode. That way both tests and normal execution was compiled:
tasks.json
{
"version": "2.0.0",
"tasks": [
{
"type": "cargo",
"command": "build",
"args": [
"--all-targets"
],
"problemMatcher": [
"$rustc"
],
"group": "build",
"label": "rust: cargo build",
"presentation": {
"clear": true
}
}
]
}
I found that this problem not only affect #[test]
code but also [[example]]
code file, still not sure how to fix it.
@Wyvern I confirm that --all-targets
need to be enabled. It should probably be enabled by default, there's no reason to avoid showing errors on test.
For reference, my setup on vscode is
"rust-analyzer.checkOnSave.overrideCommand": [
"cargo",
"+nightly",
"clippy",
"--all",
"--all-targets",
"--all-features",
"--message-format=json",
"--",
"-D",
"clippy::all"
],
I was able to resolve this similar to @nikkolasg but I had to enable checking tests, examples, and benches explicitly as well:
"rust-analyzer.checkOnSave.overrideCommand": [
"cargo",
"+nightly",
"clippy",
"--workspace",
"--all-targets",
"--all-features",
"--tests",
"--examples",
"--benches",
"--message-format=json",
],
The setting is now "rust-analyzer.check.overrideCommand"
Looks like this issue can be resolved.
Is it a bug or a config/setting which should properly toggled?