diff options
| author | Jeffrey Seyfried <jeffrey.seyfried@gmail.com> | 2016-05-21 01:26:30 +0000 |
|---|---|---|
| committer | Jeffrey Seyfried <jeffrey.seyfried@gmail.com> | 2016-05-21 23:01:02 +0000 |
| commit | 82b49cd2000859c8208cf15a78441a72a3edc499 (patch) | |
| tree | 8c73f892716d056eca0f637e3a3f194655fefc47 /src/libsyntax/ext | |
| parent | a3d705ef3094968c457cf0408cc6bbe241e627b5 (diff) | |
| download | rust-82b49cd2000859c8208cf15a78441a72a3edc499.tar.gz rust-82b49cd2000859c8208cf15a78441a72a3edc499.zip | |
Refactor away `check_attributes`
Diffstat (limited to 'src/libsyntax/ext')
| -rw-r--r-- | src/libsyntax/ext/expand.rs | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/src/libsyntax/ext/expand.rs b/src/libsyntax/ext/expand.rs index c8272316c3c..9bfeb81b74a 100644 --- a/src/libsyntax/ext/expand.rs +++ b/src/libsyntax/ext/expand.rs @@ -69,16 +69,6 @@ impl_macro_generable! { "statement", .make_stmts, lift .fold_stmt, |_span| SmallVector::zero(); } -// this function is called to detect use of feature-gated or invalid attributes -// on macro invoations since they will not be detected after macro expansion -fn check_attributes(attrs: &[ast::Attribute], fld: &MacroExpander) { - for attr in attrs.iter() { - feature_gate::check_attribute(&attr, &fld.cx.parse_sess.span_diagnostic, - &fld.cx.parse_sess.codemap(), - &fld.cx.ecfg.features.unwrap()); - } -} - pub fn expand_expr(e: P<ast::Expr>, fld: &mut MacroExpander) -> P<ast::Expr> { let expr_span = e.span; return e.and_then(|ast::Expr {id, node, span, attrs}| match node { @@ -209,7 +199,13 @@ fn expand_mac_invoc<T>(mac: ast::Mac, ident: Option<Ident>, attrs: Vec<ast::Attr fn mac_result<'a>(path: &ast::Path, ident: Option<Ident>, tts: Vec<TokenTree>, mark: Mrk, attrs: Vec<ast::Attribute>, call_site: Span, fld: &'a mut MacroExpander) -> Option<Box<MacResult + 'a>> { - check_attributes(&attrs, fld); + // Detect use of feature-gated or invalid attributes on macro invoations + // since they will not be detected after macro expansion. + for attr in attrs.iter() { + feature_gate::check_attribute(&attr, &fld.cx.parse_sess.span_diagnostic, + &fld.cx.parse_sess.codemap(), + &fld.cx.ecfg.features.unwrap()); + } if path.segments.len() > 1 { fld.cx.span_err(path.span, "expected macro name without module separators"); |
