File tree Expand file tree Collapse file tree 2 files changed +22
-0
lines changed
Expand file tree Collapse file tree 2 files changed +22
-0
lines changed Original file line number Diff line number Diff line change @@ -70,6 +70,7 @@ pub trait HirDatabase: DefDatabase + Upcast<dyn DefDatabase> {
7070 fn trait_environment ( & self , def : GenericDefId ) -> Arc < crate :: TraitEnvironment > ;
7171
7272 #[ salsa:: invoke( crate :: lower:: generic_defaults_query) ]
73+ #[ salsa:: cycle( crate :: lower:: generic_defaults_recover) ]
7374 fn generic_defaults ( & self , def : GenericDefId ) -> Arc < [ Binders < Ty > ] > ;
7475
7576 #[ salsa:: invoke( InherentImpls :: inherent_impls_in_crate_query) ]
Original file line number Diff line number Diff line change @@ -1089,6 +1089,27 @@ pub(crate) fn generic_defaults_query(
10891089 defaults
10901090}
10911091
1092+ pub ( crate ) fn generic_defaults_recover (
1093+ db : & dyn HirDatabase ,
1094+ _cycle : & [ String ] ,
1095+ def : & GenericDefId ,
1096+ ) -> Arc < [ Binders < Ty > ] > {
1097+ let generic_params = generics ( db. upcast ( ) , * def) ;
1098+
1099+ // we still need one default per parameter
1100+ let defaults = generic_params
1101+ . iter ( )
1102+ . enumerate ( )
1103+ . map ( |( idx, _) | {
1104+ let ty = TyKind :: Error . intern ( & Interner ) ;
1105+
1106+ crate :: make_only_type_binders ( idx, ty)
1107+ } )
1108+ . collect ( ) ;
1109+
1110+ defaults
1111+ }
1112+
10921113fn fn_sig_for_fn ( db : & dyn HirDatabase , def : FunctionId ) -> PolyFnSig {
10931114 let data = db. function_data ( def) ;
10941115 let resolver = def. resolver ( db. upcast ( ) ) ;
You can’t perform that action at this time.
0 commit comments