Auto merge of #101167 - matthiaskrgr:rollup-yt3jdmp, r=matthiaskrgr
Rollup of 7 pull requests Successful merges: - #100898 (Do not report too many expr field candidates) - #101056 (Add the syntax of references to their documentation summary.) - #101106 (Rustdoc-Json: Retain Stripped Modules when they are imported, not when they have items) - #101131 (CTFE: exposing pointers and calling extern fn is just impossible) - #101141 (Simplify `get_trait_ref` fn used for `virtual_function_elimination`) - #101146 (Various changes to logging of borrowck-related code) - #101156 (Remove `Sync` requirement from lint pass objects) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
This commit is contained in:
commit
9f4d5d2a28
42 changed files with 339 additions and 200 deletions
|
@ -372,7 +372,7 @@ impl<'cx, 'tcx> TypeFolder<'tcx> for Canonicalizer<'cx, 'tcx> {
|
|||
debug!(
|
||||
"canonical: region var found with vid {:?}, \
|
||||
opportunistically resolved to {:?}",
|
||||
vid, r
|
||||
vid, resolved_vid
|
||||
);
|
||||
let r = self.tcx.reuse_or_mk_region(r, ty::ReVar(resolved_vid));
|
||||
self.canonicalize_mode.canonicalize_free_region(self, r)
|
||||
|
|
|
@ -63,8 +63,8 @@ impl<'cx, 'tcx> InferCtxt<'cx, 'tcx> {
|
|||
Canonical<'tcx, QueryResponse<'tcx, T>>: ArenaAllocatable<'tcx>,
|
||||
{
|
||||
let query_response = self.make_query_response(inference_vars, answer, fulfill_cx)?;
|
||||
debug!("query_response = {:#?}", query_response);
|
||||
let canonical_result = self.canonicalize_response(query_response);
|
||||
|
||||
debug!("canonical_result = {:#?}", canonical_result);
|
||||
|
||||
Ok(self.tcx.arena.alloc(canonical_result))
|
||||
|
@ -125,6 +125,7 @@ impl<'cx, 'tcx> InferCtxt<'cx, 'tcx> {
|
|||
debug!("ambig_errors = {:#?}", ambig_errors);
|
||||
|
||||
let region_obligations = self.take_registered_region_obligations();
|
||||
debug!(?region_obligations);
|
||||
let region_constraints = self.with_region_constraints(|region_constraints| {
|
||||
make_query_region_constraints(
|
||||
tcx,
|
||||
|
@ -132,6 +133,7 @@ impl<'cx, 'tcx> InferCtxt<'cx, 'tcx> {
|
|||
region_constraints,
|
||||
)
|
||||
});
|
||||
debug!(?region_constraints);
|
||||
|
||||
let certainty =
|
||||
if ambig_errors.is_empty() { Certainty::Proven } else { Certainty::Ambiguous };
|
||||
|
@ -632,6 +634,8 @@ pub fn make_query_region_constraints<'tcx>(
|
|||
assert!(verifys.is_empty());
|
||||
assert!(givens.is_empty());
|
||||
|
||||
debug!(?constraints);
|
||||
|
||||
let outlives: Vec<_> = constraints
|
||||
.iter()
|
||||
.map(|(k, _)| match *k {
|
||||
|
|
|
@ -504,7 +504,7 @@ pub enum FixupError<'tcx> {
|
|||
}
|
||||
|
||||
/// See the `region_obligations` field for more information.
|
||||
#[derive(Clone)]
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct RegionObligation<'tcx> {
|
||||
pub sub_region: ty::Region<'tcx>,
|
||||
pub sup_type: Ty<'tcx>,
|
||||
|
@ -2027,16 +2027,6 @@ impl RegionVariableOrigin {
|
|||
}
|
||||
}
|
||||
|
||||
impl<'tcx> fmt::Debug for RegionObligation<'tcx> {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
write!(
|
||||
f,
|
||||
"RegionObligation(sub_region={:?}, sup_type={:?})",
|
||||
self.sub_region, self.sup_type
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
/// Replaces substs that reference param or infer variables with suitable
|
||||
/// placeholders. This function is meant to remove these param and infer
|
||||
/// substs when they're not actually needed to evaluate a constant.
|
||||
|
|
|
@ -92,6 +92,7 @@ impl<'cx, 'tcx> InferCtxt<'cx, 'tcx> {
|
|||
sub_region: Region<'tcx>,
|
||||
cause: &ObligationCause<'tcx>,
|
||||
) {
|
||||
debug!(?sup_type, ?sub_region, ?cause);
|
||||
let origin = SubregionOrigin::from_obligation_cause(cause, || {
|
||||
infer::RelateParamBound(
|
||||
cause.span,
|
||||
|
@ -248,14 +249,13 @@ where
|
|||
/// - `origin`, the reason we need this constraint
|
||||
/// - `ty`, the type `T`
|
||||
/// - `region`, the region `'a`
|
||||
#[instrument(level = "debug", skip(self))]
|
||||
pub fn type_must_outlive(
|
||||
&mut self,
|
||||
origin: infer::SubregionOrigin<'tcx>,
|
||||
ty: Ty<'tcx>,
|
||||
region: ty::Region<'tcx>,
|
||||
) {
|
||||
debug!("type_must_outlive(ty={:?}, region={:?}, origin={:?})", ty, region, origin);
|
||||
|
||||
assert!(!ty.has_escaping_bound_vars());
|
||||
|
||||
let mut components = smallvec![];
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue