File tree 2 files changed +45
-0
lines changed
2 files changed +45
-0
lines changed Original file line number Diff line number Diff line change
1
+ // force-host
2
+ // no-prefer-dynamic
3
+
4
+ #![ crate_type = "proc-macro" ]
5
+ #![ feature( proc_macro_tracked_env) ]
6
+
7
+ extern crate proc_macro;
8
+
9
+ use proc_macro:: TokenStream ;
10
+ use proc_macro:: tracked_env:: var;
11
+
12
+ #[ proc_macro]
13
+ pub fn generate_const ( input : TokenStream ) -> TokenStream {
14
+ let the_const = match var ( "THE_CONST" ) {
15
+ Ok ( x) if x == "12" => {
16
+ "const THE_CONST: u32 = 12;"
17
+ }
18
+ _ => {
19
+ "const THE_CONST: u32 = 0;"
20
+ }
21
+ } ;
22
+ let another = if var ( "ANOTHER" ) . is_ok ( ) {
23
+ "const ANOTHER: u32 = 1;"
24
+ } else {
25
+ "const ANOTHER: u32 = 2;"
26
+ } ;
27
+ format ! ( "{the_const}{another}" ) . parse ( ) . unwrap ( )
28
+ }
Original file line number Diff line number Diff line change
1
+ // aux-build:env.rs
2
+ // run-pass
3
+ // rustc-env: THE_CONST=1
4
+ // compile-flags: -Zunstable-options --env THE_CONST=12 --env ANOTHER=4
5
+
6
+ #![ crate_name = "foo" ]
7
+
8
+ extern crate env;
9
+
10
+ use env:: generate_const;
11
+
12
+ generate_const ! ( ) ;
13
+
14
+ fn main ( ) {
15
+ assert_eq ! ( THE_CONST , 12 ) ;
16
+ assert_eq ! ( ANOTHER , 1 ) ;
17
+ }
You can’t perform that action at this time.
0 commit comments