Files
rust/tests/ui
许杰友 Jieyou Xu (Joe) ffc04dfcc6 Rollup merge of #125236 - dtolnay:expandtest, r=nnethercote
Add tests for `-Zunpretty=expanded` ported from stringify's tests

This PR adds a new set of tests for the AST pretty-printer.

Previously, pretty-printer edge cases were tested by way of `stringify!` in [tests/ui/macros/stringify.rs](https://github.com/rust-lang/rust/blob/1.78.0/tests/ui/macros/stringify.rs), such as the tests added by https://github.com/rust-lang/rust/commit/419b26931b73209bfafdb9938c09e12b9d650613 and https://github.com/rust-lang/rust/commit/527e2eac17c5d3709e4e30e8b72ae33a6e8990b1.

Those tests will no longer provide effective coverage of the AST pretty-printer after #124141. `Nonterminal` and `TokenKind::Interpolated` are being removed, and a consequence is that `stringify!` will perform token stream pretty printing, instead of AST pretty printing, in all of the `stringify!` cases including $:expr and all other interpolations.

This PR adds 2 new ui tests with `compile-flags: -Zunpretty=expanded`:

- **tests/ui/unpretty/expanded-exhaustive.rs** — this test aims for exhaustive coverage of all the variants of `ExprKind`, `ItemKind`, `PatKind`, `StmtKind`, `TyKind`, and `VisibilityKind`. Some parts could use being fleshed out further, but the current state is roughly on par with what exists in the old stringify-based tests.

- **tests/ui/unpretty/expanded-interpolation.rs** — this test covers tricky macro metavariable edge cases that require the AST pretty printer to synthesize parentheses in order for the printed code to be valid Rust syntax.

r? `@nnethercote`
2024-05-18 20:38:05 +01:00
..
2024-05-13 16:55:58 -04:00
2024-05-02 19:42:31 -04:00
2024-04-24 13:12:33 +01:00
2024-05-07 16:56:54 -04:00
2024-04-21 15:43:43 -03:00
2024-02-01 03:31:03 +00:00
2024-03-06 12:01:54 +00:00
2024-04-21 15:43:43 -03:00
2024-04-21 15:43:43 -03:00
2024-04-14 21:34:14 +05:30
2024-04-12 20:57:07 +00:00
2024-05-02 19:42:31 -04:00
2024-04-12 17:45:15 +01:00
2024-04-24 13:12:33 +01:00
2024-04-24 13:12:33 +01:00
2024-04-29 14:53:38 +02:00
2024-04-25 10:47:24 +08:00
2024-05-10 13:47:37 -04:00
2024-05-02 19:42:31 -04:00
2024-05-08 21:37:54 +02:00
2024-04-07 17:38:07 -03:00
2024-04-11 17:53:27 -04:00
2024-05-02 19:42:31 -04:00
2024-03-23 16:14:42 +01:00
2024-04-21 15:43:43 -03:00
2024-04-14 09:42:53 -04:00
2024-02-29 14:43:43 +01:00
2024-04-24 13:12:33 +01:00
2024-03-31 14:58:17 -03:00
2024-04-27 10:54:31 +03:00
2024-04-25 10:51:54 -04:00
2024-03-15 13:37:41 +00:00
2024-05-08 21:37:55 +02:00
2024-04-07 17:38:07 -03:00
2024-04-27 10:54:31 +03:00
2024-02-22 18:05:28 +00:00
2024-01-13 12:46:58 -05:00
2024-02-07 10:42:01 +08:00
2024-01-13 12:46:58 -05:00
2024-01-13 12:46:58 -05:00
2024-02-07 10:42:01 +08: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>.