Skip to content

Commit

Permalink
Auto merge of #38107 - keeperofdakeys:proc-macro-test, r=alexcrichton
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
bors committed Dec 5, 2016
2 parents 692d7cf + bfdd2d4 commit d346dbc
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 5 deletions.
6 changes: 4 additions & 2 deletions src/libsyntax_ext/proc_macro_registrar.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}

0 comments on commit d346dbc

Please sign in to comment.