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> {
70
70
fn trait_environment ( & self , def : GenericDefId ) -> Arc < crate :: TraitEnvironment > ;
71
71
72
72
#[ salsa:: invoke( crate :: lower:: generic_defaults_query) ]
73
+ #[ salsa:: cycle( crate :: lower:: generic_defaults_recover) ]
73
74
fn generic_defaults ( & self , def : GenericDefId ) -> Arc < [ Binders < Ty > ] > ;
74
75
75
76
#[ 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(
1089
1089
defaults
1090
1090
}
1091
1091
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
+
1092
1113
fn fn_sig_for_fn ( db : & dyn HirDatabase , def : FunctionId ) -> PolyFnSig {
1093
1114
let data = db. function_data ( def) ;
1094
1115
let resolver = def. resolver ( db. upcast ( ) ) ;
You can’t perform that action at this time.
0 commit comments