@@ -155,7 +155,7 @@ impl OutputType {
155155#[ derive( Clone , Copy , Debug , PartialEq , Eq ) ]
156156pub enum ErrorOutputType {
157157 HumanReadable ( ColorConfig ) ,
158- Json ,
158+ Json ( bool ) ,
159159 Short ( ColorConfig ) ,
160160}
161161
@@ -1433,7 +1433,8 @@ pub fn build_session_options_and_crate_config(matches: &getopts::Matches)
14331433 let error_format = if matches. opts_present ( & [ "error-format" . to_owned ( ) ] ) {
14341434 match matches. opt_str ( "error-format" ) . as_ref ( ) . map ( |s| & s[ ..] ) {
14351435 Some ( "human" ) => ErrorOutputType :: HumanReadable ( color) ,
1436- Some ( "json" ) => ErrorOutputType :: Json ,
1436+ Some ( "json" ) => ErrorOutputType :: Json ( false ) ,
1437+ Some ( "pretty-json" ) => ErrorOutputType :: Json ( true ) ,
14371438 Some ( "short" ) => ErrorOutputType :: Short ( color) ,
14381439
14391440 None => ErrorOutputType :: HumanReadable ( color) ,
@@ -1474,6 +1475,11 @@ pub fn build_session_options_and_crate_config(matches: &getopts::Matches)
14741475
14751476 let debugging_opts = build_debugging_options ( matches, error_format) ;
14761477
1478+ if !debugging_opts. unstable_options && error_format == ErrorOutputType :: Json ( true ) {
1479+ early_error ( ErrorOutputType :: Json ( false ) ,
1480+ "--error-format=pretty-json is unstable" ) ;
1481+ }
1482+
14771483 let mut output_types = BTreeMap :: new ( ) ;
14781484 if !debugging_opts. parse_only {
14791485 for list in matches. opt_strs ( "emit" ) {
@@ -2254,46 +2260,46 @@ mod tests {
22542260 let mut v5 = super :: basic_options ( ) ;
22552261
22562262 // Reference
2257- v1. search_paths . add_path ( "native=abc" , super :: ErrorOutputType :: Json ) ;
2258- v1. search_paths . add_path ( "crate=def" , super :: ErrorOutputType :: Json ) ;
2259- v1. search_paths . add_path ( "dependency=ghi" , super :: ErrorOutputType :: Json ) ;
2260- v1. search_paths . add_path ( "framework=jkl" , super :: ErrorOutputType :: Json ) ;
2261- v1. search_paths . add_path ( "all=mno" , super :: ErrorOutputType :: Json ) ;
2263+ v1. search_paths . add_path ( "native=abc" , super :: ErrorOutputType :: Json ( false ) ) ;
2264+ v1. search_paths . add_path ( "crate=def" , super :: ErrorOutputType :: Json ( false ) ) ;
2265+ v1. search_paths . add_path ( "dependency=ghi" , super :: ErrorOutputType :: Json ( false ) ) ;
2266+ v1. search_paths . add_path ( "framework=jkl" , super :: ErrorOutputType :: Json ( false ) ) ;
2267+ v1. search_paths . add_path ( "all=mno" , super :: ErrorOutputType :: Json ( false ) ) ;
22622268
22632269 // Native changed
2264- v2. search_paths . add_path ( "native=XXX" , super :: ErrorOutputType :: Json ) ;
2265- v2. search_paths . add_path ( "crate=def" , super :: ErrorOutputType :: Json ) ;
2266- v2. search_paths . add_path ( "dependency=ghi" , super :: ErrorOutputType :: Json ) ;
2267- v2. search_paths . add_path ( "framework=jkl" , super :: ErrorOutputType :: Json ) ;
2268- v2. search_paths . add_path ( "all=mno" , super :: ErrorOutputType :: Json ) ;
2270+ v2. search_paths . add_path ( "native=XXX" , super :: ErrorOutputType :: Json ( false ) ) ;
2271+ v2. search_paths . add_path ( "crate=def" , super :: ErrorOutputType :: Json ( false ) ) ;
2272+ v2. search_paths . add_path ( "dependency=ghi" , super :: ErrorOutputType :: Json ( false ) ) ;
2273+ v2. search_paths . add_path ( "framework=jkl" , super :: ErrorOutputType :: Json ( false ) ) ;
2274+ v2. search_paths . add_path ( "all=mno" , super :: ErrorOutputType :: Json ( false ) ) ;
22692275
22702276 // Crate changed
2271- v2. search_paths . add_path ( "native=abc" , super :: ErrorOutputType :: Json ) ;
2272- v2. search_paths . add_path ( "crate=XXX" , super :: ErrorOutputType :: Json ) ;
2273- v2. search_paths . add_path ( "dependency=ghi" , super :: ErrorOutputType :: Json ) ;
2274- v2. search_paths . add_path ( "framework=jkl" , super :: ErrorOutputType :: Json ) ;
2275- v2. search_paths . add_path ( "all=mno" , super :: ErrorOutputType :: Json ) ;
2277+ v2. search_paths . add_path ( "native=abc" , super :: ErrorOutputType :: Json ( false ) ) ;
2278+ v2. search_paths . add_path ( "crate=XXX" , super :: ErrorOutputType :: Json ( false ) ) ;
2279+ v2. search_paths . add_path ( "dependency=ghi" , super :: ErrorOutputType :: Json ( false ) ) ;
2280+ v2. search_paths . add_path ( "framework=jkl" , super :: ErrorOutputType :: Json ( false ) ) ;
2281+ v2. search_paths . add_path ( "all=mno" , super :: ErrorOutputType :: Json ( false ) ) ;
22762282
22772283 // Dependency changed
2278- v3. search_paths . add_path ( "native=abc" , super :: ErrorOutputType :: Json ) ;
2279- v3. search_paths . add_path ( "crate=def" , super :: ErrorOutputType :: Json ) ;
2280- v3. search_paths . add_path ( "dependency=XXX" , super :: ErrorOutputType :: Json ) ;
2281- v3. search_paths . add_path ( "framework=jkl" , super :: ErrorOutputType :: Json ) ;
2282- v3. search_paths . add_path ( "all=mno" , super :: ErrorOutputType :: Json ) ;
2284+ v3. search_paths . add_path ( "native=abc" , super :: ErrorOutputType :: Json ( false ) ) ;
2285+ v3. search_paths . add_path ( "crate=def" , super :: ErrorOutputType :: Json ( false ) ) ;
2286+ v3. search_paths . add_path ( "dependency=XXX" , super :: ErrorOutputType :: Json ( false ) ) ;
2287+ v3. search_paths . add_path ( "framework=jkl" , super :: ErrorOutputType :: Json ( false ) ) ;
2288+ v3. search_paths . add_path ( "all=mno" , super :: ErrorOutputType :: Json ( false ) ) ;
22832289
22842290 // Framework changed
2285- v4. search_paths . add_path ( "native=abc" , super :: ErrorOutputType :: Json ) ;
2286- v4. search_paths . add_path ( "crate=def" , super :: ErrorOutputType :: Json ) ;
2287- v4. search_paths . add_path ( "dependency=ghi" , super :: ErrorOutputType :: Json ) ;
2288- v4. search_paths . add_path ( "framework=XXX" , super :: ErrorOutputType :: Json ) ;
2289- v4. search_paths . add_path ( "all=mno" , super :: ErrorOutputType :: Json ) ;
2291+ v4. search_paths . add_path ( "native=abc" , super :: ErrorOutputType :: Json ( false ) ) ;
2292+ v4. search_paths . add_path ( "crate=def" , super :: ErrorOutputType :: Json ( false ) ) ;
2293+ v4. search_paths . add_path ( "dependency=ghi" , super :: ErrorOutputType :: Json ( false ) ) ;
2294+ v4. search_paths . add_path ( "framework=XXX" , super :: ErrorOutputType :: Json ( false ) ) ;
2295+ v4. search_paths . add_path ( "all=mno" , super :: ErrorOutputType :: Json ( false ) ) ;
22902296
22912297 // All changed
2292- v5. search_paths . add_path ( "native=abc" , super :: ErrorOutputType :: Json ) ;
2293- v5. search_paths . add_path ( "crate=def" , super :: ErrorOutputType :: Json ) ;
2294- v5. search_paths . add_path ( "dependency=ghi" , super :: ErrorOutputType :: Json ) ;
2295- v5. search_paths . add_path ( "framework=jkl" , super :: ErrorOutputType :: Json ) ;
2296- v5. search_paths . add_path ( "all=XXX" , super :: ErrorOutputType :: Json ) ;
2298+ v5. search_paths . add_path ( "native=abc" , super :: ErrorOutputType :: Json ( false ) ) ;
2299+ v5. search_paths . add_path ( "crate=def" , super :: ErrorOutputType :: Json ( false ) ) ;
2300+ v5. search_paths . add_path ( "dependency=ghi" , super :: ErrorOutputType :: Json ( false ) ) ;
2301+ v5. search_paths . add_path ( "framework=jkl" , super :: ErrorOutputType :: Json ( false ) ) ;
2302+ v5. search_paths . add_path ( "all=XXX" , super :: ErrorOutputType :: Json ( false ) ) ;
22972303
22982304 assert ! ( v1. dep_tracking_hash( ) != v2. dep_tracking_hash( ) ) ;
22992305 assert ! ( v1. dep_tracking_hash( ) != v3. dep_tracking_hash( ) ) ;
@@ -2316,29 +2322,29 @@ mod tests {
23162322 let mut v4 = super :: basic_options ( ) ;
23172323
23182324 // Reference
2319- v1. search_paths . add_path ( "native=abc" , super :: ErrorOutputType :: Json ) ;
2320- v1. search_paths . add_path ( "crate=def" , super :: ErrorOutputType :: Json ) ;
2321- v1. search_paths . add_path ( "dependency=ghi" , super :: ErrorOutputType :: Json ) ;
2322- v1. search_paths . add_path ( "framework=jkl" , super :: ErrorOutputType :: Json ) ;
2323- v1. search_paths . add_path ( "all=mno" , super :: ErrorOutputType :: Json ) ;
2324-
2325- v2. search_paths . add_path ( "native=abc" , super :: ErrorOutputType :: Json ) ;
2326- v2. search_paths . add_path ( "dependency=ghi" , super :: ErrorOutputType :: Json ) ;
2327- v2. search_paths . add_path ( "crate=def" , super :: ErrorOutputType :: Json ) ;
2328- v2. search_paths . add_path ( "framework=jkl" , super :: ErrorOutputType :: Json ) ;
2329- v2. search_paths . add_path ( "all=mno" , super :: ErrorOutputType :: Json ) ;
2330-
2331- v3. search_paths . add_path ( "crate=def" , super :: ErrorOutputType :: Json ) ;
2332- v3. search_paths . add_path ( "framework=jkl" , super :: ErrorOutputType :: Json ) ;
2333- v3. search_paths . add_path ( "native=abc" , super :: ErrorOutputType :: Json ) ;
2334- v3. search_paths . add_path ( "dependency=ghi" , super :: ErrorOutputType :: Json ) ;
2335- v3. search_paths . add_path ( "all=mno" , super :: ErrorOutputType :: Json ) ;
2336-
2337- v4. search_paths . add_path ( "all=mno" , super :: ErrorOutputType :: Json ) ;
2338- v4. search_paths . add_path ( "native=abc" , super :: ErrorOutputType :: Json ) ;
2339- v4. search_paths . add_path ( "crate=def" , super :: ErrorOutputType :: Json ) ;
2340- v4. search_paths . add_path ( "dependency=ghi" , super :: ErrorOutputType :: Json ) ;
2341- v4. search_paths . add_path ( "framework=jkl" , super :: ErrorOutputType :: Json ) ;
2325+ v1. search_paths . add_path ( "native=abc" , super :: ErrorOutputType :: Json ( false ) ) ;
2326+ v1. search_paths . add_path ( "crate=def" , super :: ErrorOutputType :: Json ( false ) ) ;
2327+ v1. search_paths . add_path ( "dependency=ghi" , super :: ErrorOutputType :: Json ( false ) ) ;
2328+ v1. search_paths . add_path ( "framework=jkl" , super :: ErrorOutputType :: Json ( false ) ) ;
2329+ v1. search_paths . add_path ( "all=mno" , super :: ErrorOutputType :: Json ( false ) ) ;
2330+
2331+ v2. search_paths . add_path ( "native=abc" , super :: ErrorOutputType :: Json ( false ) ) ;
2332+ v2. search_paths . add_path ( "dependency=ghi" , super :: ErrorOutputType :: Json ( false ) ) ;
2333+ v2. search_paths . add_path ( "crate=def" , super :: ErrorOutputType :: Json ( false ) ) ;
2334+ v2. search_paths . add_path ( "framework=jkl" , super :: ErrorOutputType :: Json ( false ) ) ;
2335+ v2. search_paths . add_path ( "all=mno" , super :: ErrorOutputType :: Json ( false ) ) ;
2336+
2337+ v3. search_paths . add_path ( "crate=def" , super :: ErrorOutputType :: Json ( false ) ) ;
2338+ v3. search_paths . add_path ( "framework=jkl" , super :: ErrorOutputType :: Json ( false ) ) ;
2339+ v3. search_paths . add_path ( "native=abc" , super :: ErrorOutputType :: Json ( false ) ) ;
2340+ v3. search_paths . add_path ( "dependency=ghi" , super :: ErrorOutputType :: Json ( false ) ) ;
2341+ v3. search_paths . add_path ( "all=mno" , super :: ErrorOutputType :: Json ( false ) ) ;
2342+
2343+ v4. search_paths . add_path ( "all=mno" , super :: ErrorOutputType :: Json ( false ) ) ;
2344+ v4. search_paths . add_path ( "native=abc" , super :: ErrorOutputType :: Json ( false ) ) ;
2345+ v4. search_paths . add_path ( "crate=def" , super :: ErrorOutputType :: Json ( false ) ) ;
2346+ v4. search_paths . add_path ( "dependency=ghi" , super :: ErrorOutputType :: Json ( false ) ) ;
2347+ v4. search_paths . add_path ( "framework=jkl" , super :: ErrorOutputType :: Json ( false ) ) ;
23422348
23432349 assert ! ( v1. dep_tracking_hash( ) == v2. dep_tracking_hash( ) ) ;
23442350 assert ! ( v1. dep_tracking_hash( ) == v3. dep_tracking_hash( ) ) ;
0 commit comments