about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2014-01-21 00:06:22 -0800
committerbors <bors@rust-lang.org>2014-01-21 00:06:22 -0800
commit6f3326f84df3f0781984cf99f2d6b38778ac6c15 (patch)
tree41f4b4ef0693970688a86d3f536f6cfd5820b59c
parent813db08fe6ffb7795b4c6db59b2f9d149c890242 (diff)
parentd049c27f5b7e100ee0a286dfa8886d89b78e03e9 (diff)
downloadrust-6f3326f84df3f0781984cf99f2d6b38778ac6c15.tar.gz
rust-6f3326f84df3f0781984cf99f2d6b38778ac6c15.zip
auto merge of #11687 : sfackler/rust/macro-export-inner-crate, r=alexcrichton
It previously missed anything in an inner module.
-rw-r--r--src/librustc/metadata/encoder.rs1
-rw-r--r--src/test/auxiliary/macro_export_inner_module.rs18
-rw-r--r--src/test/run-pass/macro-export-inner-module.rs22
3 files changed, 41 insertions, 0 deletions
diff --git a/src/librustc/metadata/encoder.rs b/src/librustc/metadata/encoder.rs
index baa72105577..c58a02b6b20 100644
--- a/src/librustc/metadata/encoder.rs
+++ b/src/librustc/metadata/encoder.rs
@@ -1720,6 +1720,7 @@ impl<'a, 'b> Visitor<()> for MacroDefVisitor<'a, 'b> {
             }
             _ => {}
         }
+        visit::walk_item(self, item, ());
     }
 }
 
diff --git a/src/test/auxiliary/macro_export_inner_module.rs b/src/test/auxiliary/macro_export_inner_module.rs
new file mode 100644
index 00000000000..a3b7904f423
--- /dev/null
+++ b/src/test/auxiliary/macro_export_inner_module.rs
@@ -0,0 +1,18 @@
+// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#[feature(macro_rules)];
+
+pub mod inner {
+    #[macro_export]
+    macro_rules! foo(
+        () => (1)
+    )
+}
diff --git a/src/test/run-pass/macro-export-inner-module.rs b/src/test/run-pass/macro-export-inner-module.rs
new file mode 100644
index 00000000000..ec8eaf68154
--- /dev/null
+++ b/src/test/run-pass/macro-export-inner-module.rs
@@ -0,0 +1,22 @@
+// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+//aux-build:macro_export_inner_module.rs
+//xfail-stage1
+//xfail-fast
+
+#[feature(phase)];
+
+#[phase(syntax)]
+extern mod macro_export_inner_module;
+
+pub fn main() {
+    assert_eq!(1, foo!());
+}