aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorArthur Cohen <arthur.cohen@embecosm.com>2024-12-25 11:07:17 +0000
committerCohenArthur <arthur.cohen@embecosm.com>2024-12-31 17:00:14 +0000
commit1d8041b36cc2c4e34a0a9dbf52b931b97db5ddca (patch)
treec3be8808d66e95b4a153fa981c8254730675ac9c /gcc
parent5ab3543b1b0753f48ba364f4b6ea29c5a3f80ffa (diff)
downloadgcc-1d8041b36cc2c4e34a0a9dbf52b931b97db5ddca.zip
gcc-1d8041b36cc2c4e34a0a9dbf52b931b97db5ddca.tar.gz
gcc-1d8041b36cc2c4e34a0a9dbf52b931b97db5ddca.tar.bz2
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.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/rust/typecheck/rust-hir-type-check-type.cc5
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/rust/typecheck/rust-hir-type-check-type.cc b/gcc/rust/typecheck/rust-hir-type-check-type.cc
index 2962674..d2758a5 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;