about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorJosh Driver <keeperofdakeys@gmail.com>2016-11-22 00:02:58 +1030
committerJosh Driver <keeperofdakeys@gmail.com>2016-12-02 00:12:20 +1030
commitbfdd2d4177391312022b48a328ff4f177769055c (patch)
tree3dddc39b5bbbb9e0b9cd742aed54e74b29fe6ce8 /src
parent070fad1701fb36b112853b0a6a9787a7bb7ff34c (diff)
Allow --test to be used on proc-macro crates
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);
+}