summaryrefslogtreecommitdiffstats
path: root/src/test/ui/proc-macro/auxiliary/cond_plugin.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/proc-macro/auxiliary/cond_plugin.rs')
-rw-r--r--src/test/ui/proc-macro/auxiliary/cond_plugin.rs38
1 files changed, 0 insertions, 38 deletions
diff --git a/src/test/ui/proc-macro/auxiliary/cond_plugin.rs b/src/test/ui/proc-macro/auxiliary/cond_plugin.rs
deleted file mode 100644
index 8d3c4ec23..000000000
--- a/src/test/ui/proc-macro/auxiliary/cond_plugin.rs
+++ /dev/null
@@ -1,38 +0,0 @@
-// force-host
-// no-prefer-dynamic
-
-#![crate_type = "proc-macro"]
-#![feature(proc_macro_quote)]
-
-extern crate proc_macro;
-
-use proc_macro::*;
-
-#[proc_macro]
-pub fn cond(input: TokenStream) -> TokenStream {
- let mut conds = Vec::new();
- let mut input = input.into_iter().peekable();
- while let Some(tree) = input.next() {
- let cond = match tree {
- TokenTree::Group(tt) => tt.stream(),
- _ => panic!("Invalid input"),
- };
- let mut cond_trees = cond.clone().into_iter();
- let test = cond_trees.next().expect("Unexpected empty condition in `cond!`");
- let rhs = cond_trees.collect::<TokenStream>();
- if rhs.is_empty() {
- panic!("Invalid macro usage in cond: {}", cond);
- }
- let is_else = match test {
- TokenTree::Ident(ref word) => &*word.to_string() == "else",
- _ => false,
- };
- conds.push(if is_else || input.peek().is_none() {
- quote!({ $rhs })
- } else {
- quote!(if $test { $rhs } else)
- });
- }
-
- conds.into_iter().flat_map(|x| x.into_iter()).collect()
-}