File tree Expand file tree Collapse file tree 2 files changed +27
-4
lines changed Expand file tree Collapse file tree 2 files changed +27
-4
lines changed Original file line number Diff line number Diff line change @@ -28,6 +28,7 @@ use syntax::attr;
2828use syntax:: attr:: AttrMetaMethods ;
2929use syntax:: errors:: { ColorConfig , Handler } ;
3030use syntax:: parse;
31+ use syntax:: parse:: lexer:: Reader ;
3132use syntax:: parse:: token:: InternedString ;
3233use syntax:: feature_gate:: UnstableFeatures ;
3334
@@ -906,10 +907,19 @@ pub fn rustc_optgroups() -> Vec<RustcOptGroup> {
906907// Convert strings provided as --cfg [cfgspec] into a crate_cfg
907908pub fn parse_cfgspecs ( cfgspecs : Vec < String > ) -> ast:: CrateConfig {
908909 cfgspecs. into_iter ( ) . map ( |s| {
909- parse:: parse_meta_from_source_str ( "cfgspec" . to_string ( ) ,
910- s. to_string ( ) ,
911- Vec :: new ( ) ,
912- & parse:: ParseSess :: new ( ) )
910+ let sess = parse:: ParseSess :: new ( ) ;
911+ let mut parser = parse:: new_parser_from_source_str ( & sess,
912+ Vec :: new ( ) ,
913+ "cfgspec" . to_string ( ) ,
914+ s. to_string ( ) ) ;
915+ let meta_item = panictry ! ( parser. parse_meta_item( ) ) ;
916+
917+ if !parser. reader . is_eof ( ) {
918+ early_error ( ErrorOutputType :: default ( ) , & format ! ( "invalid --cfg argument: {}" ,
919+ s) )
920+ }
921+
922+ meta_item
913923 } ) . collect :: < ast:: CrateConfig > ( )
914924}
915925
Original file line number Diff line number Diff line change 1+ // Copyright 2016 The Rust Project Developers. See the COPYRIGHT
2+ // file at the top-level directory of this distribution and at
3+ // http://rust-lang.org/COPYRIGHT.
4+ //
5+ // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+ // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+ // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+ // option. This file may not be copied, modified, or distributed
9+ // except according to those terms.
10+
11+ // compile-flags: --cfg a{b}
12+ // error-pattern: invalid --cfg argument: a{b}
13+ fn main ( ) { }
You can’t perform that action at this time.
0 commit comments