File tree 2 files changed +27
-4
lines changed
2 files changed +27
-4
lines changed Original file line number Diff line number Diff line change @@ -28,6 +28,7 @@ use syntax::attr;
28
28
use syntax:: attr:: AttrMetaMethods ;
29
29
use syntax:: errors:: { ColorConfig , Handler } ;
30
30
use syntax:: parse;
31
+ use syntax:: parse:: lexer:: Reader ;
31
32
use syntax:: parse:: token:: InternedString ;
32
33
use syntax:: feature_gate:: UnstableFeatures ;
33
34
@@ -906,10 +907,19 @@ pub fn rustc_optgroups() -> Vec<RustcOptGroup> {
906
907
// Convert strings provided as --cfg [cfgspec] into a crate_cfg
907
908
pub fn parse_cfgspecs ( cfgspecs : Vec < String > ) -> ast:: CrateConfig {
908
909
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
913
923
} ) . collect :: < ast:: CrateConfig > ( )
914
924
}
915
925
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