}
}
+fn check_cfg(sopts: &config::Options,
+ output: ErrorOutputType) {
+ fn is_meta_list(item: &ast::MetaItem) -> bool {
+ match item.node {
+ ast::MetaItem_::MetaList(..) => true,
+ _ => false,
+ }
+ }
+
+ if sopts.cfg.iter().any(|item| is_meta_list(&*item)) {
+ early_error(output, "predicates are not allowed in --cfg");
+ }
+}
+
impl<'a> CompilerCalls<'a> for RustcDefaultCalls {
fn early_callback(&mut self,
matches: &getopts::Matches,
- _sopts: &config::Options,
+ sopts: &config::Options,
descriptions: &diagnostics::registry::Registry,
output: ErrorOutputType)
-> Compilation {
return Compilation::Stop;
}
+ check_cfg(sopts, output);
Compilation::Continue
}
--- /dev/null
+// Copyright 2015 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.
+
+// compile-flags: --cfg foo(bar)
+// error-pattern: predicates are not allowed in --cfg
+fn main() {}