https://gcc.gnu.org/g:36dfbd985e7060bafc78aca8b85f9d71dac503c3

commit r15-8579-g36dfbd985e7060bafc78aca8b85f9d71dac503c3
Author: Arthur Cohen <arthur.co...@embecosm.com>
Date:   Wed Dec 25 11:07:17 2024 +0000

    gccrs: typecheck: Add note about erorring out on additional trait bounds.
    
    If additional trait bounds aren't auto traits, then the typechecker
    must error out (Rust-GCC#3008)
    
    gcc/rust/ChangeLog:
    
            * typecheck/rust-hir-type-check-type.cc: Add TODO note.

Diff:
---
 gcc/rust/typecheck/rust-hir-type-check-type.cc | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/gcc/rust/typecheck/rust-hir-type-check-type.cc 
b/gcc/rust/typecheck/rust-hir-type-check-type.cc
index e9859a71f832..e9207effafb7 100644
--- a/gcc/rust/typecheck/rust-hir-type-check-type.cc
+++ b/gcc/rust/typecheck/rust-hir-type-check-type.cc
@@ -757,6 +757,11 @@ TypeCheckType::visit (HIR::TraitObjectType &type)
   std::vector<TyTy::TypeBoundPredicate> specified_bounds;
   for (auto &bound : type.get_type_param_bounds ())
     {
+      // TODO: here we need to check if there are additional bounds that aren't
+      // auto traits. this is an error. for example, `dyn A + Sized + Sync` is
+      // okay, because Sized and Sync are both auto traits but `dyn A + Copy +
+      // Clone` is not okay and should error out.
+
       if (bound->get_bound_type ()
          != HIR::TypeParamBound::BoundType::TRAITBOUND)
        continue;

Reply via email to