public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc/devel/rust/master] gccrs: Take advantage of our new unify_and to inject inference
@ 2023-03-05 11:42 Thomas Schwinge
  0 siblings, 0 replies; only message in thread
From: Thomas Schwinge @ 2023-03-05 11:42 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:6540653bc29778a5473746bc7463c75204e07c23

commit 6540653bc29778a5473746bc7463c75204e07c23
Author: Philip Herron <herron.philip@googlemail.com>
Date:   Fri Mar 3 18:42:21 2023 +0000

    gccrs: Take advantage of our new unify_and to inject inference
    
    Wen computing higher ranked trait bounds where there are multiple type
    params and ones which are not bound entirely on the impl-type we need
    to inject inference variables as required to compute the types. The
    inference variables we inject are missing the callbacks that we can compute
    the bounds properly so this is the first part of the fix.
    
    Addresses #1893
    
    Signed-off-by: Philip Herron <herron.philip@googlemail.com>
    
    gcc/rust/ChangeLog:
    
            * typecheck/rust-hir-trait-resolve.cc: use unify_and infer

Diff:
---
 gcc/rust/typecheck/rust-hir-trait-resolve.cc | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/gcc/rust/typecheck/rust-hir-trait-resolve.cc b/gcc/rust/typecheck/rust-hir-trait-resolve.cc
index 5a4d9660219..632a60a5366 100644
--- a/gcc/rust/typecheck/rust-hir-trait-resolve.cc
+++ b/gcc/rust/typecheck/rust-hir-trait-resolve.cc
@@ -497,10 +497,12 @@ AssociatedImplTrait::setup_associated_types (
   // the type correctly as our receiver may be generic and we are inferring its
   // generic arguments and this Self might be the concrete version or vice
   // versa.
-  auto result = unify_site (get_impl_block ()->get_mappings ().get_hirid (),
-			    TyTy::TyWithLocation (receiver),
-			    TyTy::TyWithLocation (impl_self_infer),
-			    impl_predicate.get_locus ());
+  auto result = unify_site_and (get_impl_block ()->get_mappings ().get_hirid (),
+				TyTy::TyWithLocation (receiver),
+				TyTy::TyWithLocation (impl_self_infer),
+				impl_predicate.get_locus (),
+				true /*emit-errors*/, true /*commit-if-ok*/,
+				true /*infer*/, true /*cleanup-on-fail*/);
   rust_assert (result->get_kind () != TyTy::TypeKind::ERROR);
   TyTy::BaseType *self_result = result;
 
@@ -525,8 +527,10 @@ AssociatedImplTrait::setup_associated_types (
       TyTy::BaseType *b = hrtb_bound_arguments.at (i);
 
       result
-	= unify_site (a->get_ref (), TyTy::TyWithLocation (a),
-		      TyTy::TyWithLocation (b), impl_predicate.get_locus ());
+	= unify_site_and (a->get_ref (), TyTy::TyWithLocation (a),
+			  TyTy::TyWithLocation (b), impl_predicate.get_locus (),
+			  true /*emit-errors*/, true /*commit-if-ok*/,
+			  true /*infer*/, true /*cleanup-on-fail*/);
       rust_assert (result->get_kind () != TyTy::TypeKind::ERROR);
     }

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2023-03-05 11:42 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-05 11:42 [gcc/devel/rust/master] gccrs: Take advantage of our new unify_and to inject inference Thomas Schwinge

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).