[gcc/devel/rust/master] typecheck: Separate assemble_builtin_candidate in two
Thomas Schwinge
tschwinge@gcc.gnu.org
Wed Mar 26 14:07:01 GMT 2025
https://gcc.gnu.org/g:9e876359e38d6849c64b7352dc560e0264a7300c
commit 9e876359e38d6849c64b7352dc560e0264a7300c
Author: Arthur Cohen <arthur.cohen@embecosm.com>
Date: Thu Jan 16 16:55:56 2025 +0100
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.
Diff:
---
gcc/rust/typecheck/rust-hir-type-bounds.h | 1 +
gcc/rust/typecheck/rust-tyty-bounds.cc | 12 +++++++++---
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 4e781afd2a7e..114394d13bd8 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 23df46c323e8..5d65b94150ca 100644
--- a/gcc/rust/typecheck/rust-tyty-bounds.cc
+++ b/gcc/rust/typecheck/rust-tyty-bounds.cc
@@ -150,6 +150,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)
{
@@ -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 (),
More information about the Gcc-cvs
mailing list