mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-10-02 06:41:48 +00:00
Handle cycles in generic_defaults more gracefully
This commit is contained in:
parent
184a0d7c1e
commit
b384cfcb81
2 changed files with 22 additions and 0 deletions
|
@ -1089,6 +1089,27 @@ pub(crate) fn generic_defaults_query(
|
|||
defaults
|
||||
}
|
||||
|
||||
pub(crate) fn generic_defaults_recover(
|
||||
db: &dyn HirDatabase,
|
||||
_cycle: &[String],
|
||||
def: &GenericDefId,
|
||||
) -> Arc<[Binders<Ty>]> {
|
||||
let generic_params = generics(db.upcast(), *def);
|
||||
|
||||
// we still need one default per parameter
|
||||
let defaults = generic_params
|
||||
.iter()
|
||||
.enumerate()
|
||||
.map(|(idx, _)| {
|
||||
let ty = TyKind::Error.intern(&Interner);
|
||||
|
||||
crate::make_only_type_binders(idx, ty)
|
||||
})
|
||||
.collect();
|
||||
|
||||
defaults
|
||||
}
|
||||
|
||||
fn fn_sig_for_fn(db: &dyn HirDatabase, def: FunctionId) -> PolyFnSig {
|
||||
let data = db.function_data(def);
|
||||
let resolver = def.resolver(db.upcast());
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue