about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2016-12-05 14:27:06 +0000
committerbors <bors@rust-lang.org>2016-12-05 14:27:06 +0000
commitd346dbc938da2f8d1bd13492331d9ec1b15bdac7 (patch)
tree8e13c43191f77149962d437e6af7bf9d8f45639c /src
parent692d7cfb0ce5ba43311ae553a3debcf09755b6b9 (diff)
parentbfdd2d4177391312022b48a328ff4f177769055c (diff)
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.
Diffstat (limited to 'src')
-rw-r--r--src/libsyntax_ext/proc_macro_registrar.rs6
-rw-r--r--src/test/run-pass-fulldeps/proc-macro/derive-test.rs (renamed from src/test/compile-fail-fulldeps/proc-macro/error-on-test.rs)14
2 files changed, 15 insertions, 5 deletions
diff --git a/src/libsyntax_ext/proc_macro_registrar.rs b/src/libsyntax_ext/proc_macro_registrar.rs
index bbdbda701ae..6256440bc81 100644
--- a/src/libsyntax_ext/proc_macro_registrar.rs
+++ b/src/libsyntax_ext/proc_macro_registrar.rs
@@ -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;
         }
 
diff --git a/src/test/compile-fail-fulldeps/proc-macro/error-on-test.rs b/src/test/run-pass-fulldeps/proc-macro/derive-test.rs
index 4751679ddb8..2f44515a873 100644
--- a/src/test/compile-fail-fulldeps/proc-macro/error-on-test.rs
+++ b/src/test/run-pass-fulldeps/proc-macro/derive-test.rs
@@ -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);
+}