diff options
Diffstat (limited to 'syn-mid/examples')
-rw-r--r-- | syn-mid/examples/const_fn/Cargo.toml | 16 | ||||
-rw-r--r-- | syn-mid/examples/const_fn/lib.rs | 31 | ||||
-rw-r--r-- | syn-mid/examples/const_fn_test/Cargo.toml | 9 | ||||
-rw-r--r-- | syn-mid/examples/const_fn_test/build.rs | 16 | ||||
-rw-r--r-- | syn-mid/examples/const_fn_test/tests/test.rs | 25 |
5 files changed, 0 insertions, 97 deletions
diff --git a/syn-mid/examples/const_fn/Cargo.toml b/syn-mid/examples/const_fn/Cargo.toml deleted file mode 100644 index d823e76..0000000 --- a/syn-mid/examples/const_fn/Cargo.toml +++ /dev/null @@ -1,16 +0,0 @@ -[package] -name = "const_fn" -version = "0.0.0" -authors = ["Taiki Endo <te316e89@gmail.com>"] -edition = "2018" -publish = false - -[lib] -proc-macro = true -path = "lib.rs" - -[dependencies] -proc-macro2 = "1.0" -quote = "1.0" -syn = "1.0" -syn-mid = { version = "0.4", path = "../..", features = ["clone-impls"] } diff --git a/syn-mid/examples/const_fn/lib.rs b/syn-mid/examples/const_fn/lib.rs deleted file mode 100644 index 29255f2..0000000 --- a/syn-mid/examples/const_fn/lib.rs +++ /dev/null @@ -1,31 +0,0 @@ -#![warn(rust_2018_idioms)] - -extern crate proc_macro; - -use proc_macro::TokenStream; -use proc_macro2::TokenStream as TokenStream2; -use quote::quote; -use syn_mid::ItemFn; - -/// An attribute for easy generation of a const function with conditional compilations. -#[proc_macro_attribute] -pub fn const_fn(args: TokenStream, function: TokenStream) -> TokenStream { - assert!(!args.is_empty(), "requires an argument"); - - let mut function = syn::parse_macro_input!(function as ItemFn); - let mut const_function = function.clone(); - - if function.constness.is_some() { - function.constness = None; - } else { - const_function.constness = Some(Default::default()); - } - - let args = TokenStream2::from(args); - TokenStream::from(quote! { - #[cfg(not(#args))] - #function - #[cfg(#args)] - #const_function - }) -} diff --git a/syn-mid/examples/const_fn_test/Cargo.toml b/syn-mid/examples/const_fn_test/Cargo.toml deleted file mode 100644 index b3e2807..0000000 --- a/syn-mid/examples/const_fn_test/Cargo.toml +++ /dev/null @@ -1,9 +0,0 @@ -[package] -name = "const_fn_test" -version = "0.0.0" -authors = ["Taiki Endo <te316e89@gmail.com>"] -edition = "2018" -publish = false - -[dependencies] -const_fn = { path = "../const_fn" } diff --git a/syn-mid/examples/const_fn_test/build.rs b/syn-mid/examples/const_fn_test/build.rs deleted file mode 100644 index bebf234..0000000 --- a/syn-mid/examples/const_fn_test/build.rs +++ /dev/null @@ -1,16 +0,0 @@ -use std::{env, process::Command}; - -fn main() { - println!("cargo:rerun-if-changed=build.rs"); - - if is_nightly() { - println!("cargo:rustc-cfg=nightly"); - } -} - -fn is_nightly() -> bool { - env::var_os("RUSTC") - .and_then(|rustc| Command::new(rustc).arg("--version").output().ok()) - .and_then(|output| String::from_utf8(output.stdout).ok()) - .map_or(false, |version| version.contains("nightly")) -} diff --git a/syn-mid/examples/const_fn_test/tests/test.rs b/syn-mid/examples/const_fn_test/tests/test.rs deleted file mode 100644 index 1b2c742..0000000 --- a/syn-mid/examples/const_fn_test/tests/test.rs +++ /dev/null @@ -1,25 +0,0 @@ -#![cfg_attr(nightly, feature(const_fn, const_vec_new))] -#![warn(rust_2018_idioms)] -#![allow(dead_code)] - -use const_fn::const_fn; - -#[const_fn(nightly)] -fn const_vec_new<T>() -> Vec<T> { - let vec = Vec::new(); - vec -} - -#[test] -fn test_stable() { - assert_eq!(const_vec_new::<u8>(), Vec::new()); -} - -#[cfg(nightly)] -const CONST_UNSTABLE: Vec<u8> = const_vec_new(); - -#[cfg(nightly)] -#[test] -fn test_unstable() { - assert_eq!(CONST_UNSTABLE, Vec::new()); -} |