instantiate_poly_trait_ref_inner has a speculative parameter:
This parameter is used to suppress several errors downstream, and has only one usage:
... which is inside of hir_trait_to_predicates, which itself has only one usage:
|
// The traits' privacy in bodies is already checked as a part of trait object types. |
|
let bounds = rustc_hir_analysis::hir_trait_to_predicates( |
|
self.tcx, |
|
trait_ref, |
|
// NOTE: This isn't really right, but the actual type doesn't matter here. It's |
|
// just required by `ty::TraitRef`. |
|
self.tcx.types.never, |
|
); |
The reason why speculative = true at this call-site is because we're passing the wrong self type when instantiating the trait ref:
|
// NOTE: This isn't really right, but the actual type doesn't matter here. It's |
|
// just required by `ty::TraitRef`. |
|
self.tcx.types.never, |
If we were able to pass the correct self type here, then we can totally remove the speculative parameter. I think that would be a nice clean-up if possible.
instantiate_poly_trait_ref_innerhas aspeculativeparameter:rust/compiler/rustc_hir_analysis/src/astconv/mod.rs
Line 684 in f525bb4
This parameter is used to suppress several errors downstream, and has only one usage:
rust/compiler/rustc_hir_analysis/src/lib.rs
Line 285 in f525bb4
... which is inside of
hir_trait_to_predicates, which itself has only one usage:rust/compiler/rustc_privacy/src/lib.rs
Lines 1215 to 1222 in f525bb4
The reason why
speculative = trueat this call-site is because we're passing the wrong self type when instantiating the trait ref:rust/compiler/rustc_privacy/src/lib.rs
Lines 1219 to 1221 in f525bb4
If we were able to pass the correct self type here, then we can totally remove the
speculativeparameter. I think that would be a nice clean-up if possible.