File tree 2 files changed +28
-0
lines changed
2 files changed +28
-0
lines changed Original file line number Diff line number Diff line change @@ -290,6 +290,29 @@ impl CrateGraph {
290
290
}
291
291
false
292
292
}
293
+
294
+ // Work around for https://github.com/rust-analyzer/rust-analyzer/issues/6038.
295
+ // As hacky as it gets.
296
+ pub fn patch_cfg_if ( & mut self ) -> bool {
297
+ let cfg_if = self . hacky_find_crate ( "cfg_if" ) ;
298
+ let std = self . hacky_find_crate ( "std" ) ;
299
+ match ( cfg_if, std) {
300
+ ( Some ( cfg_if) , Some ( std) ) => {
301
+ self . arena . get_mut ( & cfg_if) . unwrap ( ) . dependencies . clear ( ) ;
302
+ self . arena
303
+ . get_mut ( & std)
304
+ . unwrap ( )
305
+ . dependencies
306
+ . push ( Dependency { crate_id : cfg_if, name : CrateName :: new ( "cfg_if" ) . unwrap ( ) } ) ;
307
+ true
308
+ }
309
+ _ => false ,
310
+ }
311
+ }
312
+
313
+ fn hacky_find_crate ( & self , declaration_name : & str ) -> Option < CrateId > {
314
+ self . iter ( ) . find ( |it| self [ * it] . declaration_name . as_deref ( ) == Some ( declaration_name) )
315
+ }
293
316
}
294
317
295
318
impl ops:: Index < CrateId > for CrateGraph {
Original file line number Diff line number Diff line change @@ -485,6 +485,11 @@ impl ProjectWorkspace {
485
485
}
486
486
}
487
487
}
488
+ if crate_graph. patch_cfg_if ( ) {
489
+ log:: debug!( "Patched std to depend on cfg-if" )
490
+ } else {
491
+ log:: debug!( "Did not patch std to depend on cfg-if" )
492
+ }
488
493
crate_graph
489
494
}
490
495
}
You can’t perform that action at this time.
0 commit comments