Jubilee a69982e00a
Rollup merge of #138019 - obi1kenobi:pg/pretty-print-more-attrs, r=compiler-errors
Pretty-print `#[deprecated]` attribute in HIR.

Pretty-print `#[deprecated]` attribute in a form closer to how it might appear in Rust source code, rather than using a `Debug`-like representation.

Consider the following Rust code:
```rust
#[deprecated]
pub struct PlainDeprecated;

#[deprecated = "here's why this is deprecated"]
pub struct DirectNote;

#[deprecated(since = "1.2.3", note = "here's why this is deprecated")]
pub struct SinceAndNote;
```

Here's the previous output:
```
#[attr="Deprecation{deprecation: Deprecation{since: Unspecifiednote:
suggestion: }span: }")]
struct PlainDeprecated;

#[attr="Deprecation{deprecation: Deprecation{since: Unspecifiednote:
here's why this is deprecatedsuggestion: }span: }")]
struct DirectNote;

#[attr="Deprecation{deprecation: Deprecation{since: NonStandard(1.2.3)note:
here's why this is deprecatedsuggestion: }span: }")]
struct SinceAndNote;
```

Here's the new output:
```rust
#[deprecated]
struct PlainDeprecated;

#[deprecated = "here's why this is deprecated"]
struct DirectNote;

#[deprecated(since = "1.2.3", note = "here's why this is deprecated"]
struct SinceAndNote;
```

Also includes a test for `#[diagnostic::(..)]` attributes, though their behavior is not changed here. I already wrote the test, so I figured it probably won't hurt to have it.

Related to discussion in #137645.

r? `@jdonszelmann`
2025-03-04 19:37:07 -08:00
..
2025-03-03 09:03:04 +01:00
2025-02-26 19:27:19 +00:00
2025-02-21 00:41:17 +00:00
2025-02-21 00:41:17 +00:00
2025-03-03 08:52:07 +01:00
2025-02-28 08:42:06 +11:00
2025-02-24 14:31:19 +01:00
2025-02-26 19:03:29 +00:00
2025-02-21 00:41:17 +00:00
2025-02-28 08:42:14 +11:00
2025-02-24 14:31:19 +01:00
2025-02-24 18:48:40 +00:00
2025-02-28 08:42:14 +11:00
2025-02-21 00:41:17 +00:00
2025-02-24 09:26:54 +00:00
2025-02-21 00:41:17 +00:00
2025-02-25 16:56:04 +00:00
2025-02-25 16:56:04 +00:00
2025-02-21 00:41:17 +00:00
2025-02-27 20:02:25 +00:00
2025-02-26 19:09:51 +01:00
2025-02-24 09:26:54 +00:00
2025-02-21 00:41:17 +00:00
2025-02-24 09:26:54 +00:00
2025-02-21 00:41:17 +00:00
2025-02-24 09:26:54 +00:00
2025-02-28 12:16:48 +01:00
2025-02-25 16:56:04 +00: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 interpret a test.

As part of an ongoing 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 a legacy compiletest-style test header. To fix this, you should migrate to the ui_test-style header //@ <content>.