diff options
| author | Steven Fackler <sfackler@gmail.com> | 2014-09-24 20:22:57 -0700 |
|---|---|---|
| committer | Steven Fackler <sfackler@gmail.com> | 2014-09-27 22:59:26 -0700 |
| commit | 9519abecfb727d71bd8209ffd94816b2cb87180f (patch) | |
| tree | c287f36d9735cff0510c4aa8d0b33468714deb33 /src/libsyntax/ext/cfg.rs | |
| parent | dcdbdc10036b444ef39c329e9440d4acc6975fda (diff) | |
| download | rust-9519abecfb727d71bd8209ffd94816b2cb87180f.tar.gz rust-9519abecfb727d71bd8209ffd94816b2cb87180f.zip | |
Convert cfg syntax to new system
This removes the ability to use `foo(bar)` style cfgs. Switch them to `foo_bar` or `foo="bar"` instead. [breaking-change]
Diffstat (limited to 'src/libsyntax/ext/cfg.rs')
| -rw-r--r-- | src/libsyntax/ext/cfg.rs | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/src/libsyntax/ext/cfg.rs b/src/libsyntax/ext/cfg.rs index 79cb47fee7b..342e7e6d52e 100644 --- a/src/libsyntax/ext/cfg.rs +++ b/src/libsyntax/ext/cfg.rs @@ -22,7 +22,6 @@ use ext::build::AstBuilder; use attr; use attr::*; use parse::attr::ParserAttr; -use parse::token::InternedString; use parse::token; @@ -39,11 +38,17 @@ pub fn expand_cfg<'cx>(cx: &mut ExtCtxt, p.expect(&token::COMMA); } - // test_cfg searches for meta items looking like `cfg(foo, ...)` - let in_cfg = Some(cx.meta_list(sp, InternedString::new("cfg"), cfgs)); + // NOTE: turn on after snapshot + /* + if cfgs.len() != 1 { + cx.span_warn(sp, "The use of multiple cfgs at the top level of `cfg!` \ + is deprecated. Change `cfg!(a, b)` to \ + `cfg!(all(a, b))`."); + } + */ + + let matches_cfg = cfgs.iter().all(|cfg| attr::cfg_matches(&cx.parse_sess.span_diagnostic, + cx.cfg.as_slice(), &**cfg)); - let matches_cfg = attr::test_cfg(cx.cfg().as_slice(), - in_cfg.iter()); - let e = cx.expr_bool(sp, matches_cfg); - MacExpr::new(e) + MacExpr::new(cx.expr_bool(sp, matches_cfg)) } |
