Instead, use the `%validate-json` lit substitution to validate and format the
API descriptor file before running it through FileCheck. This allows us to
avoid needing to introduce a dedicated frontend option just to control whether
the output of -emit-api-descriptor is pretty printed.
Make the changes to APIGenRecorder that are necessary to make it capable of
emitting API descriptors during -emit-module jobs. The output in this mode
differs from the output when run on an existing module in a couple of important
ways:
- The value for the `file` key in the descriptor JSON is now the path to the
source file that defines the declaration responsible for the symbol. In
`swift-api-extract` mode, the value for this key is the path to the module or
swiftinterface which is unavailable during an -emit-module job since the module
is usually not being emitted to its final installed location.
- Some additional symbols may be included in the API descriptor JSON because
more of the AST is available when emitting the module.
Resolves rdar://110916764