Auto merge of #139720 - petrochenkov:errkind2, r=jieyouxu

compiletest: Make diagnostic kind mandatory on line annotations (take 2)

Compiletest currently accepts line annotations without kind in UI tests.
```
    let a = b + c; //~ my message
```

Such annotations have two effects.
- First, they match any compiler-produced diagnostic kind. This functionality is never used in practice, there are no target-dependent diagnostic kinds of something like that.
- Second, they are not "viral". For example, any explicit `//~ NOTE my msg` in a test requires all other `NOTE` diagnostics in the same test to be annotated. Implicit `//~ my msg` will just match the note and won't require other annotations.

The second functionality has a replacement since recently - directive `//@ dont-require-annotations: NOTE`.

This PR removes support for `//~ my message` and makes the explicit diagnostic kind mandatory.
Unwanted additional annotations are suppressed using the `dont-require-annotations` directive.

Closes https://github.com/rust-lang/compiler-team/issues/862.
Previous attempt - #139427.
r? `@jieyouxu`
This commit is contained in:
bors 2025-04-30 08:17:30 +00:00
commit 51762a91a0
1 changed files with 3 additions and 3 deletions

View File

@ -372,9 +372,9 @@ E.g. use `//@ dont-require-annotations: NOTE` to annotate notes selectively.
Avoid using this directive for `ERROR`s and `WARN`ings, unless there's a serious reason, like Avoid using this directive for `ERROR`s and `WARN`ings, unless there's a serious reason, like
target-dependent compiler output. target-dependent compiler output.
Missing diagnostic kinds (`//~ message`) are currently accepted, but are being phased away. Some diagnostics are never required to be line-annotated, regardless of their kind or directives,
They will match any compiler output kind, but will not force exhaustive annotations for that kind. for example secondary lines of multiline diagnostics,
Prefer explicit kind and `//@ dont-require-annotations` to achieve the same effect. or ubiquitous diagnostics like `aborting due to N previous errors`.
UI tests use the `-A unused` flag by default to ignore all unused warnings, as UI tests use the `-A unused` flag by default to ignore all unused warnings, as
unused warnings are usually not the focus of a test. However, simple code unused warnings are usually not the focus of a test. However, simple code