Repository: rust
Issue: Assert panic is difficult to read for long expressions
Labels: A-pretty,C-enhancement,A-diagnostics,T-compiler

Given the following test, the traceback is very ugly and difficult to read. I think the `assert!` macro is trying to limit the width to 80 or 100 characters, but it also indents by a ridiculous amount. It should either use block indentation instead of visual indentation, put everything one line, or possibly just format it the same as the original code.

This happened even when the terminal width was more than 100 characters.

```
    #[test]
    fn test_complex_types() {
        assert!(match_type(
            parse("char * const (*(* const bar)[10])(int )"),
            Pointer(
                Box::new(Array(
                    Box::new(Pointer(
                        Box::new(Function(FunctionType {
                            return_type: Box::new(Pointer(Box::new(Char(true)), Qualifiers::CONST)),
                            params: vec![Symbol {
                                ctype: Int(true),
                                storage_class: Default::default(),
                                id: String::new(),
                                qualifiers: Qualifiers::NONE,
                            }],
                            varargs: false,
                        })),
                        Qualifiers::NONE
                    )),
                    ArrayType::Fixed(Box::new(Expr::Int(Token::Int(10))))
                )),
                Qualifiers::CONST
            )
        ));
    }
```

```
failures:

---- parse::tests::test_complex_types stdout ----
thread 'parse::tests::test_complex_types' panicked at 'assertion failed: match_type(parse("char * const (*(* const bar)[10])(int )"),
           Pointer(Box::new(Array(Box::new(Pointer(Box::new(Function(FunctionType{return_type:
                                                                                      Box::new(Pointer(Box::new(Char(true)),
                                                                                                       Qualifiers::CONST)),
                                                                                  params:
                                                                                      vec![Symbol
                                                                                           {
                                                                                           ctype
                                                                                           :
                                                                                           Int
                                                                                           (
                                                                                           true
                                                                                           )
                                                                                           ,
                                                                                           storage_class
                                                                                           :
                                                                                           Default
                                                                                           ::
                                                                                           default
                                                                                           (

                                                                                           )
                                                                                           ,
                                                                                           id
                                                                                           :
                                                                                           String
                                                                                           ::
                                                                                           new
                                                                                           (

                                                                                           )
                                                                                           ,
                                                                                           qualifiers
                                                                                           :
                                                                                           Qualifiers
                                                                                           ::
                                                                                           NONE
                                                                                           ,
                                                                                           }],
                                                                                  varargs:
                                                                                      false,})),
                                                   Qualifiers::NONE)),
                                  ArrayType::Fixed(Box::new(Expr::Int(Token::Int(10)))))),
                   Qualifiers::CONST))', src/parse.rs:965:9
```