1d78004575
Add nightly-only theming support to rustc output using Unicode box drawing characters instead of ASCII-art to draw the terminal UI: After: ``` error: foo ╭▸ test.rs:3:3 │ 3 │ X0 Y0 Z0 │ ┌───╿──│──┘ │ ┌│───│──┘ │ ┏││━━━┙ │ ┃││ 4 │ ┃││ X1 Y1 Z1 5 │ ┃││ X2 Y2 Z2 │ ┃│└────╿──│──┘ `Z` label │ ┃└─────│──┤ │ ┗━━━━━━┥ `Y` is a good letter too │ `X` is a good letter ╰╴ note: bar ╭▸ test.rs:4:3 │ 4 │ ┏ X1 Y1 Z1 5 │ ┃ X2 Y2 Z2 6 │ ┃ X3 Y3 Z3 │ ┗━━━━━━━━━━┛ ├ note: bar ╰ note: baz note: qux ╭▸ test.rs:4:3 │ 4 │ X1 Y1 Z1 ╰╴ ━━━━━━━━ ``` Before: ``` error: foo --> test.rs:3:3 | 3 | X0 Y0 Z0 | ___^__-__- | |___|__| | ||___| | ||| 4 | ||| X1 Y1 Z1 5 | ||| X2 Y2 Z2 | |||____^__-__- `Z` label | ||_____|__| | |______| `Y` is a good letter too | `X` is a good letter | note: bar --> test.rs:4:3 | 4 | / X1 Y1 Z1 5 | | X2 Y2 Z2 6 | | X3 Y3 Z3 | |__________^ = note: bar = note: baz note: qux --> test.rs:4:3 | 4 | X1 Y1 Z1 | ^^^^^^^^ ```
100 lines
2.8 KiB
Rust
100 lines
2.8 KiB
Rust
//@ revisions: ascii unicode
|
|
//@[ascii] compile-flags: --diagnostic-width=60 -Zwrite-long-types-to-disk=yes
|
|
//@[unicode] compile-flags: -Zunstable-options=yes --json=diagnostic-unicode --diagnostic-width=60 -Zwrite-long-types-to-disk=yes
|
|
//@ normalize-stderr-test: "long-type-\d+" -> "long-type-hash"
|
|
|
|
mod a {
|
|
// Force the "short path for unique types" machinery to trip up
|
|
pub struct Atype;
|
|
pub struct Btype;
|
|
pub struct Ctype;
|
|
}
|
|
|
|
mod b {
|
|
pub struct Atype<T, K>(T, K);
|
|
pub struct Btype<T, K>(T, K);
|
|
pub struct Ctype<T, K>(T, K);
|
|
}
|
|
|
|
use b::*;
|
|
|
|
fn main() {
|
|
let x: Atype<
|
|
Btype<
|
|
Ctype<
|
|
Atype<
|
|
Btype<
|
|
Ctype<
|
|
Atype<
|
|
Btype<
|
|
Ctype<i32, i32>,
|
|
i32
|
|
>,
|
|
i32
|
|
>,
|
|
i32
|
|
>,
|
|
i32
|
|
>,
|
|
i32
|
|
>,
|
|
i32
|
|
>,
|
|
i32
|
|
>,
|
|
i32
|
|
> = Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(
|
|
Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(
|
|
Ok("")
|
|
))))))))))))))))))))))))))))))
|
|
))))))))))))))))))))))))))))));
|
|
//~^^^^^ ERROR E0308
|
|
|
|
let _ = Some(Ok(Some(Some(Some(Some(Some(Some(Some(Some(Some(Some(Some(Some(Some(Some(Some(
|
|
Some(Some(Some(Some(Some(Some(Some(Some(Some(Some(Some(Some(Some(Some(Some(Some(Some(Some(
|
|
Some(Some(Some(Some(Some(Some(Some(Some(Some(Some(Some(Some(Some(Some(Some(Some(Some(
|
|
Some(Some(Some(Some(Some(Some(Some(Some(Some("")))))))))
|
|
)))))))))))))))))
|
|
))))))))))))))))))
|
|
))))))))))))))))) == Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(
|
|
Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(
|
|
Ok(Ok(Ok(Ok(Ok(Ok(Ok("")))))))
|
|
))))))))))))))))))))))))))))))
|
|
))))))))))))))))))))))));
|
|
//~^^^^^ ERROR E0308
|
|
|
|
let x: Atype<
|
|
Btype<
|
|
Ctype<
|
|
Atype<
|
|
Btype<
|
|
Ctype<
|
|
Atype<
|
|
Btype<
|
|
Ctype<i32, i32>,
|
|
i32
|
|
>,
|
|
i32
|
|
>,
|
|
i32
|
|
>,
|
|
i32
|
|
>,
|
|
i32
|
|
>,
|
|
i32
|
|
>,
|
|
i32
|
|
>,
|
|
i32
|
|
> = ();
|
|
//~^ ERROR E0308
|
|
|
|
let _: () = Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(
|
|
Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(Ok(
|
|
Ok(Ok(Ok(Ok(Ok(Ok(Ok("")))))))
|
|
))))))))))))))))))))))))))))))
|
|
))))))))))))))))))))))));
|
|
//~^^^^^ ERROR E0308
|
|
}
|