about summary refs log tree commit diff
path: root/src/libsyntax_ext
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2019-01-28 06:32:39 +0000
committerbors <bors@rust-lang.org>2019-01-28 06:32:39 +0000
commitcc4d1e5bb0c256c352a4d01112a55d93dcfa6081 (patch)
treecff972c9c27c299c5aef8ebed9e54583aad80115 /src/libsyntax_ext
parentc32515566fbf8961ecce60eb71a472962da99e8c (diff)
parent1bdd2f699beb6249a97aac3e2007401b37b6f273 (diff)
downloadrust-cc4d1e5bb0c256c352a4d01112a55d93dcfa6081.tar.gz
rust-cc4d1e5bb0c256c352a4d01112a55d93dcfa6081.zip
Auto merge of #57691 - Zoxc:pass-skip, r=petrochenkov
Conditionally skip two passes if their related attributes were not found
Diffstat (limited to 'src/libsyntax_ext')
-rw-r--r--src/libsyntax_ext/proc_macro_decls.rs7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/libsyntax_ext/proc_macro_decls.rs b/src/libsyntax_ext/proc_macro_decls.rs
index 1d272712cac..46c502965ee 100644
--- a/src/libsyntax_ext/proc_macro_decls.rs
+++ b/src/libsyntax_ext/proc_macro_decls.rs
@@ -48,6 +48,7 @@ pub fn modify(sess: &ParseSess,
               resolver: &mut dyn (::syntax::ext::base::Resolver),
               mut krate: ast::Crate,
               is_proc_macro_crate: bool,
+              has_proc_macro_decls: bool,
               is_test_crate: bool,
               num_crate_types: usize,
               handler: &errors::Handler) -> ast::Crate {
@@ -64,7 +65,9 @@ pub fn modify(sess: &ParseSess,
             is_proc_macro_crate,
             is_test_crate,
         };
-        visit::walk_crate(&mut collect, &krate);
+        if has_proc_macro_decls || is_proc_macro_crate {
+            visit::walk_crate(&mut collect, &krate);
+        }
         (collect.derives, collect.attr_macros, collect.bang_macros)
     };
 
@@ -85,7 +88,7 @@ pub fn modify(sess: &ParseSess,
     krate
 }
 
-fn is_proc_macro_attr(attr: &ast::Attribute) -> bool {
+pub fn is_proc_macro_attr(attr: &ast::Attribute) -> bool {
     PROC_MACRO_KINDS.iter().any(|kind| attr.check_name(kind))
 }