Skip to content

Commit 935b561

Browse files
committed
macros: Add test cases for remaining expansion contexts
1 parent 1a2ef9c commit 935b561

File tree

4 files changed

+60
-0
lines changed

4 files changed

+60
-0
lines changed

gcc/testsuite/rust/compile/macro20.rs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
macro_rules! define_trait {
2+
($assoc:ident, $i:item) => {
3+
type $assoc;
4+
5+
$i
6+
};
7+
}
8+
9+
trait DefinedThroughMacros {
10+
define_trait!(
11+
Inner,
12+
fn takes_inner(i: Self::Inner) -> Self::Inner {
13+
i
14+
}
15+
);
16+
}

gcc/testsuite/rust/compile/macro21.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
macro_rules! c_fn {
2+
{$name:ident ($($arg_name:ident $arg_ty:ty),*) -> $ret_ty:ty} => {
3+
fn $name($($arg_name: $arg_ty)*) -> $ret_ty;
4+
};
5+
}
6+
7+
extern "C" {
8+
c_fn! {puts (s *const i8) -> i64}
9+
}

gcc/testsuite/rust/compile/macro22.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
macro_rules! print {
2+
() => {
3+
fn puts(s: *const i8);
4+
fn printf(fmt: *const i8, ...);
5+
};
6+
}
7+
8+
extern "C" {
9+
print! {}
10+
}

gcc/testsuite/rust/compile/macro23.rs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
macro_rules! maybe_impl {
2+
($left:ident, $right:ident, $l_fn:ident, $r_fn:ident) => {
3+
fn $l_fn(value: T) -> Maybe<T> {
4+
Maybe::$left(value)
5+
}
6+
7+
fn $r_fn() -> Maybe<T> {
8+
Maybe::$right
9+
}
10+
};
11+
}
12+
13+
enum Maybe<T> {
14+
Just(T),
15+
Nothing,
16+
}
17+
18+
impl<T> Maybe<T> {
19+
maybe_impl!(Just, Nothing, just, nothing);
20+
}
21+
22+
fn main() {
23+
let _ = Maybe::just(14);
24+
let _: Maybe<i32> = Maybe::nothing();
25+
}

0 commit comments

Comments
 (0)