Files
rust/tests/ui
Matthias Krüger 2ff33bb1df Rollup merge of #127717 - gurry:127441-stray-impl-sugg, r=compiler-errors
Fix malformed suggestion for repeated maybe unsized bounds

Fixes #127441

Now when we encounter something like `foo(a : impl ?Sized + ?Sized)`, instead of suggesting removal of both bounds and leaving `foo(a: impl )` behind, we suggest changing the first bound to `Sized` and removing the second bound, resulting in `foo(a: impl Sized)`.

Although the issue was reported for impl trait types, it also occurred with regular param bounds. So if we encounter `foo<T: ?Sized + ?Sized>(a: T)` we now detect that all the bounds are `?Sized` and therefore emit the suggestion to remove the entire predicate `: ?Sized + ?Sized` resulting in `foo<T>(a: T)`.

Lastly, if we encounter a situation where some of the bounds are something other than `?Sized`, then we emit separate removal suggestions for each `?Sized` bound. E.g. if we see `foo(a: impl ?Sized + Bar + ?Sized)` or `foo<T: ?Sized + Bar + ?Sized>(a: T)` we emit suggestions such that the user will be left with `foo(a : impl Bar)` or `foo<T: Bar>(a: T)` respectively.
2024-07-24 22:22:16 +02:00
..
2024-07-18 17:00:43 -04:00
2024-07-12 11:52:04 -04:00
2024-05-02 19:42:31 -04:00
2024-07-18 00:00:04 +00:00
2024-07-14 13:50:09 +09:00
2024-07-18 14:32:10 +02:00
2024-07-19 23:27:42 +03:00
2024-06-21 19:00:18 -04:00
2024-04-21 15:43:43 -03:00
2024-07-06 14:24:20 +02:00
2024-03-06 12:01:54 +00:00
2024-04-12 20:57:07 +00:00
2024-06-01 09:40:46 +08:00
2024-06-21 19:00:18 -04:00
2024-07-22 22:51:53 +00:00
2024-07-12 03:22:32 +00:00
2024-04-29 14:53:38 +02:00
2024-05-20 11:13:10 -04:00
2024-07-21 21:42:10 +08:00
2024-04-07 17:38:07 -03:00
2024-05-28 12:31:12 +02:00
2024-04-11 17:53:27 -04:00
2024-02-29 14:43:43 +01:00
2024-07-14 13:50:09 +09:00
2024-04-27 10:54:31 +03:00
2024-07-22 22:51:53 +00:00
2024-07-22 22:51:53 +00:00
2024-05-21 20:16:39 +00:00
2024-06-25 18:06:22 +02:00

UI Tests

This folder contains rustc's UI tests.

Test Directives (Headers)

Typically, a UI test will have some test directives / headers which are special comments that tell compiletest how to build and intepret a test.

As part of an on-going effort to rewrite compiletest (see https://github.com/rust-lang/compiler-team/issues/536), a major change proposal to change legacy compiletest-style headers // <directive> to ui_test-style headers //@ <directive> was accepted (see https://github.com/rust-lang/compiler-team/issues/512.

An example directive is ignore-test. In legacy compiletest style, the header would be written as

// ignore-test

but in ui_test style, the header would be written as

//@ ignore-test

compiletest is changed to accept only //@ directives for UI tests (currently), and will reject and report an error if it encounters any comments // <content> that may be parsed as an legacy compiletest-style test header. To fix this, you should migrate to the ui_test-style header //@ <content>.