rust/compiler
bors 4ba5068815 Auto merge of #77135 - Aaron1011:pretty-ignore-paren, r=petrochenkov
Refactor AST pretty-printing to allow skipping insertion of extra parens

Fixes #75734
Makes progress towards #43081
Unblocks PR #76130

When pretty-printing an AST node, we may insert additional parenthesis
to ensure that precedence is properly preserved in code we output.
However, the proc macro implementation relies on comparing a
pretty-printed AST node to the captured `TokenStream`. Inserting extra
parenthesis changes the structure of the reparsed `TokenStream`, making
the comparison fail.

This PR refactors the AST pretty-printing code to allow skipping the
insertion of additional parenthesis. Several freestanding methods are
moved to trait methods on `PrintState`, which keep track of an internal
`insert_extra_parens` flag. This flag is normally `true`, but we expose
a public method which allows pretty-printing a nonterminal with
`insert_extra_parens = false`.

To avoid changing the public interface of `rustc_ast_pretty`, the
freestanding `_to_string` methods are changed to delegate to a
newly-crated `State`. The main pretty-printing code is moved to a new
`state` module to ensure that it does not accidentally call any of these
public helper functions (instead, the internal functions with the same
name should be used).
2020-10-14 00:26:50 +00:00
..
rustc just max_level_info 2020-09-11 09:37:51 -07:00
rustc_apfloat Backport another LLVM commit to rustc_apfloat 2020-10-04 02:02:25 +02:00
rustc_arena Remove unused #[allow(...)] statements from compiler/ 2020-09-26 01:25:55 +02:00
rustc_ast Add hack to keep actix-web and actori-web compiling 2020-10-11 13:20:26 -04:00
rustc_ast_lowering Separate bounds and predicates for associated/opaque types 2020-10-06 11:19:29 +01:00
rustc_ast_passes use matches!() macro for simple if let conditions 2020-09-18 20:28:35 +02:00
rustc_ast_pretty Auto merge of #77135 - Aaron1011:pretty-ignore-paren, r=petrochenkov 2020-10-14 00:26:50 +00:00
rustc_attr Implement the instruction_set attribute 2020-10-08 23:32:20 +01:00
rustc_builtin_macros Rollup merge of #77831 - LingMan:use_std, r=jonas-schievink 2020-10-13 04:08:03 +09:00
rustc_codegen_llvm Replace absolute paths with relative ones 2020-10-13 14:16:45 +02:00
rustc_codegen_ssa Replace absolute paths with relative ones 2020-10-13 14:16:45 +02:00
rustc_data_structures Replace absolute paths with relative ones 2020-10-13 14:16:45 +02:00
rustc_driver Auto merge of #77649 - dash2507:replace_run_compiler, r=matthewjasper 2020-10-11 01:26:06 +00:00
rustc_error_codes Fix typo in error code description 2020-10-10 18:02:53 +09:00
rustc_errors /nightly/nightly-rustc 2020-09-23 21:51:56 +02:00
rustc_expand Detect blocks that could be struct expr bodies 2020-10-07 13:40:52 -07:00
rustc_feature Implement the instruction_set attribute 2020-10-08 23:32:20 +01:00
rustc_fs_util mv compiler to compiler/ 2020-08-30 18:45:07 +03:00
rustc_graphviz /nightly/nightly-rustc 2020-09-23 21:51:56 +02:00
rustc_hir Replace absolute paths with relative ones 2020-10-13 14:16:45 +02:00
rustc_hir_pretty Allow skipping extra paren insertion during AST pretty-printing 2020-10-11 12:09:48 -04:00
rustc_incremental /nightly/nightly-rustc 2020-09-23 21:51:56 +02:00
rustc_index cache types during normalization 2020-09-19 17:27:13 +02:00
rustc_infer Replace absolute paths with relative ones 2020-10-13 14:16:45 +02:00
rustc_interface Auto merge of #76830 - Artoria2e5:tune, r=nagisa 2020-10-13 02:49:00 +00:00
rustc_lexer Noticed a potential bug in eat_while(): it doesn't account for number of UTF8 bytes. 2020-10-09 11:12:54 +02:00
rustc_lint Auto merge of #77119 - GuillaumeGomez:unclosed-html-tag-lint, r=jyn514 2020-10-07 09:56:51 +00:00
rustc_llvm Auto merge of #76859 - Aaron1011:fix/llvm-cgu-reuse, r=davidtwco,nikic 2020-10-11 20:50:02 +00:00
rustc_macros Remove unused #[allow(...)] statements from compiler/ 2020-09-26 01:25:55 +02:00
rustc_metadata Take functions by value 2020-10-10 16:19:53 +02:00
rustc_middle Auto merge of #77917 - JohnTitor:rollup-e47h2qt, r=JohnTitor 2020-10-13 22:13:09 +00:00
rustc_mir Rollup merge of #77892 - est31:remove_redundant_absolute_paths, r=lcnr 2020-10-14 06:02:36 +09:00
rustc_mir_build Auto merge of #77917 - JohnTitor:rollup-e47h2qt, r=JohnTitor 2020-10-13 22:13:09 +00:00
rustc_parse Remove unused import 2020-10-11 12:09:48 -04:00
rustc_parse_format /nightly/nightly-rustc 2020-09-23 21:51:56 +02:00
rustc_passes Rollup merge of #76329 - GuillaumeGomez:doc-alias-crate-level, r=matthewjasper 2020-10-05 02:29:27 +02:00
rustc_plugin_impl /nightly/nightly-rustc 2020-09-23 21:51:56 +02:00
rustc_privacy Separate bounds and predicates for associated/opaque types 2020-10-06 11:19:29 +01:00
rustc_query_system update the version of itertools and parking_lot 2020-09-12 08:26:53 +02:00
rustc_resolve Rollup merge of #77825 - ethanboxx:min_const_generics_diagnostic, r=lcnr 2020-10-14 06:02:29 +09:00
rustc_save_analysis /nightly/nightly-rustc 2020-09-23 21:51:56 +02:00
rustc_serialize Replace absolute paths with relative ones 2020-10-13 14:16:45 +02:00
rustc_session Auto merge of #76830 - Artoria2e5:tune, r=nagisa 2020-10-13 02:49:00 +00:00
rustc_span Add hack to keep actix-web and actori-web compiling 2020-10-11 13:20:26 -04:00
rustc_symbol_mangling Replace absolute paths with relative ones 2020-10-13 14:16:45 +02:00
rustc_target Auto merge of #75406 - mati865:mingw-aslr, r=Mark-Simulacrum 2020-10-13 14:12:08 +00:00
rustc_trait_selection Replace absolute paths with relative ones 2020-10-13 14:16:45 +02:00
rustc_traits Update chalk to 0.32.0 2020-10-08 13:17:01 +02:00
rustc_ty Move item_bounds to typeck::collect 2020-10-06 11:18:45 +01:00
rustc_typeck explanatory comments and fix guard binding stack 2020-10-14 00:51:00 +08:00