From 9221bd9c97047d9eac21867f5a11651080e2b88f Mon Sep 17 00:00:00 2001 From: sinkuu Date: Wed, 18 Oct 2017 14:06:38 +0900 Subject: [PATCH] Add test --- mini-macro/src/lib.rs | 28 +++++++++++++++++++++++----- tests/run-pass/procedural_macro.rs | 1 + 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/mini-macro/src/lib.rs b/mini-macro/src/lib.rs index fda167b69c7..67337afd3e7 100644 --- a/mini-macro/src/lib.rs +++ b/mini-macro/src/lib.rs @@ -1,13 +1,15 @@ -#![feature(plugin_registrar, rustc_private)] +#![feature(plugin_registrar, rustc_private, quote)] extern crate rustc_plugin; extern crate syntax; -use syntax::codemap::Span; -use syntax::tokenstream::TokenTree; -use syntax::ext::base::{ExtCtxt, MacEager, MacResult}; -use syntax::ext::build::AstBuilder; // trait for expr_usize use rustc_plugin::Registry; +use syntax::ast::MetaItem; +use syntax::codemap::Span; +use syntax::ext::base::{Annotatable, ExtCtxt, MacEager, MacResult, SyntaxExtension}; +use syntax::ext::build::AstBuilder; // trait for expr_usize +use syntax::symbol::Symbol; +use syntax::tokenstream::TokenTree; fn expand_macro(cx: &mut ExtCtxt, sp: Span, _: &[TokenTree]) -> Box { let e = cx.expr_usize(sp, 42); @@ -15,7 +17,23 @@ fn expand_macro(cx: &mut ExtCtxt, sp: Span, _: &[TokenTree]) -> Box Vec { + vec![ + Annotatable::Item( + quote_item!( + cx, + #[allow(unused)] fn needless_take_by_value(s: String) { println!("{}", s.len()); } + ).unwrap() + ), + annotated, + ] +} + #[plugin_registrar] pub fn plugin_registrar(reg: &mut Registry) { reg.register_macro("mini_macro", expand_macro); + reg.register_syntax_extension( + Symbol::intern("mini_macro_attr"), + SyntaxExtension::MultiModifier(Box::new(expand_attr_macro)), + ); } diff --git a/tests/run-pass/procedural_macro.rs b/tests/run-pass/procedural_macro.rs index b185f6dc427..f52c778a49d 100644 --- a/tests/run-pass/procedural_macro.rs +++ b/tests/run-pass/procedural_macro.rs @@ -2,6 +2,7 @@ #![plugin(clippy_mini_macro_test)] #[deny(warnings)] +#[mini_macro_attr] fn main() { let _ = mini_macro!(); }