Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Tidies up the code for the hierarchy printers a bit, in preparation for #3457.
The main result is that the hierarchy printers now accept any
IO
instance, which makes it much easier to write specs for them (in fact there were none before). Those specs are obviously incomplete, so further contributions are welcome.The text and JSON printers are now subclasses of
HierarchyPrinter
. Some of the common printing logic is not moved into this new abstract base class yet, namely the part about nesting subclasses when printing a type, since nesting implies namespacing instead for #3457.