@@ -7,6 +7,7 @@ use crate::session::{early_error, early_warn, Session};
7
7
use crate :: session:: search_paths:: SearchPath ;
8
8
9
9
use rustc_data_structures:: fx:: FxHashSet ;
10
+ use rustc_data_structures:: sync:: Lrc ;
10
11
11
12
use rustc_target:: spec:: { LinkerFlavor , MergeFunctions , PanicStrategy , RelroLevel } ;
12
13
use rustc_target:: spec:: { Target , TargetTriple } ;
@@ -19,6 +20,7 @@ use syntax::parse::{ParseSess, new_parser_from_source_str};
19
20
use syntax:: parse:: token;
20
21
use syntax:: symbol:: { sym, Symbol } ;
21
22
use syntax:: feature_gate:: UnstableFeatures ;
23
+ use syntax:: source_map:: SourceMap ;
22
24
23
25
use errors:: emitter:: HumanReadableErrorType ;
24
26
use errors:: { ColorConfig , FatalError , Handler } ;
@@ -1850,11 +1852,20 @@ pub fn rustc_optgroups() -> Vec<RustcOptGroup> {
1850
1852
opts
1851
1853
}
1852
1854
1855
+ struct NullEmitter ;
1856
+
1857
+ impl errors:: emitter:: Emitter for NullEmitter {
1858
+ fn emit_diagnostic ( & mut self , _: & errors:: DiagnosticBuilder < ' _ > ) { }
1859
+ }
1860
+
1853
1861
// Converts strings provided as `--cfg [cfgspec]` into a `crate_cfg`.
1854
1862
pub fn parse_cfgspecs ( cfgspecs : Vec < String > ) -> FxHashSet < ( String , Option < String > ) > {
1855
1863
syntax:: with_default_globals ( move || {
1856
1864
let cfg = cfgspecs. into_iter ( ) . map ( |s| {
1857
- let sess = ParseSess :: new ( FilePathMapping :: empty ( ) ) ;
1865
+
1866
+ let cm = Lrc :: new ( SourceMap :: new ( FilePathMapping :: empty ( ) ) ) ;
1867
+ let handler = Handler :: with_emitter ( false , None , Box :: new ( NullEmitter ) ) ;
1868
+ let sess = ParseSess :: with_span_handler ( handler, cm) ;
1858
1869
let filename = FileName :: cfg_spec_source_code ( & s) ;
1859
1870
let mut parser = new_parser_from_source_str ( & sess, filename, s. to_string ( ) ) ;
1860
1871
0 commit comments