Skip to content

Commit 100a02a

Browse files
authored
Rollup merge of rust-lang#62593 - kper:cleanup_abi, r=Centril
Group all ABI tests. r? @eddyb Closes rust-lang#62401
2 parents f7af19c + 26ee99e commit 100a02a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+112
-0
lines changed
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
// force-host
2+
// no-prefer-dynamic
3+
4+
// Proc macros commonly used by tests.
5+
// `panic`/`print` -> `panic_bang`/`print_bang` to avoid conflicts with standard macros.
6+
7+
#![crate_type = "proc-macro"]
8+
9+
extern crate proc_macro;
10+
use proc_macro::TokenStream;
11+
12+
// Macro that return empty token stream.
13+
14+
#[proc_macro]
15+
pub fn empty(_: TokenStream) -> TokenStream {
16+
TokenStream::new()
17+
}
18+
19+
#[proc_macro_attribute]
20+
pub fn empty_attr(_: TokenStream, _: TokenStream) -> TokenStream {
21+
TokenStream::new()
22+
}
23+
24+
#[proc_macro_derive(Empty, attributes(empty_helper))]
25+
pub fn empty_derive(_: TokenStream) -> TokenStream {
26+
TokenStream::new()
27+
}
28+
29+
// Macro that panics.
30+
31+
#[proc_macro]
32+
pub fn panic_bang(_: TokenStream) -> TokenStream {
33+
panic!("panic-bang");
34+
}
35+
36+
#[proc_macro_attribute]
37+
pub fn panic_attr(_: TokenStream, _: TokenStream) -> TokenStream {
38+
panic!("panic-attr");
39+
}
40+
41+
#[proc_macro_derive(Panic, attributes(panic_helper))]
42+
pub fn panic_derive(_: TokenStream) -> TokenStream {
43+
panic!("panic-derive");
44+
}
45+
46+
// Macros that return the input stream.
47+
48+
#[proc_macro]
49+
pub fn identity(input: TokenStream) -> TokenStream {
50+
input
51+
}
52+
53+
#[proc_macro_attribute]
54+
pub fn identity_attr(_: TokenStream, input: TokenStream) -> TokenStream {
55+
input
56+
}
57+
58+
#[proc_macro_derive(Identity, attributes(identity_helper))]
59+
pub fn identity_derive(input: TokenStream) -> TokenStream {
60+
input
61+
}
62+
63+
// Macros that iterate and re-collect the input stream.
64+
65+
#[proc_macro]
66+
pub fn recollect(input: TokenStream) -> TokenStream {
67+
input.into_iter().collect()
68+
}
69+
70+
#[proc_macro_attribute]
71+
pub fn recollect_attr(_: TokenStream, input: TokenStream) -> TokenStream {
72+
input.into_iter().collect()
73+
}
74+
75+
#[proc_macro_derive(Recollect, attributes(recollect_helper))]
76+
pub fn recollect_derive(input: TokenStream) -> TokenStream {
77+
input.into_iter().collect()
78+
}
79+
80+
// Macros that print their input in the original and re-collected forms (if they differ).
81+
82+
fn print_helper(input: TokenStream, kind: &str) -> TokenStream {
83+
let input_display = format!("{}", input);
84+
let input_debug = format!("{:#?}", input);
85+
let recollected = input.into_iter().collect();
86+
let recollected_display = format!("{}", recollected);
87+
let recollected_debug = format!("{:#?}", recollected);
88+
println!("PRINT-{} INPUT (DISPLAY): {}", kind, input_display);
89+
if recollected_display != input_display {
90+
println!("PRINT-{} RE-COLLECTED (DISPLAY): {}", kind, recollected_display);
91+
}
92+
println!("PRINT-{} INPUT (DEBUG): {}", kind, input_debug);
93+
if recollected_debug != input_debug {
94+
println!("PRINT-{} RE-COLLECTED (DEBUG): {}", kind, recollected_debug);
95+
}
96+
recollected
97+
}
98+
99+
#[proc_macro]
100+
pub fn print_bang(input: TokenStream) -> TokenStream {
101+
print_helper(input, "BANG")
102+
}
103+
104+
#[proc_macro_attribute]
105+
pub fn print_attr(_: TokenStream, input: TokenStream) -> TokenStream {
106+
print_helper(input, "ATTR")
107+
}
108+
109+
#[proc_macro_derive(Print, attributes(print_helper))]
110+
pub fn print_derive(input: TokenStream) -> TokenStream {
111+
print_helper(input, "DERIVE")
112+
}
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)