rust-analyzer: not found error, while cargo check & build works fine

/Users/nick/.rustup/toolchains/nightly-aarch64-apple-darwin/lib/rustlib/src/rust/library/test/src/test_result.rs:102:24
    |
102 |             Some(libc::SIGABRT) => TestResult::TrFailed,
    |                        ^^^^^^^ not found in `libc`

rust-analyzer version: 0.4.1838-standalone (c06ca6cff 2024-02-11) + 0.3.1839-standalone (c06ca6cff 2024-02-11)

rustc version: rustc 1.78.0-nightly (b381d3ab2 2024-02-12)

OS: Mac(M1)

fresh project generated via: cargo generate esp-rs/esp-idf-template cargo

cargo build & check works fine and don’t throw this error, only r-a if I remove the line in test_result.rs everything works fine and r-a finishes without an error

if you need further information or if I can do anything to narrow the scope down please just tell

About this issue

  • Original URL
  • State: closed
  • Created 5 months ago
  • Reactions: 4
  • Comments: 20 (5 by maintainers)

Most upvoted comments

I’m having the same issue, rust analyzer breaks when using an esp-idf project

2024-02-15T21:41:26.933826Z ERROR rust_analyzer::main_loop: FetchBuildDataError:
error[E0531]: cannot find unit struct, unit variant or constant `SIGABRT` in crate `libc`
   --> /home/[...]/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/test/src/test_result.rs:102:24
    |
102 |             Some(libc::SIGABRT) => TestResult::TrFailed,
    |                        ^^^^^^^ not found in `libc`


error: aborting due to 1 previous error


For more information about this error, try `rustc --explain E0531`.

error: could not compile `test` (lib) due to 2 previous errors

@mrchantey I confirmed it: rust-analyzer works perfectly in esp-idf projects if you use rustc 1.77.0-nightly (2a3e63551 2023-12-30). The issue is rustc 1.78.0-nightly (ee9c7c940 2024-02-14).

Yes same got the error on an esp-idf project after updating rust nightly to

rustc 1.78.0-nightly (ee9c7c940 2024-02-14)

Same problem here, temporarily I’m commenting out that offending line and it works:

None => match status.signal() {
    // Some(libc::SIGABRT) => TestResult::TrFailed,
    Some(signal) => {
        TestResult::TrFailedMsg(format!("child process exited with signal {signal}"))
    }
    None => unreachable!("status.code() returned None but status.signal() was None"),
},

When I set the option cargo.allTargets to false, this makes it work without patching the source. Indeed, passing --all-targets implies --tests.

Doing this in my neovim+lazy.nvim setup works (for example) like this:

{
  "mrcjkb/rustaceanvim",
  opts = function(_, opts)
    opts.server.default_settings["rust-analyzer"].cargo.allTargets = false
  end,
}

But note that this is only a workaround.

Enabling that setting does not resolve the issue.

Try setting "rust-analyzer.cargo.allTargets": false, (needs latest nightly r-a, from 01.04.2024) if you are working on a no-std target. If you still run into that with that setting we’ll need more info.

1711989266791 I have similar problem on amd64

@mrchantey Which rust nightly version doesn’t have this error?

Pretty sure I was on the previous version 1.77.0-nightly