@@ -155,7 +155,7 @@ impl OutputType {
155
155
#[ derive( Clone , Copy , Debug , PartialEq , Eq ) ]
156
156
pub enum ErrorOutputType {
157
157
HumanReadable ( ColorConfig ) ,
158
- Json ,
158
+ Json ( bool ) ,
159
159
Short ( ColorConfig ) ,
160
160
}
161
161
@@ -1433,7 +1433,8 @@ pub fn build_session_options_and_crate_config(matches: &getopts::Matches)
1433
1433
let error_format = if matches. opts_present ( & [ "error-format" . to_owned ( ) ] ) {
1434
1434
match matches. opt_str ( "error-format" ) . as_ref ( ) . map ( |s| & s[ ..] ) {
1435
1435
Some ( "human" ) => ErrorOutputType :: HumanReadable ( color) ,
1436
- Some ( "json" ) => ErrorOutputType :: Json ,
1436
+ Some ( "json" ) => ErrorOutputType :: Json ( false ) ,
1437
+ Some ( "pretty-json" ) => ErrorOutputType :: Json ( true ) ,
1437
1438
Some ( "short" ) => ErrorOutputType :: Short ( color) ,
1438
1439
1439
1440
None => ErrorOutputType :: HumanReadable ( color) ,
@@ -1474,6 +1475,11 @@ pub fn build_session_options_and_crate_config(matches: &getopts::Matches)
1474
1475
1475
1476
let debugging_opts = build_debugging_options ( matches, error_format) ;
1476
1477
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
+
1477
1483
let mut output_types = BTreeMap :: new ( ) ;
1478
1484
if !debugging_opts. parse_only {
1479
1485
for list in matches. opt_strs ( "emit" ) {
@@ -2254,46 +2260,46 @@ mod tests {
2254
2260
let mut v5 = super :: basic_options ( ) ;
2255
2261
2256
2262
// 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 ) ) ;
2262
2268
2263
2269
// 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 ) ) ;
2269
2275
2270
2276
// 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 ) ) ;
2276
2282
2277
2283
// 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 ) ) ;
2283
2289
2284
2290
// 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 ) ) ;
2290
2296
2291
2297
// 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 ) ) ;
2297
2303
2298
2304
assert ! ( v1. dep_tracking_hash( ) != v2. dep_tracking_hash( ) ) ;
2299
2305
assert ! ( v1. dep_tracking_hash( ) != v3. dep_tracking_hash( ) ) ;
@@ -2316,29 +2322,29 @@ mod tests {
2316
2322
let mut v4 = super :: basic_options ( ) ;
2317
2323
2318
2324
// 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 ) ) ;
2342
2348
2343
2349
assert ! ( v1. dep_tracking_hash( ) == v2. dep_tracking_hash( ) ) ;
2344
2350
assert ! ( v1. dep_tracking_hash( ) == v3. dep_tracking_hash( ) ) ;
0 commit comments