diff options
author | lishin <lishin1008@gmail.com> | 2025-01-20 17:53:18 +0000 |
---|---|---|
committer | Arthur Cohen <arthur.cohen@embecosm.com> | 2025-03-24 13:06:51 +0100 |
commit | 1beda99b0336ec0e7bfba5395d5b47334b71b0bf (patch) | |
tree | 1766d3e709ef0527202599bf8909776db1930e8d /gcc | |
parent | 3ee9affeb3bd5e5ef6f2b6f9a73252b937536f4e (diff) | |
download | gcc-1beda99b0336ec0e7bfba5395d5b47334b71b0bf.zip gcc-1beda99b0336ec0e7bfba5395d5b47334b71b0bf.tar.gz gcc-1beda99b0336ec0e7bfba5395d5b47334b71b0bf.tar.bz2 |
gccrs: lang-item:Add LangItem::Kind::RECEIVER
Add and implement a lang item (receiver) in source code.
gcc/rust/ChangeLog:
* util/rust-lang-item.cc: Add receiver to map.
* util/rust-lang-item.h: Define LangItem::Kind::RECEIVER.
gcc/testsuite/ChangeLog:
* rust/compile/issue-2954.rs: New test.
Signed-off-by: lishin <lishin1008@gmail.com>
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/rust/util/rust-lang-item.cc | 1 | ||||
-rw-r--r-- | gcc/rust/util/rust-lang-item.h | 1 | ||||
-rw-r--r-- | gcc/testsuite/rust/compile/issue-2954.rs | 17 |
3 files changed, 19 insertions, 0 deletions
diff --git a/gcc/rust/util/rust-lang-item.cc b/gcc/rust/util/rust-lang-item.cc index e038e90..7460df0 100644 --- a/gcc/rust/util/rust-lang-item.cc +++ b/gcc/rust/util/rust-lang-item.cc @@ -46,6 +46,7 @@ const BiMap<std::string, LangItem::Kind> Rust::LangItem::lang_items = {{ {"shr_assign", Kind::SHR_ASSIGN}, {"deref", Kind::DEREF}, {"deref_mut", Kind::DEREF_MUT}, + {"receiver", Kind::RECEIVER}, {"index", Kind::INDEX}, {"index_mut", Kind::INDEX_MUT}, {"RangeFull", Kind::RANGE_FULL}, diff --git a/gcc/rust/util/rust-lang-item.h b/gcc/rust/util/rust-lang-item.h index f947f3f..e68f055 100644 --- a/gcc/rust/util/rust-lang-item.h +++ b/gcc/rust/util/rust-lang-item.h @@ -61,6 +61,7 @@ public: DEREF, DEREF_MUT, + RECEIVER, // https://github.com/rust-lang/rust/blob/master/library/core/src/ops/index.rs INDEX, diff --git a/gcc/testsuite/rust/compile/issue-2954.rs b/gcc/testsuite/rust/compile/issue-2954.rs new file mode 100644 index 0000000..52f7c91 --- /dev/null +++ b/gcc/testsuite/rust/compile/issue-2954.rs @@ -0,0 +1,17 @@ +#[lang = "sized"] +trait Sized {} + +#[lang = "receiver"] +#[unstable(feature = "receiver_trait", issue = "none")] +// #[doc(hidden)] +pub trait Receiver { + // Empty. +} + +#[unstable(feature = "receiver_trait", issue = "none")] +impl<T: ?Sized> Receiver for &T {} + +#[unstable(feature = "receiver_trait", issue = "none")] +impl<T: ?Sized> Receiver for &mut T {} + + |