Skip to content
This repository was archived by the owner on Oct 30, 2019. It is now read-only.

Commit f98ce29

Browse files
tirr-cyoshuawuyts
authored andcommitted
Require runtime argument if no default runtime is set (#64)
1 parent dcdd190 commit f98ce29

File tree

3 files changed

+30
-5
lines changed

3 files changed

+30
-5
lines changed

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@ edition = "2018"
1414

1515
[features]
1616
default = ["native"]
17-
native = ["runtime-native"]
17+
native = ["runtime-attributes/native", "runtime-native"]
1818

1919
[dependencies]
2020
futures-preview = "0.3.0-alpha.16"
21-
runtime-attributes = { path = "runtime-attributes", version = "0.3.0-alpha.5" }
21+
runtime-attributes = { path = "runtime-attributes", version = "0.3.0-alpha.5", default-features = false }
2222
runtime-raw = { path = "runtime-raw", version = "0.3.0-alpha.4" }
2323
runtime-native = { path = "runtime-native", version = "0.3.0-alpha.4", optional = true }
2424

runtime-attributes/Cargo.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ edition = "2018"
1515
[lib]
1616
proc-macro = true
1717

18+
[features]
19+
default = ["native"]
20+
native = []
21+
1822
[dependencies]
1923
syn = { version = "0.15.33", features = ["full"] }
2024
proc-macro2 = { version = "0.4.29", features = ["nightly"] }

runtime-attributes/src/lib.rs

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,14 @@ use syn::spanned::Spanned;
2828
#[proc_macro_attribute]
2929
pub fn main(attr: TokenStream, item: TokenStream) -> TokenStream {
3030
let rt = if attr.is_empty() {
31-
syn::parse_str("runtime::native::Native").unwrap()
31+
if cfg!(feature = "native") {
32+
syn::parse_str("runtime::native::Native").unwrap()
33+
} else {
34+
let tokens = quote_spanned! { proc_macro2::Span::call_site() =>
35+
compile_error!("async runtime needs to be specified if no default runtime is set");
36+
};
37+
return TokenStream::from(tokens);
38+
}
3239
} else {
3340
syn::parse_macro_input!(attr as syn::Expr)
3441
};
@@ -86,7 +93,14 @@ pub fn main(attr: TokenStream, item: TokenStream) -> TokenStream {
8693
#[proc_macro_attribute]
8794
pub fn test(attr: TokenStream, item: TokenStream) -> TokenStream {
8895
let rt = if attr.is_empty() {
89-
syn::parse_str("runtime::native::Native").unwrap()
96+
if cfg!(feature = "native") {
97+
syn::parse_str("runtime::native::Native").unwrap()
98+
} else {
99+
let tokens = quote_spanned! { proc_macro2::Span::call_site() =>
100+
compile_error!("async runtime needs to be specified if no default runtime is set");
101+
};
102+
return TokenStream::from(tokens);
103+
}
90104
} else {
91105
syn::parse_macro_input!(attr as syn::Expr)
92106
};
@@ -132,7 +146,14 @@ pub fn test(attr: TokenStream, item: TokenStream) -> TokenStream {
132146
#[proc_macro_attribute]
133147
pub fn bench(attr: TokenStream, item: TokenStream) -> TokenStream {
134148
let rt = if attr.is_empty() {
135-
syn::parse_str("runtime::native::Native").unwrap()
149+
if cfg!(feature = "native") {
150+
syn::parse_str("runtime::native::Native").unwrap()
151+
} else {
152+
let tokens = quote_spanned! { proc_macro2::Span::call_site() =>
153+
compile_error!("async runtime needs to be specified if no default runtime is set");
154+
};
155+
return TokenStream::from(tokens);
156+
}
136157
} else {
137158
syn::parse_macro_input!(attr as syn::Expr)
138159
};

0 commit comments

Comments
 (0)