Skip to content

Cyclic dependency graph when parsing OPAQUE-KE v4.0.1 #21006

@klaus-moon

Description

@klaus-moon

rust-analyzer version: rust-analyzer version: 0.3.2667-standalone (bacc5bbd30 2025-11-02)

rustc version: rustc 1.93.0-nightly (843f8ce2e 2025-11-07)

editor or extension: VSCode, extension version 0.3.2667

relevant settings: all empty

repository link (if public, optional): opaque-ke

code snippet to reproduce: Just add OPAQUE-KE v4.0.0 or v4.0.1 to Cargo.toml and you start to get the error. This does not happen if I downgrade rust-analyzer to the version 2025-08-25 v0.3.2593-standalone (6b2e677 2025-08-25). It starts appearing since 2025-10-27 (v0.3.2658).


thread 'Worker2' (3552474) panicked at /rust/deps/salsa-0.24.0/src/function/fetch.rs:271:21:
dependency graph cycle when querying generic_predicates_shim(Id(9d95)), set cycle_fn/cycle_initial to fixpoint iterate.
Query stack:
[
    infer_shim(Id(1457f)),
    trait_impls_in_deps_shim(Id(70d3)),
    trait_impls_in_crate_shim(Id(704d)),
    impl_trait_with_diagnostics_shim(Id(176ce)),
    impl_self_ty_with_diagnostics_shim(Id(176ce)),
    type_for_type_alias_with_diagnostics_shim(Id(a1cc)),
    generic_predicates_for_param_shim(Id(87035)),
    generic_predicates_shim(Id(9d95)),
    type_for_type_alias_with_diagnostics_shim(Id(a1cb)),
    generic_predicates_for_param_shim(Id(87036)),
]
stack backtrace:
   0: __rustc::rust_begin_unwind
   1: core::panicking::panic_fmt
   2: <salsa::function::IngredientImpl<hir_ty::db::create_data_HirDatabase::create_data_HirDatabase_Configuration_>>::fetch_cold_cycle::{closure#0}
   3: <salsa::function::IngredientImpl<<_ as hir_ty::db::HirDatabase>::generic_predicates::generic_predicates_shim::generic_predicates_shim_Configuration_>>::fetch_cold_cycle
   4: <salsa::function::IngredientImpl<<_ as hir_ty::db::HirDatabase>::generic_predicates::generic_predicates_shim::generic_predicates_shim_Configuration_>>::fetch_cold_with_retry
   5: <_ as hir_ty::db::HirDatabase>::generic_predicates::generic_predicates_shim
   6: <hir_ty::next_solver::interner::DbInterner as ra_ap_rustc_type_ir::interner::Interner>::explicit_super_predicates_of
   7: ra_ap_rustc_type_ir::elaborate::supertrait_def_ids::<hir_ty::next_solver::interner::DbInterner>::{closure#0}
   8: <<_ as hir_ty::db::HirDatabase>::generic_predicates_for_param::generic_predicates_for_param_shim::generic_predicates_for_param_shim_Configuration_ as salsa::function::Configuration>::execute
   9: <salsa::function::IngredientImpl<<_ as hir_ty::db::HirDatabase>::generic_predicates_for_param::generic_predicates_for_param_shim::generic_predicates_for_param_shim_Configuration_>>::execute
  10: <salsa::function::IngredientImpl<<_ as hir_ty::db::HirDatabase>::generic_predicates_for_param::generic_predicates_for_param_shim::generic_predicates_for_param_shim_Configuration_>>::fetch_cold_with_retry
  11: <_ as hir_ty::db::HirDatabase>::generic_predicates_for_param::generic_predicates_for_param_shim
  12: <hir_ty::lower::path::PathLoweringContext>::select_associated_type
  13: <hir_ty::lower::path::PathLoweringContext>::lower_partly_resolved_path
  14: <hir_ty::lower::TyLoweringContext>::lower_ty_ext
  15: hir_ty::lower::path::substs_from_args_and_bindings::<<hir_ty::lower::path::PathLoweringContext>::substs_from_args_and_bindings::LowererCtx>
  16: <hir_ty::lower::path::PathLoweringContext>::substs_from_path_segment
  17: <hir_ty::lower::path::PathLoweringContext>::lower_partly_resolved_path
  18: <hir_ty::lower::TyLoweringContext>::lower_ty_ext
  19: <<_ as hir_ty::db::HirDatabase>::type_for_type_alias_with_diagnostics::type_for_type_alias_with_diagnostics_shim::type_for_type_alias_with_diagnostics_shim_Configuration_ as salsa::function::Configuration>::execute
  20: <salsa::function::IngredientImpl<<_ as hir_ty::db::HirDatabase>::type_for_type_alias_with_diagnostics::type_for_type_alias_with_diagnostics_shim::type_for_type_alias_with_diagnostics_shim_Configuration_>>::execute
  21: <salsa::function::IngredientImpl<<_ as hir_ty::db::HirDatabase>::type_for_type_alias_with_diagnostics::type_for_type_alias_with_diagnostics_shim::type_for_type_alias_with_diagnostics_shim_Configuration_>>::fetch_cold_with_retry
  22: <_ as hir_ty::db::HirDatabase>::type_for_type_alias_with_diagnostics::type_for_type_alias_with_diagnostics_shim
  23: hir_ty::lower::ty_query
  24: <hir_ty::lower::path::PathLoweringContext>::lower_path_inner
  25: <hir_ty::lower::path::PathLoweringContext>::lower_partly_resolved_path
  26: <hir_ty::lower::TyLoweringContext>::lower_ty_ext
  27: <hir_ty::lower::TyLoweringContext>::lower_where_predicate
  28: hir_ty::lower::generic_predicates_filtered_by::<hir_ty::lower::generic_predicates_query::{closure#0}>
  29: <<_ as hir_ty::db::HirDatabase>::generic_predicates::generic_predicates_shim::generic_predicates_shim_Configuration_ as salsa::function::Configuration>::execute
  30: <salsa::function::IngredientImpl<<_ as hir_ty::db::HirDatabase>::generic_predicates::generic_predicates_shim::generic_predicates_shim_Configuration_>>::execute
  31: <salsa::function::IngredientImpl<<_ as hir_ty::db::HirDatabase>::generic_predicates::generic_predicates_shim::generic_predicates_shim_Configuration_>>::fetch_cold_with_retry
  32: <_ as hir_ty::db::HirDatabase>::generic_predicates::generic_predicates_shim
  33: <hir_ty::next_solver::interner::DbInterner as ra_ap_rustc_type_ir::interner::Interner>::explicit_super_predicates_of
  34: ra_ap_rustc_type_ir::elaborate::supertrait_def_ids::<hir_ty::next_solver::interner::DbInterner>::{closure#0}
  35: <<_ as hir_ty::db::HirDatabase>::generic_predicates_for_param::generic_predicates_for_param_shim::generic_predicates_for_param_shim_Configuration_ as salsa::function::Configuration>::execute
  36: <salsa::function::IngredientImpl<<_ as hir_ty::db::HirDatabase>::generic_predicates_for_param::generic_predicates_for_param_shim::generic_predicates_for_param_shim_Configuration_>>::execute
  37: <salsa::function::IngredientImpl<<_ as hir_ty::db::HirDatabase>::generic_predicates_for_param::generic_predicates_for_param_shim::generic_predicates_for_param_shim_Configuration_>>::fetch_cold_with_retry
  38: <_ as hir_ty::db::HirDatabase>::generic_predicates_for_param::generic_predicates_for_param_shim
  39: <hir_ty::lower::path::PathLoweringContext>::select_associated_type
  40: <hir_ty::lower::path::PathLoweringContext>::lower_partly_resolved_path
  41: <hir_ty::lower::TyLoweringContext>::lower_ty_ext
  42: hir_ty::lower::path::substs_from_args_and_bindings::<<hir_ty::lower::path::PathLoweringContext>::substs_from_args_and_bindings::LowererCtx>
  43: <hir_ty::lower::path::PathLoweringContext>::substs_from_path_segment
  44: <hir_ty::lower::path::PathLoweringContext>::lower_partly_resolved_path
  45: <hir_ty::lower::TyLoweringContext>::lower_ty_ext
  46: <<_ as hir_ty::db::HirDatabase>::type_for_type_alias_with_diagnostics::type_for_type_alias_with_diagnostics_shim::type_for_type_alias_with_diagnostics_shim_Configuration_ as salsa::function::Configuration>::execute
  47: <salsa::function::IngredientImpl<<_ as hir_ty::db::HirDatabase>::type_for_type_alias_with_diagnostics::type_for_type_alias_with_diagnostics_shim::type_for_type_alias_with_diagnostics_shim_Configuration_>>::execute
  48: <salsa::function::IngredientImpl<<_ as hir_ty::db::HirDatabase>::type_for_type_alias_with_diagnostics::type_for_type_alias_with_diagnostics_shim::type_for_type_alias_with_diagnostics_shim_Configuration_>>::fetch_cold_with_retry
  49: <_ as hir_ty::db::HirDatabase>::type_for_type_alias_with_diagnostics::type_for_type_alias_with_diagnostics_shim
  50: hir_ty::lower::ty_query
  51: <hir_ty::lower::path::PathLoweringContext>::lower_path_inner
  52: <hir_ty::lower::path::PathLoweringContext>::lower_partly_resolved_path
  53: <hir_ty::lower::TyLoweringContext>::lower_ty_ext
  54: <<hir_ty::lower::path::PathLoweringContext>::substs_from_args_and_bindings::LowererCtx as hir_ty::lower::path::GenericArgsLowerer>::provided_kind
  55: hir_ty::lower::path::substs_from_args_and_bindings::<<hir_ty::lower::path::PathLoweringContext>::substs_from_args_and_bindings::LowererCtx>
  56: <hir_ty::lower::path::PathLoweringContext>::substs_from_path_segment
  57: <hir_ty::lower::path::PathLoweringContext>::lower_path_inner
  58: <hir_ty::lower::path::PathLoweringContext>::lower_partly_resolved_path
  59: <hir_ty::lower::TyLoweringContext>::lower_ty_ext
  60: <<hir_ty::lower::path::PathLoweringContext>::substs_from_args_and_bindings::LowererCtx as hir_ty::lower::path::GenericArgsLowerer>::provided_kind
  61: hir_ty::lower::path::substs_from_args_and_bindings::<<hir_ty::lower::path::PathLoweringContext>::substs_from_args_and_bindings::LowererCtx>
  62: <hir_ty::lower::path::PathLoweringContext>::substs_from_path_segment
  63: <hir_ty::lower::path::PathLoweringContext>::lower_path_inner
  64: <hir_ty::lower::path::PathLoweringContext>::lower_partly_resolved_path
  65: <hir_ty::lower::TyLoweringContext>::lower_ty_ext
  66: <<_ as hir_ty::db::HirDatabase>::impl_self_ty_with_diagnostics::impl_self_ty_with_diagnostics_shim::impl_self_ty_with_diagnostics_shim_Configuration_ as salsa::function::Configuration>::execute
  67: <salsa::function::IngredientImpl<<_ as hir_ty::db::HirDatabase>::impl_self_ty_with_diagnostics::impl_self_ty_with_diagnostics_shim::impl_self_ty_with_diagnostics_shim_Configuration_>>::execute
  68: <salsa::function::IngredientImpl<<_ as hir_ty::db::HirDatabase>::impl_self_ty_with_diagnostics::impl_self_ty_with_diagnostics_shim::impl_self_ty_with_diagnostics_shim_Configuration_>>::fetch_cold_with_retry
  69: <_ as hir_ty::db::HirDatabase>::impl_self_ty_with_diagnostics::impl_self_ty_with_diagnostics_shim
  70: <ide_db::RootDatabase as hir_ty::db::HirDatabase>::impl_self_ty
  71: <<_ as hir_ty::db::HirDatabase>::impl_trait_with_diagnostics::impl_trait_with_diagnostics_shim::impl_trait_with_diagnostics_shim_Configuration_ as salsa::function::Configuration>::execute
  72: <salsa::function::IngredientImpl<<_ as hir_ty::db::HirDatabase>::impl_trait_with_diagnostics::impl_trait_with_diagnostics_shim::impl_trait_with_diagnostics_shim_Configuration_>>::execute
  73: <salsa::function::IngredientImpl<<_ as hir_ty::db::HirDatabase>::impl_trait_with_diagnostics::impl_trait_with_diagnostics_shim::impl_trait_with_diagnostics_shim_Configuration_>>::fetch_cold_with_retry
  74: <_ as hir_ty::db::HirDatabase>::impl_trait_with_diagnostics::impl_trait_with_diagnostics_shim
  75: <ide_db::RootDatabase as hir_ty::db::HirDatabase>::impl_trait
  76: <hir_ty::method_resolution::TraitImpls>::collect_def_map
  77: <<_ as hir_ty::db::HirDatabase>::trait_impls_in_crate::trait_impls_in_crate_shim::trait_impls_in_crate_shim_Configuration_ as salsa::function::Configuration>::execute
  78: <salsa::function::IngredientImpl<<_ as hir_ty::db::HirDatabase>::trait_impls_in_crate::trait_impls_in_crate_shim::trait_impls_in_crate_shim_Configuration_>>::execute
  79: <salsa::function::IngredientImpl<<_ as hir_ty::db::HirDatabase>::trait_impls_in_crate::trait_impls_in_crate_shim::trait_impls_in_crate_shim_Configuration_>>::fetch_cold_with_retry
  80: <_ as hir_ty::db::HirDatabase>::trait_impls_in_crate::trait_impls_in_crate_shim
  81: <<_ as hir_ty::db::HirDatabase>::trait_impls_in_deps::trait_impls_in_deps_shim::trait_impls_in_deps_shim_Configuration_ as salsa::function::Configuration>::execute
  82: <salsa::function::IngredientImpl<<_ as hir_ty::db::HirDatabase>::trait_impls_in_deps::trait_impls_in_deps_shim::trait_impls_in_deps_shim_Configuration_>>::execute
  83: <salsa::function::IngredientImpl<<_ as hir_ty::db::HirDatabase>::trait_impls_in_deps::trait_impls_in_deps_shim::trait_impls_in_deps_shim_Configuration_>>::fetch_cold_with_retry
  84: <_ as hir_ty::db::HirDatabase>::trait_impls_in_deps::trait_impls_in_deps_shim
  85: <ra_ap_rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<hir_ty::next_solver::solver::SolverContext, hir_ty::next_solver::interner::DbInterner>>::compute_trait_goal
  86: <ra_ap_rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<hir_ty::next_solver::solver::SolverContext, hir_ty::next_solver::interner::DbInterner>>::compute_goal
  87: <ra_ap_rustc_type_ir::search_graph::SearchGraph<ra_ap_rustc_next_trait_solver::solve::search_graph::SearchGraphDelegate<hir_ty::next_solver::solver::SolverContext>, hir_ty::next_solver::interner::DbInterner>>::evaluate_goal_in_task
  88: <ra_ap_rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<hir_ty::next_solver::solver::SolverContext, hir_ty::next_solver::interner::DbInterner>>::evaluate_goal_raw
  89: <ra_ap_rustc_next_trait_solver::solve::eval_ctxt::EvalCtxt<hir_ty::next_solver::solver::SolverContext, hir_ty::next_solver::interner::DbInterner>>::evaluate_goal
  90: <hir_ty::next_solver::solver::SolverContext as ra_ap_rustc_next_trait_solver::solve::eval_ctxt::SolverDelegateEvalExt>::evaluate_root_goal
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
query stacktrace:
   0: generic_predicates_for_param_shim(Id(87036)) -> (R20194, Durability::MEDIUM)
             at src/tools/rust-analyzer/crates/hir-ty/src/db.rs:28
   1: type_for_type_alias_with_diagnostics_shim(Id(a1cb)) -> (R20194, Durability::MEDIUM)
             at src/tools/rust-analyzer/crates/hir-ty/src/db.rs:28
   2: generic_predicates_shim(Id(9d95)) -> (R20194, Durability::MEDIUM)
             at src/tools/rust-analyzer/crates/hir-ty/src/db.rs:28
   3: generic_predicates_for_param_shim(Id(87035)) -> (R20194, Durability::MEDIUM)
             at src/tools/rust-analyzer/crates/hir-ty/src/db.rs:28
   4: type_for_type_alias_with_diagnostics_shim(Id(a1cc)) -> (R20194, Durability::MEDIUM)
             at src/tools/rust-analyzer/crates/hir-ty/src/db.rs:28
   5: impl_self_ty_with_diagnostics_shim(Id(176ce)) -> (R20194, Durability::MEDIUM)
             at src/tools/rust-analyzer/crates/hir-ty/src/db.rs:28
   6: impl_trait_with_diagnostics_shim(Id(176ce)) -> (R20194, Durability::MEDIUM)
             at src/tools/rust-analyzer/crates/hir-ty/src/db.rs:28
   7: trait_impls_in_crate_shim(Id(704d)) -> (R20194, Durability::MEDIUM)
             at src/tools/rust-analyzer/crates/hir-ty/src/db.rs:28
   8: trait_impls_in_deps_shim(Id(70d3)) -> (R20194, Durability::MEDIUM)
             at src/tools/rust-analyzer/crates/hir-ty/src/db.rs:28
   9: infer_shim(Id(1457f)) -> (R20194, Durability::LOW)
             at src/tools/rust-analyzer/crates/hir-ty/src/db.rs:28

additional context:
   0: 
version: 1.93.0-nightly (843f8ce2 2025-11-07)
request: textDocument/semanticTokens/full/delta SemanticTokensDeltaParams {
    work_done_progress_params: WorkDoneProgressParams {
        work_done_token: None,
    },
    partial_result_params: PartialResultParams {
        partial_result_token: None,
    },
    text_document: TextDocumentIdentifier {
        uri: Url {
            scheme: "file",
            cannot_be_a_base: false,
            username: "",
            password: None,
            host: None,
            port: None,
            path: "/src/registration/signup.rs",
            query: None,
            fragment: None,
        },
    },
    previous_result_id: "1",
}

[Error - 7:04:49 AM] Request textDocument/semanticTokens/full/delta failed.
  Message: request handler panicked: dependency graph cycle when querying generic_predicates_shim(Id(9d95)), set cycle_fn/cycle_initial to fixpoint iterate.
Query stack:
[
    infer_shim(Id(1457f)),
    trait_impls_in_deps_shim(Id(70d3)),
    trait_impls_in_crate_shim(Id(704d)),
    impl_trait_with_diagnostics_shim(Id(176ce)),
    impl_self_ty_with_diagnostics_shim(Id(176ce)),
    type_for_type_alias_with_diagnostics_shim(Id(a1cc)),
    generic_predicates_for_param_shim(Id(87035)),
    generic_predicates_shim(Id(9d95)),
    type_for_type_alias_with_diagnostics_shim(Id(a1cb)),
    generic_predicates_for_param_shim(Id(87036)),
]
  Code: -32603 

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-tytype system / type inference / traits / method resolutionC-bugCategory: bug

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions