Closed
Description
rust-analyzer will have proc macro panics when using latest diesel
(v2.0+) as a dependency, even without any code.
rust-analyzer version: rust-analyzer 0.3.1248-standalone (0531aab 2022-10-16)
rustc version: fails both on latest stable and nightly: rustc 1.64.0 (a55dd71d5 2022-09-19) / rustc 1.66.0-nightly (a24a020e6 2022-10-18)
relevant settings: no special settings
Reproducible example:
# src/lib.rs
<blank>
# Cargo.toml
[package]
name = "play"
version = "0.1.0"
edition = "2021"
[dependencies]
diesel = { version = "2", features = ["mysql"] } # or postgres
BTW diesel 1.4 works fine in rust-analyzer
now, running cargo c
is fine:
$ cargo c
Finished dev [unoptimized + debuginfo] target(s) in 0.03s
but rust-analyzer panics
$ rust-analyzer analysis-stats .
Database loaded: 461.15ms (metadata 332.47ms; build 72.53ms)
thread '<unnamed>' panicked at 'Box<dyn Any>', /Users/gwy15/.cargo/registry/src/github.com-1ecc6299db9ec823/proc-macro-error-1.0.4/src/lib.rs:472:5
stack backtrace:
0: std::panicking::begin_panic
at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/panicking.rs:616:12
1: proc_macro_error::abort_now
at /Users/gwy15/.cargo/registry/src/github.com-1ecc6299db9ec823/proc-macro-error-1.0.4/src/lib.rs:472:5
2: proc_macro_error::diagnostic::Diagnostic::abort
at /Users/gwy15/.cargo/registry/src/github.com-1ecc6299db9ec823/proc-macro-error-1.0.4/src/diagnostic.rs:182:9
3: diesel_derives::as_expression::derive
at /Users/gwy15/.cargo/registry/src/github.com-1ecc6299db9ec823/diesel_derives-2.0.1/src/as_expression.rs:11:9
4: diesel_derives::derive_as_expression::{{closure}}
at /Users/gwy15/.cargo/registry/src/github.com-1ecc6299db9ec823/diesel_derives-2.0.1/src/lib.rs:157:5
5: <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/panic/unwind_safe.rs:271:9
6: std::panicking::try::do_call
at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/panicking.rs:492:40
7: ___rust_try
8: std::panicking::try
at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/panicking.rs:456:19
9: std::panic::catch_unwind
at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/panic.rs:137:14
10: proc_macro_error::entry_point
at /Users/gwy15/.cargo/registry/src/github.com-1ecc6299db9ec823/proc-macro-error-1.0.4/src/lib.rs:432:18
11: diesel_derives::derive_as_expression
at /Users/gwy15/.cargo/registry/src/github.com-1ecc6299db9ec823/diesel_derives-2.0.1/src/lib.rs:147:1
12: core::ops::function::Fn::call
at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/ops/function.rs:77:5
13: proc_macro::bridge::client::Client<proc_macro::TokenStream,proc_macro::TokenStream>::expand1::{{closure}}::{{closure}}
at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/proc_macro/src/bridge/client.rs:437:44
14: proc_macro::bridge::client::run_client::{{closure}}::{{closure}}::{{closure}}
at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/proc_macro/src/bridge/client.rs:401:30
15: proc_macro::bridge::scoped_cell::ScopedCell<T>::set::{{closure}}
at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/proc_macro/src/bridge/scoped_cell.rs:79:33
16: proc_macro::bridge::scoped_cell::ScopedCell<T>::replace
at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/proc_macro/src/bridge/scoped_cell.rs:74:9
17: proc_macro::bridge::scoped_cell::ScopedCell<T>::set
at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/proc_macro/src/bridge/scoped_cell.rs:79:9
18: proc_macro::bridge::client::run_client::{{closure}}::{{closure}}
at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/proc_macro/src/bridge/client.rs:400:13
19: std::thread::local::LocalKey<T>::try_with
at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/thread/local.rs:445:16
20: std::thread::local::LocalKey<T>::with
at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/thread/local.rs:421:9
21: proc_macro::bridge::client::run_client::{{closure}}
at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/proc_macro/src/bridge/client.rs:399:9
22: <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/panic/unwind_safe.rs:271:9
23: std::panicking::try::do_call
at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/panicking.rs:492:40
24: ___rust_try
25: std::panicking::try
at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/panicking.rs:456:19
26: std::panic::catch_unwind
at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/panic.rs:137:14
27: proc_macro::bridge::client::run_client
at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/proc_macro/src/bridge/client.rs:386:5
28: proc_macro::bridge::client::Client<proc_macro::TokenStream,proc_macro::TokenStream>::expand1::{{closure}}
at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/proc_macro/src/bridge/client.rs:437:17
29: proc_macro::bridge::selfless_reify::reify_to_extern_c_fn_hrt_bridge::wrapper
at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/proc_macro/src/bridge/selfless_reify.rs:64:17
30: proc_macro::bridge::server::run_server::<proc_macro_srv::abis::abi_sysroot::ra_server::RustAnalyzer, proc_macro::bridge::Marked<proc_macro_srv::abis::abi_sysroot::ra_server::token_stream::TokenStream, proc_macro::bridge::client::TokenStream>, core::option::Option<proc_macro::bridge::Marked<proc_macro_srv::abis::abi_sysroot::ra_server::token_stream::TokenStream, proc_macro::bridge::client::TokenStream>>, proc_macro::bridge::server::SameThread>
31: <proc_macro_srv::abis::abi_sysroot::Abi>::expand
32: <proc_macro_srv::dylib::Expander>::expand
33: <<crossbeam_utils::thread::ScopedThreadBuilder>::spawn<<proc_macro_srv::ProcMacroSrv>::expand::{closure#2}::{closure#0}, core::result::Result<proc_macro_api::msg::flat::FlatTree, alloc::string::String>>::{closure#0} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.