aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust
diff options
context:
space:
mode:
authorArthur Cohen <arthur.cohen@embecosm.com>2025-01-16 16:55:56 +0100
committerArthur Cohen <arthur.cohen@embecosm.com>2025-03-24 13:06:51 +0100
commitecb0e17c41944d340595816e2890f2a7d2053044 (patch)
treec1ecd2868adde9faf88cfab8256116559b5e9a44 /gcc/rust
parent75df481fcc381d6aaefdbe2ef1d66927e30b5743 (diff)
downloadgcc-ecb0e17c41944d340595816e2890f2a7d2053044.zip
gcc-ecb0e17c41944d340595816e2890f2a7d2053044.tar.gz
gcc-ecb0e17c41944d340595816e2890f2a7d2053044.tar.bz2
gccrs: typecheck: Separate assemble_builtin_candidate in two
This paves the way for adding trait bounds that aren't necessarily Sized. gcc/rust/ChangeLog: * typecheck/rust-tyty-bounds.cc (TypeBoundsProbe::add_trait_bound): New function. * typecheck/rust-hir-type-bounds.h: Declare it. (TypeBoundsProbe::assemble_builtin_candidate): Call into add_trait_bound.
Diffstat (limited to 'gcc/rust')
-rw-r--r--gcc/rust/typecheck/rust-hir-type-bounds.h1
-rw-r--r--gcc/rust/typecheck/rust-tyty-bounds.cc12
2 files changed, 10 insertions, 3 deletions
diff --git a/gcc/rust/typecheck/rust-hir-type-bounds.h b/gcc/rust/typecheck/rust-hir-type-bounds.h
index 7fdba1c..82333f1 100644
--- a/gcc/rust/typecheck/rust-hir-type-bounds.h
+++ b/gcc/rust/typecheck/rust-hir-type-bounds.h
@@ -38,6 +38,7 @@ public:
private:
void scan ();
void assemble_sized_builtin ();
+ void add_trait_bound (HIR::Trait *trait);
void assemble_builtin_candidate (LangItem::Kind item);
private:
diff --git a/gcc/rust/typecheck/rust-tyty-bounds.cc b/gcc/rust/typecheck/rust-tyty-bounds.cc
index 5db96cc..73d686b 100644
--- a/gcc/rust/typecheck/rust-tyty-bounds.cc
+++ b/gcc/rust/typecheck/rust-tyty-bounds.cc
@@ -151,6 +151,14 @@ TypeBoundsProbe::assemble_sized_builtin ()
}
void
+TypeBoundsProbe::add_trait_bound (HIR::Trait *trait)
+{
+ auto trait_ref = TraitResolver::Resolve (*trait);
+
+ trait_references.push_back ({trait_ref, mappings.lookup_builtin_marker ()});
+}
+
+void
TypeBoundsProbe::assemble_builtin_candidate (LangItem::Kind lang_item)
{
auto lang_item_defined = mappings.lookup_lang_item (lang_item);
@@ -167,9 +175,7 @@ TypeBoundsProbe::assemble_builtin_candidate (LangItem::Kind lang_item)
HIR::Trait *trait = static_cast<HIR::Trait *> (item);
const TyTy::BaseType *raw = receiver->destructure ();
- // assemble the reference
- TraitReference *trait_ref = TraitResolver::Resolve (*trait);
- trait_references.push_back ({trait_ref, mappings.lookup_builtin_marker ()});
+ add_trait_bound (trait);
rust_debug ("Added builtin lang_item: %s for %s",
LangItem::ToString (lang_item).c_str (),