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.
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, 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
andTokenKind::Interpolated
are being removed, and a consequence is thatstringify!
will perform token stream pretty printing, instead of AST pretty printing, in all of thestringify!
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
, andVisibilityKind
. 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