Consolidate cfg checks for wasm/proc_macro
diff --git a/build.rs b/build.rs
new file mode 100644
index 0000000..4567b6c
--- /dev/null
+++ b/build.rs
@@ -0,0 +1,21 @@
+use std::env;
+
+fn main() {
+ println!("cargo:rerun-if-changed=build.rs");
+
+ let target = env::var("TARGET").unwrap();
+
+ maybe_enable_use_proc_macro(&target);
+}
+
+fn maybe_enable_use_proc_macro(target: &str) {
+ // wasm targets don't have the `proc_macro` crate, disable this feature.
+ if target.contains("wasm32") {
+ return
+ }
+
+ // Otherwise, only enable it if our feature is actually enabled.
+ if cfg!(feature = "proc-macro") {
+ println!("cargo:rustc-cfg=use_proc_macro");
+ }
+}
diff --git a/src/lib.rs b/src/lib.rs
index 35d9089..7edbfec 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -46,7 +46,7 @@
#![doc(html_root_url = "https://docs.rs/proc-macro2/0.4.9")]
#![cfg_attr(feature = "nightly", feature(proc_macro_raw_ident, proc_macro_span))]
-#[cfg(all(not(all(target_arch = "wasm32", target_os = "unknown")), feature = "proc-macro"))]
+#[cfg(use_proc_macro)]
extern crate proc_macro;
extern crate unicode_xid;
@@ -146,14 +146,14 @@
}
}
-#[cfg(all(not(all(target_arch = "wasm32", target_os = "unknown")), feature = "proc-macro"))]
+#[cfg(use_proc_macro)]
impl From<proc_macro::TokenStream> for TokenStream {
fn from(inner: proc_macro::TokenStream) -> TokenStream {
TokenStream::_new(inner.into())
}
}
-#[cfg(all(not(all(target_arch = "wasm32", target_os = "unknown")), feature = "proc-macro"))]
+#[cfg(use_proc_macro)]
impl From<TokenStream> for proc_macro::TokenStream {
fn from(inner: TokenStream) -> proc_macro::TokenStream {
inner.inner.into()
@@ -318,7 +318,7 @@
}
/// This method is only available when the `"nightly"` feature is enabled.
- #[cfg(all(not(all(target_arch = "wasm32", target_os = "unknown")), feature = "nightly", feature = "proc-macro"))]
+ #[cfg(all(feature = "nightly", use_proc_macro))]
pub fn unstable(self) -> proc_macro::Span {
self.inner.unstable()
}
diff --git a/src/stable.rs b/src/stable.rs
index 94452e1..0efc32c 100644
--- a/src/stable.rs
+++ b/src/stable.rs
@@ -116,7 +116,7 @@
}
}
-#[cfg(all(not(all(target_arch = "wasm32", target_os = "unknown")), feature = "proc-macro"))]
+#[cfg(use_proc_macro)]
impl From<::proc_macro::TokenStream> for TokenStream {
fn from(inner: ::proc_macro::TokenStream) -> TokenStream {
inner
@@ -126,7 +126,7 @@
}
}
-#[cfg(all(not(all(target_arch = "wasm32", target_os = "unknown")), feature = "proc-macro"))]
+#[cfg(use_proc_macro)]
impl From<TokenStream> for ::proc_macro::TokenStream {
fn from(inner: TokenStream) -> ::proc_macro::TokenStream {
inner