diff options
| author | Michael Goulet <michael@errs.io> | 2023-05-25 20:32:11 +0000 |
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2023-05-26 14:42:31 +0000 |
| commit | a810b584cf7bf6f3d0eb02cef441b510475514f9 (patch) | |
| tree | b5310e67e649d194c6eb8f480ad0d7e854ddd487 | |
| parent | 917b0b6c70f078cb08bbb0080c9379e4487353c3 (diff) | |
| download | rust-a810b584cf7bf6f3d0eb02cef441b510475514f9.tar.gz rust-a810b584cf7bf6f3d0eb02cef441b510475514f9.zip | |
Use DefiningAnchor::Bind in infer_opaque_definition_from_instantiation
| -rw-r--r-- | compiler/rustc_borrowck/src/region_infer/opaque_types.rs | 14 | ||||
| -rw-r--r-- | tests/ui/type-alias-impl-trait/cross_inference.rs | 2 |
2 files changed, 14 insertions, 2 deletions
diff --git a/compiler/rustc_borrowck/src/region_infer/opaque_types.rs b/compiler/rustc_borrowck/src/region_infer/opaque_types.rs index 7fc89e89a35..725ff783ee9 100644 --- a/compiler/rustc_borrowck/src/region_infer/opaque_types.rs +++ b/compiler/rustc_borrowck/src/region_infer/opaque_types.rs @@ -278,8 +278,18 @@ impl<'tcx> InferCtxtExt<'tcx> for InferCtxt<'tcx> { // HACK This bubble is required for this tests to pass: // nested-return-type2-tait2.rs // nested-return-type2-tait3.rs - let infcx = - self.tcx.infer_ctxt().with_opaque_type_inference(DefiningAnchor::Bubble).build(); + // FIXME(-Ztrait-solver=next): We probably should use `DefiningAnchor::Error` + // and prepopulate this `InferCtxt` with known opaque values, rather than + // using the `Bind` anchor here. For now it's fine. + let infcx = self + .tcx + .infer_ctxt() + .with_opaque_type_inference(if self.tcx.trait_solver_next() { + DefiningAnchor::Bind(def_id) + } else { + DefiningAnchor::Bubble + }) + .build(); let ocx = ObligationCtxt::new(&infcx); // Require the hidden type to be well-formed with only the generics of the opaque type. // Defining use functions may have more bounds than the opaque type, which is ok, as long as the diff --git a/tests/ui/type-alias-impl-trait/cross_inference.rs b/tests/ui/type-alias-impl-trait/cross_inference.rs index dafaf40a69d..07f3dd1997b 100644 --- a/tests/ui/type-alias-impl-trait/cross_inference.rs +++ b/tests/ui/type-alias-impl-trait/cross_inference.rs @@ -1,3 +1,5 @@ +// revisions: current next +//[next] compile-flags: -Ztrait-solver=next // check-pass #![feature(type_alias_impl_trait)] |
