rust-lang / rust-analyzer

A Rust compiler front-end for IDEs
https://rust-analyzer.github.io/
Apache License 2.0
14.05k stars 1.56k forks source link

Getting no diagnostics inside tests #12822

Open augustocdias opened 2 years ago

augustocdias commented 2 years ago

I'm having no diagnostics on a specific project. I suspect it has to do with the custom macros for the tests in this project.

If you go to this test for example: https://github.com/wireapp/core-crypto/blob/develop/crypto/src/external_commit.rs#L235 And change any line to call an invalid function: for ex calling unwrap on a Vec, there'll be no diagnostic for it.

I use neovim, but I could reproduce it with vscode as well. I've got additional errors with vscode that I didn't with neovim. It crashed once for example when it tried to auto complete. In neovim it doesn't crash but there is no auto complete in those tests.

rust-analyzer version: rust-analyzer 0.0.0 (897a7ec4b 2022-07-17)

rustc version: rustc 1.62.1 (e092d0b6b 2022-07-16)

relevant settings: the settings I use can be found here: https://github.com/augustocdias/dotfiles/blob/main/.config/nvim/lua/lsp-config.lua#L158

analysis-stats:

[ERROR project_model::workspace] cyclic deps: mls_crypto_provider(CrateId(177)) -> core_crypto_keystore(CrateId(79)), alternative path: core_crypto_keystore(CrateId(79)) -> mls_crypto_provider(CrateId(177))
[ERROR project_model::workspace] cyclic deps: mls_crypto_provider(CrateId(177)) -> mls_crypto_provider(CrateId(177)), alternative path: mls_crypto_provider(CrateId(177))
Database loaded:     1.16s (metadata 466.79ms; build 382.07ms)
  crates: 18, mods: 128, decls: 1056, fns: 833
Item Collection:     13.65s
  exprs: 21943, ??ty: 201 (0%), ?ty: 130 (0%), !ty: 8                                                                                                     
Inference:           8.24s
Total:               21.90s

Output > Rust Analyzer Language Server Trace (this is from VSCode, I'm not sure where to get the logs for NeoVim)

[ERROR project_model::workspace] cyclic deps: mls_crypto_provider(CrateId(184)) -> core_crypto_keystore(CrateId(80)), alternative path: core_crypto_keystore(CrateId(80)) -> mls_crypto_provider(CrateId(184))
[ERROR project_model::workspace] cyclic deps: mls_crypto_provider(CrateId(184)) -> mls_crypto_provider(CrateId(184)), alternative path: mls_crypto_provider(CrateId(184))
[ERROR project_model::workspace] cyclic deps: mls_crypto_provider(CrateId(184)) -> core_crypto_keystore(CrateId(80)), alternative path: core_crypto_keystore(CrateId(80)) -> mls_crypto_provider(CrateId(184))
[ERROR project_model::workspace] cyclic deps: mls_crypto_provider(CrateId(184)) -> mls_crypto_provider(CrateId(184)), alternative path: mls_crypto_provider(CrateId(184))
[ERROR project_model::workspace] cyclic deps: mls_crypto_provider(CrateId(184)) -> core_crypto_keystore(CrateId(80)), alternative path: core_crypto_keystore(CrateId(80)) -> mls_crypto_provider(CrateId(184))
[ERROR project_model::workspace] cyclic deps: mls_crypto_provider(CrateId(184)) -> mls_crypto_provider(CrateId(184)), alternative path: mls_crypto_provider(CrateId(184))
[ERROR project_model::workspace] cyclic deps: mls_crypto_provider(CrateId(184)) -> core_crypto_keystore(CrateId(80)), alternative path: core_crypto_keystore(CrateId(80)) -> mls_crypto_provider(CrateId(184))
[ERROR project_model::workspace] cyclic deps: mls_crypto_provider(CrateId(184)) -> mls_crypto_provider(CrateId(184)), alternative path: mls_crypto_provider(CrateId(184))
Panic context:
> 
version: 0.3.1131-standalone (897a7ec4b 2022-07-17)
request: textDocument/completion CompletionParams {
    text_document_position: TextDocumentPositionParams {
        text_document: TextDocumentIdentifier {
            uri: Url {
                scheme: "file",
                cannot_be_a_base: false,
                username: "",
                password: None,
                host: None,
                port: None,
                path: "/Users/augusto/projects/core-crypto/crypto/src/conversation.rs",
                query: None,
                fragment: None,
            },
        },
        position: Position {
            line: 1098,
            character: 45,
        },
    },
    work_done_progress_params: WorkDoneProgressParams {
        work_done_token: None,
    },
    partial_result_params: PartialResultParams {
        partial_result_token: None,
    },
    context: Some(
        CompletionContext {
            trigger_kind: TriggerCharacter,
            trigger_character: Some(
                ".",
            ),
        },
    ),
}

thread 'Worker' panicked at '

Failed to lookup FN@0..2827 in this Semantics.
Make sure to use only query nodes, derived from this instance of Semantics.
root node:   MACRO_ITEMS@0..3408
known nodes: MACRO_ITEMS@0..3408, MACRO_STMTS@0..232, SOURCE_FILE@0..44419, MACRO_ITEMS@0..3117, MACRO_ITEMS@0..3002, MACRO_ITEMS@0..2858

', crates/hir/src/semantics.rs:1186:13
stack backtrace:
   0: _rust_begin_unwind
   1: core::panicking::panic_fmt
   2: hir::semantics::SemanticsImpl::find_file
   3: hir::semantics::Semantics<DB>::original_ast_node
   4: ide_db::imports::insert_use::ImportScope::find_insert_use_container
   5: ide_completion::completions::postfix::complete_postfix
   6: ide_completion::completions
   7: std::panicking::try
   8: rust_analyzer::handlers::handle_completion
   9: std::panicking::try
  10: <F as threadpool::FnBox>::call_box
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
[Error - 11:51:22 AM] Request textDocument/completion failed.
  Message: request handler panicked: 

Failed to lookup FN@0..2827 in this Semantics.
Make sure to use only query nodes, derived from this instance of Semantics.
root node:   MACRO_ITEMS@0..3408
known nodes: MACRO_ITEMS@0..3408, MACRO_STMTS@0..232, SOURCE_FILE@0..44419, MACRO_ITEMS@0..3117, MACRO_ITEMS@0..3002, MACRO_ITEMS@0..2858

  Code: -32603 
[ERROR project_model::workspace] cyclic deps: mls_crypto_provider(CrateId(184)) -> core_crypto_keystore(CrateId(80)), alternative path: core_crypto_keystore(CrateId(80)) -> mls_crypto_provider(CrateId(184))
[ERROR project_model::workspace] cyclic deps: mls_crypto_provider(CrateId(184)) -> mls_crypto_provider(CrateId(184)), alternative path: mls_crypto_provider(CrateId(184))
[ERROR project_model::workspace] cyclic deps: mls_crypto_provider(CrateId(184)) -> core_crypto_keystore(CrateId(80)), alternative path: core_crypto_keystore(CrateId(80)) -> mls_crypto_provider(CrateId(184))
[ERROR project_model::workspace] cyclic deps: mls_crypto_provider(CrateId(184)) -> mls_crypto_provider(CrateId(184)), alternative path: mls_crypto_provider(CrateId(184))
Panic context:
> 
version: 0.3.1131-standalone (897a7ec4b 2022-07-17)
request: textDocument/completion CompletionParams {
    text_document_position: TextDocumentPositionParams {
        text_document: TextDocumentIdentifier {
            uri: Url {
                scheme: "file",
                cannot_be_a_base: false,
                username: "",
                password: None,
                host: None,
                port: None,
                path: "/Users/augusto/projects/core-crypto/crypto/src/conversation.rs",
                query: None,
                fragment: None,
            },
        },
        position: Position {
            line: 1098,
            character: 45,
        },
    },
    work_done_progress_params: WorkDoneProgressParams {
        work_done_token: None,
    },
    partial_result_params: PartialResultParams {
        partial_result_token: None,
    },
    context: Some(
        CompletionContext {
            trigger_kind: TriggerCharacter,
            trigger_character: Some(
                ".",
            ),
        },
    ),
}

thread 'Worker' panicked at '

Failed to lookup FN@0..2827 in this Semantics.
Make sure to use only query nodes, derived from this instance of Semantics.
root node:   MACRO_ITEMS@0..3408
known nodes: MACRO_ITEMS@0..3117, MACRO_ITEMS@0..2858, SOURCE_FILE@0..44419, MACRO_ITEMS@0..3002, MACRO_ITEMS@0..3408, MACRO_STMTS@0..232

', crates/hir/src/semantics.rs:1186:13
stack backtrace:
   0: _rust_begin_unwind
   1: core::panicking::panic_fmt
   2: hir::semantics::SemanticsImpl::find_file
   3: hir::semantics::Semantics<DB>::original_ast_node
   4: ide_db::imports::insert_use::ImportScope::find_insert_use_container
   5: ide_completion::completions::postfix::complete_postfix
   6: ide_completion::completions
   7: std::panicking::try
   8: rust_analyzer::handlers::handle_completion
   9: std::panicking::try
  10: <F as threadpool::FnBox>::call_box
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
[Error - 11:51:46 AM] Request textDocument/completion failed.
  Message: request handler panicked: 

Failed to lookup FN@0..2827 in this Semantics.
Make sure to use only query nodes, derived from this instance of Semantics.
root node:   MACRO_ITEMS@0..3408
known nodes: MACRO_ITEMS@0..3117, MACRO_ITEMS@0..2858, SOURCE_FILE@0..44419, MACRO_ITEMS@0..3002, MACRO_ITEMS@0..3408, MACRO_STMTS@0..232

  Code: -32603 
bjorn3 commented 2 years ago

This may be related to the #[wasm_bindgen_test] or #[apply(all_credential_types)]. Does removing either or both work? Also did you save after making the change? I don't think rust-analyzer has native support for this error yet. As such you need to save to allow cargo check to report it.

augustocdias commented 2 years ago

On VSCode it has auto save. On neovim I always save to check for new diagnostics.

If I add a regular #[test] it works on other projects. If I add one in these modules containing the #[wasm_bindgen_test] it doesn't work either.