From ccd1cda10eaa570e67d8daccfcb3e0e3b651da2d Mon Sep 17 00:00:00 2001 From: Steven Fackler Date: Mon, 10 Feb 2014 19:45:28 -0800 Subject: [PATCH] Ignore #[phase] on use view items Closes #11806 --- src/libsyntax/ext/expand.rs | 21 +++++++++++++-------- src/test/run-pass/phase-use-ignored.rs | 19 +++++++++++++++++++ 2 files changed, 32 insertions(+), 8 deletions(-) create mode 100644 src/test/run-pass/phase-use-ignored.rs diff --git a/src/libsyntax/ext/expand.rs b/src/libsyntax/ext/expand.rs index cfad88e2482..69611829c7c 100644 --- a/src/libsyntax/ext/expand.rs +++ b/src/libsyntax/ext/expand.rs @@ -394,15 +394,20 @@ pub fn expand_item_mac(it: @ast::Item, fld: &mut MacroExpander) pub fn expand_view_item(vi: &ast::ViewItem, fld: &mut MacroExpander) -> ast::ViewItem { - let should_load = vi.attrs.iter().any(|attr| { - attr.name().get() == "phase" && - attr.meta_item_list().map_or(false, |phases| { - attr::contains_name(phases, "syntax") - }) - }); + match vi.node { + ast::ViewItemExternMod(..) => { + let should_load = vi.attrs.iter().any(|attr| { + attr.name().get() == "phase" && + attr.meta_item_list().map_or(false, |phases| { + attr::contains_name(phases, "syntax") + }) + }); - if should_load { - load_extern_macros(vi, fld); + if should_load { + load_extern_macros(vi, fld); + } + } + ast::ViewItemUse(_) => {} } noop_fold_view_item(vi, fld) diff --git a/src/test/run-pass/phase-use-ignored.rs b/src/test/run-pass/phase-use-ignored.rs new file mode 100644 index 00000000000..6819ab347b0 --- /dev/null +++ b/src/test/run-pass/phase-use-ignored.rs @@ -0,0 +1,19 @@ +// 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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +//xfail-fast + +#[feature(phase)]; + +#[phase(syntax)] +use std::mem; + +fn main() {} +