1
Fork 0

new unstable option: -Zwrite-long-types-to-disk

This option guards the logic of writing long type names in files and
instead using short forms in error messages in rustc_middle/ty/error
behind a flag. The main motivation for this change is to disable this
behaviour when running ui tests.

This logic can be triggered by running tests in a directory that has a
long enough path, e.g. /my/very-long-path/where/rust-codebase/exists/

This means ui tests can fail depending on how long the path to their
file is.

Some ui tests actually rely on this behaviour for their assertions,
so for those we enable the flag manually.
This commit is contained in:
Mahdi Dibaiee 2023-07-20 16:47:42 +01:00
parent 33a2c2487a
commit 8df39667dc
25 changed files with 47 additions and 32 deletions

View file

@ -1,3 +1,4 @@
// compile-flags: -Zwrite-long-types-to-disk=yes
trait Trait { type AssociatedType; }
fn foo<T>(t: T) where T: Trait<AssociatedType=u32> {

View file

@ -1,5 +1,5 @@
error[E0271]: type mismatch resolving `<i8 as Trait>::AssociatedType == u32`
--> $DIR/E0271.rs:10:9
--> $DIR/E0271.rs:11:9
|
LL | foo(3_i8);
| --- ^^^^ type mismatch resolving `<i8 as Trait>::AssociatedType == u32`
@ -7,12 +7,12 @@ LL | foo(3_i8);
| required by a bound introduced by this call
|
note: expected this to be `u32`
--> $DIR/E0271.rs:7:43
--> $DIR/E0271.rs:8:43
|
LL | impl Trait for i8 { type AssociatedType = &'static str; }
| ^^^^^^^^^^^^
note: required by a bound in `foo`
--> $DIR/E0271.rs:3:32
--> $DIR/E0271.rs:4:32
|
LL | fn foo<T>(t: T) where T: Trait<AssociatedType=u32> {
| ^^^^^^^^^^^^^^^^^^ required by this bound in `foo`

View file

@ -1,3 +1,4 @@
// compile-flags: -Zwrite-long-types-to-disk=yes
// normalize-stderr-test: "long-type-\d+" -> "long-type-hash"
trait Foo {}

View file

@ -1,12 +1,12 @@
error[E0275]: overflow evaluating the requirement `Bar<Bar<Bar<Bar<Bar<Bar<Bar<...>>>>>>>: Foo`
--> $DIR/E0275.rs:6:33
--> $DIR/E0275.rs:7:33
|
LL | impl<T> Foo for T where Bar<T>: Foo {}
| ^^^
|
= help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`E0275`)
note: required for `Bar<Bar<Bar<Bar<Bar<Bar<Bar<Bar<Bar<Bar<Bar<Bar<Bar<Bar<Bar<Bar<Bar<Bar<Bar<Bar<Bar<...>>>>>>>>>>>>>>>>>>>>>` to implement `Foo`
--> $DIR/E0275.rs:6:9
--> $DIR/E0275.rs:7:9
|
LL | impl<T> Foo for T where Bar<T>: Foo {}
| ^^^ ^ --- unsatisfied trait bound introduced here