Preserve the Span
from prove_predicate
all the way to registering opaque types
This commit is contained in:
parent
9e016a8b84
commit
e3021eb245
4 changed files with 19 additions and 3 deletions
|
@ -98,6 +98,7 @@ pub trait QueryTypeOp<'tcx>: fmt::Debug + Copy + TypeFoldable<TyCtxt<'tcx>> + 't
|
||||||
query_key: ParamEnvAnd<'tcx, Self>,
|
query_key: ParamEnvAnd<'tcx, Self>,
|
||||||
infcx: &InferCtxt<'tcx>,
|
infcx: &InferCtxt<'tcx>,
|
||||||
output_query_region_constraints: &mut QueryRegionConstraints<'tcx>,
|
output_query_region_constraints: &mut QueryRegionConstraints<'tcx>,
|
||||||
|
span: Span,
|
||||||
) -> Result<
|
) -> Result<
|
||||||
(
|
(
|
||||||
Self::QueryResponse,
|
Self::QueryResponse,
|
||||||
|
@ -118,7 +119,7 @@ pub trait QueryTypeOp<'tcx>: fmt::Debug + Copy + TypeFoldable<TyCtxt<'tcx>> + 't
|
||||||
|
|
||||||
let InferOk { value, obligations } = infcx
|
let InferOk { value, obligations } = infcx
|
||||||
.instantiate_nll_query_response_and_region_obligations(
|
.instantiate_nll_query_response_and_region_obligations(
|
||||||
&ObligationCause::dummy(),
|
&ObligationCause::dummy_with_span(span),
|
||||||
old_param_env,
|
old_param_env,
|
||||||
&canonical_var_values,
|
&canonical_var_values,
|
||||||
canonical_result,
|
canonical_result,
|
||||||
|
@ -160,7 +161,7 @@ where
|
||||||
|
|
||||||
let mut region_constraints = QueryRegionConstraints::default();
|
let mut region_constraints = QueryRegionConstraints::default();
|
||||||
let (output, error_info, mut obligations, _) =
|
let (output, error_info, mut obligations, _) =
|
||||||
Q::fully_perform_into(self, infcx, &mut region_constraints).map_err(|_| {
|
Q::fully_perform_into(self, infcx, &mut region_constraints, span).map_err(|_| {
|
||||||
infcx.dcx().span_delayed_bug(span, format!("error performing {self:?}"))
|
infcx.dcx().span_delayed_bug(span, format!("error performing {self:?}"))
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
|
@ -178,6 +179,7 @@ where
|
||||||
obligation.param_env.and(ProvePredicate::new(obligation.predicate)),
|
obligation.param_env.and(ProvePredicate::new(obligation.predicate)),
|
||||||
infcx,
|
infcx,
|
||||||
&mut region_constraints,
|
&mut region_constraints,
|
||||||
|
span,
|
||||||
) {
|
) {
|
||||||
Ok(((), _, new, certainty)) => {
|
Ok(((), _, new, certainty)) => {
|
||||||
obligations.extend(new);
|
obligations.extend(new);
|
||||||
|
|
|
@ -1,4 +1,11 @@
|
||||||
error[E0792]: expected generic lifetime parameter, found `'a`
|
error[E0792]: expected generic lifetime parameter, found `'a`
|
||||||
|
--> $DIR/issue-90014-tait2.rs:27:9
|
||||||
|
|
|
||||||
|
LL | type Fut<'a> = impl Future<Output = ()>;
|
||||||
|
| -- this generic parameter must be used with a generic lifetime parameter
|
||||||
|
...
|
||||||
|
LL | Box::new((async { () },))
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: aborting due to 1 previous error
|
error: aborting due to 1 previous error
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
#![feature(type_alias_impl_trait)]
|
#![feature(type_alias_impl_trait)]
|
||||||
//~^ ERROR: expected generic lifetime parameter, found `'a`
|
|
||||||
|
|
||||||
type Opaque<'a> = impl Sized + 'a;
|
type Opaque<'a> = impl Sized + 'a;
|
||||||
|
|
||||||
|
@ -13,6 +12,7 @@ impl<'a> Trait<'a> for () {
|
||||||
|
|
||||||
fn test() -> &'static dyn for<'a> Trait<'a, Assoc = Opaque<'a>> {
|
fn test() -> &'static dyn for<'a> Trait<'a, Assoc = Opaque<'a>> {
|
||||||
&()
|
&()
|
||||||
|
//~^ ERROR: expected generic lifetime parameter, found `'a`
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
|
|
@ -1,4 +1,11 @@
|
||||||
error[E0792]: expected generic lifetime parameter, found `'a`
|
error[E0792]: expected generic lifetime parameter, found `'a`
|
||||||
|
--> $DIR/hkl_forbidden2.rs:14:5
|
||||||
|
|
|
||||||
|
LL | type Opaque<'a> = impl Sized + 'a;
|
||||||
|
| -- this generic parameter must be used with a generic lifetime parameter
|
||||||
|
...
|
||||||
|
LL | &()
|
||||||
|
| ^^^
|
||||||
|
|
||||||
error: aborting due to 1 previous error
|
error: aborting due to 1 previous error
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue