Auto merge of #38107 - keeperofdakeys:proc-macro-test, r=alexcrichton

Allow --test to be used on proc-macro crates

Fixes #37480

This patch allows `--test` to work for proc-macro crates, removing the previous error.
This commit is contained in:
bors 2016-12-05 14:27:06 +00:00
commit d346dbc938
2 changed files with 15 additions and 5 deletions

View File

@ -75,6 +75,10 @@ pub fn modify(sess: &ParseSess,
handler.err("cannot mix `proc-macro` crate type with others");
}
if is_test_crate {
return krate;
}
krate.module.items.push(mk_registrar(&mut cx, &collect.derives));
if krate.exported_macros.len() > 0 {
@ -141,8 +145,6 @@ impl<'a> Visitor for CollectCustomDerives<'a> {
}
if self.is_test_crate {
self.handler.span_err(attr.span(),
"`--test` cannot be used with proc-macro crates");
return;
}

View File

@ -8,15 +8,23 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
// no-prefer-dynamic
// compile-flags: --test
#![crate_type = "proc-macro"]
#![feature(proc_macro)]
#![feature(proc_macro, proc_macro_lib)]
extern crate proc_macro;
#[proc_macro_derive(A)]
//~^ ERROR: `--test` cannot be used with proc-macro crates
pub fn foo1(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
use proc_macro::TokenStream;
#[proc_macro_derive(Foo)]
pub fn derive_foo(_input: TokenStream) -> TokenStream {
"".parse().unwrap()
}
#[test]
pub fn test_derive() {
assert!(true);
}