bors
ad8a3eb039
Auto merge of #58140 - eddyb:advent-of-print, r=nikomatsakis
...
Refactor ppaux out of existence.
A long-time coming, this PR reorganizes and rewrites the pretty-printing architecture of rustc, specifically the parts that involve the typesystem (which used to be in `rustc::util::ppaux`).
*Note: these commits used to be in #57967 before being split off.*
The new API (i.e. the `Printer` and `PrettyPrint` traits) is in `rustc::ty::print`.
Design points, roughly:
* using associated types in `Printer` to allow building e.g. an AST, not just printing as a side-effect
* several overloading points for implementers of `PrettyPrinter`, e.g. how `<...>` is printed
* for `fmt::Display` impls, the value to print is lifted to the `ty::tls` `tcx`, and everything after that stays within the `ty::print` API, which requires `'tcx` to match between values and the printer's `tcx`, without going through `fmt::Display` again
Most of the behavior is unchanged, except for a few details, which should be clear from the test changes.
r? @nikomatsakis
Fixes https://github.com/rust-lang/rust/issues/55464
2019-03-15 13:58:03 +00:00
Brian Campbell
5303c1b90b
Remove restriction on isize/usize in repr(simd)
...
As discussed in #55078 , there's no known reason for this restriction.
It's unlikely that repr(simd) will be stabilized in its current form, but
might as well remove some restrictions on it.
This removes the branch in `is_machine` which returns false for these types.
`is_machine` is only used for the repr(simd) type validation check.
2019-03-15 09:42:02 -04:00
kenta7777
12e3e8412c
reduced a code repetition related to bit operation.
2019-03-15 21:48:05 +09:00
Eduard-Mihai Burtescu
dbf19c3975
rustbuild: remove obsolete fulldeps behavior from src/test/pretty tests, and enable them by default.
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
0ee059d5a0
Fix rebase fallout and address some review comments.
2019-03-15 13:25:10 +02:00
Ralf Jung
4653ae1e3e
we can now print on entering/leaving the topmost frame, and make sure it stays that way
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
22d6c55cdf
rustc: print ExistentialProjection with spaces around =
, e.g. dyn Foo<A = X>
.
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
a54a41ce47
rustc: provide DisambiguatedDefPathData in ty::print.
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
8619edede1
rustc: slice substs in ty::print instead of passing the full ones.
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
9df7c3f48f
rustc: let ty::print::pretty's p! macro call arbitrary methods.
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
52b4f2daa0
rustc: remove PrintCx from ty::Print and rely on printers carrying TyCtxt.
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
2a656828ac
rustc: remove the ability for pretty-printers to override nesting.
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
c0c485c3ad
rustc: don't thread existential projections through path_generic_args.
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
ffa00d4628
rustc: make pretty_path_generic_args
' task as simple as possible.
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
4deaa69b42
rustc: print elided regions as '_ instead of nothing, and use a separate check when optional.
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
72690d24f0
rustc: always hide defaulted generic args, even in verbose mode.
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
381fa7aa18
rustc: move ty::print::PrintConfig's fields to FmtPrinter.
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
1a0f3a2856
rustc: streamline the Print/fmt::Display impls in ppaux and move them to ty::print::pretty.
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
030cdc9729
rustc: remove obsolete hacks from ppaux, relating to normalization under HRTB.
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
fb53bb9e2b
rustc: move Debug impls from ppaux to ty::structural_impls.
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
9c424850e8
rustc: disconnect all the Debug functionality from ty::print.
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
d0a1bf5c88
rustc: make util::ppaux private.
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
800ddb367e
rustc: remove fields from ty::print::PrintConfig available from tcx.
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
55871aad9a
rustc: split out the pretty-printing parts of ty::print into a separate module.
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
26f180705a
rustc: move ty/print.rs to ty/print/mod.rs.
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
6d67d6846c
rustc_codegen_utils: print all nominal types as paths, in symbol names.
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
5211e37b1d
rustc: don't pass Namespace explicitly, but rather track it in FmtPrinter.
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
ab26b26d34
rustc: introduce a ty::print::PrettyPrinter helper for printing "<...>".
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
35e5123f51
rustc: support overriding type printing in ty::print::Printer.
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
88d96b269c
rustc: support overriding region printing in ty::print::Printer.
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
fc914aa88a
rustc: centralize region printing in ty::RegionKind's Print impl.
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
cafd83d1d5
rustc: don't keep RegionHighlightMode in a thread-local.
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
7c4eecef0b
rustc: pass ty::print::PrintCx by value.
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
ab5d6fb302
rustc: remove the closure from ppaux's p! macro (by making ? implicit).
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
37e918526a
rustc: split off most of ty::print::PrintCx's fields into a separate struct.
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
5616ca857d
rustc: uniformize ty::print's error handling by requiring Result.
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
972af5e808
rustc: rename ppaux' print macro to just p and make its cx input implicit.
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
387ea61ec1
rustc: make ppaux' print macro use only one closure.
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
27ddf2cec8
rustc: replace node_path_str with uses of def_path_str.
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
36f64f15fc
rustc: remove ty::print::FORCE_ABSOLUTE
altogether.
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
66cc029dd7
rustc: assert ty::print::FORCE_ABSOLUTE
isn't needed anymore.
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
df6650f38c
rustc: move ...::<impl ...>
printing into pretty_path_qualified
.
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
39fd54a418
rustc: move the FORCE_IMPL_FILENAME_LINE
hack into print_def_path
.
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
aec5a48481
rustc: move <...>-less impl path special-case to pretty_path_qualified.
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
a15bfc6f48
rustc: merge PrintCx::parameterized and def_path printing.
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
b0fbca953f
rustc: integrate LocalPathPrinter's behavior into FmtPrinter.
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
9f8aaa04e0
rustc: move the contents of ty::item_path to ty::print.
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
e0c75ff40d
rustc: rename item_path to def_path (except the module in ty).
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
f1af5a77a0
rustc: remove TyCtxt::parent_def_id in favor of TyCtxt::parent.
2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
6ca6c1a6cc
rustc_mir: adjust the type_length_limit diagnostic to be more useful.
2019-03-15 13:25:10 +02:00