about summary refs log tree commit diff
path: root/tests/ui/delegation/macro-inside-list.rs
diff options
context:
space:
mode:
authorVadim Petrochenkov <vadim.petrochenkov@gmail.com>2024-03-15 14:21:03 +0300
committerVadim Petrochenkov <vadim.petrochenkov@gmail.com>2024-05-15 02:32:59 +0300
commitc30b41012d474586d407392a6b154e7f19c38b2c (patch)
treeadf34f62f1c929390851853093799427734a4569 /tests/ui/delegation/macro-inside-list.rs
parent8387315ab3c26a57a1f53a90f188f0bc88514bca (diff)
downloadrust-c30b41012d474586d407392a6b154e7f19c38b2c.tar.gz
rust-c30b41012d474586d407392a6b154e7f19c38b2c.zip
delegation: Implement list delegation
```rust
reuse prefix::{a, b, c}
```
Diffstat (limited to 'tests/ui/delegation/macro-inside-list.rs')
-rw-r--r--tests/ui/delegation/macro-inside-list.rs26
1 files changed, 26 insertions, 0 deletions
diff --git a/tests/ui/delegation/macro-inside-list.rs b/tests/ui/delegation/macro-inside-list.rs
new file mode 100644
index 00000000000..16c74d396ef
--- /dev/null
+++ b/tests/ui/delegation/macro-inside-list.rs
@@ -0,0 +1,26 @@
+//@ check-pass
+
+#![feature(fn_delegation)]
+#![allow(incomplete_features)]
+
+trait Trait {
+    fn foo(&self) -> u8 { 0 }
+    fn bar(&self) -> u8 { 1 }
+}
+
+impl Trait for u8 {}
+
+struct S(u8);
+
+// Macro expansion works inside delegation items.
+macro_rules! u8 { () => { u8 } }
+macro_rules! self_0 { () => { &self.0 } }
+impl Trait for S {
+    reuse <u8!() as Trait>::{foo, bar} { self_0!() }
+}
+
+fn main() {
+    let s = S(2);
+    s.foo();
+    s.bar();
+}