[COMMITTED 084/146] gccrs: typecheck: Add note about erorring out on additional trait bounds.
arthur.cohen@embecosm.com
arthur.cohen@embecosm.com
Fri Mar 21 12:06:25 GMT 2025
From: Arthur Cohen <arthur.cohen@embecosm.com>
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.
---
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 e9859a71f83..e9207effafb 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;
--
2.45.2
More information about the Gcc-rust
mailing list