dylint: `cargo dylint my_lints` produces `Error: expected more input` while parsing crate versions after updating `rustc`
It seems like the error happens around here:
rustc -Vv:
rustc 1.54.0-nightly (5dc8789e3 2021-05-21)
binary: rustc
commit-hash: 5dc8789e300930751a78996da0fa906be5a344a2
commit-date: 2021-05-21
host: x86_64-unknown-linux-gnu
release: 1.54.0-nightly
LLVM version: 12.0.1
Lint library’s Cargo.toml:
[package]
name = "patchmixolint"
version = "0.1.0"
authors = ["Ruby Lazuli"]
description = "Set of personal lints"
edition = "2018"
publish = false
[lib]
crate-type = ["cdylib"]
[dependencies]
clippy_utils = { git = "https://github.com/rust-lang/rust-clippy", rev = "ae0d4da764fd751494fb270fd04c2c686eac1302"}
dylint_linting = "0.1.0"
if_chain = "1.0.1"
[dev-dependencies]
dylint_testing = "0.1.0"
[package.metadata.rust-analyzer]
rustc_private = true
About this issue
- Original URL
- State: closed
- Created 3 years ago
- Comments: 20
Yeah,
cargo dylintassumes that a driver can be built “once and for all” for any given toolchain. But obviously that assumption is naive.Thanks a lot for raising this. This is a bug.
So I think I 90% understand what’s going on.
The root cause appears to be this: https://github.com/trailofbits/dylint#limitations
Dylint is trying to build
embassyusing a particular toolchain. Butembassyhas arust-toolchainfile that insists on another toolchain. When the driver is run, the presence of thatrust-toolchainfile causes the driver to link against some version of a library the driver doesn’t expect (this is the part I don’t completely understand). So the driver fails to execute, its output is empty, and the version parser reports that it expects more input.The only workarounds I can see are to remove
embassy’srust-toolchainfile, or edit it.Still, there’s definitely a bug here: Dylint should notice and report that the driver failed, rather than blindly accept empty output.
Also, from our earlier conversation, the documentation should indicate that
cargo-dylintcannot be installed with--debug.Regarding inspecting
cargo-dylint’s path: the problem is that the installation path can change. So I am afraid that that solution could make Dylint unusable for certain users, or could be fragile. Thanks for the suggestion, though.I’ll the get the error handling and the documentation fixed. Thanks a lot for exposing these problems! Please let me know if I missed anything.
These look fantastic! I especially like
impl_eq_for_float.This isn’t terrible, but I think what may eventually happen is that one of the lints or
clippy_utilswill fail to compile. Of course, you could wait for this to happen, and then roll back to the last compiler version where things worked.Thanks very much for sharing and thanks for this report! Please let me know if the problem arises again.