Module cargo::core::compiler::future_incompat
source · Expand description
Support for future-incompatible warning reporting.
Here is an overview of how Cargo handles future-incompatible reports.
§Receive reports from the compiler
When receiving a compiler message during a build, if it is effectively
a FutureIncompatReport
, Cargo gathers and forwards it as a
Message::FutureIncompatReport
to the main thread.
To have the correct layout of strucutures for deserializing a report
emitted by the compiler, most of structure definitions, for example
FutureIncompatReport
, are copied either partially or entirely from
compiler/rustc_errors/src/json.rs in rust-lang/rust repository.
§Persist reports on disk
When a build comes to an end, by calling save_and_display_report
Cargo saves the report on disk, and displays it directly if requested
via command line or configuration. The information of the on-disk file can
be found in [FUTURE_INCOMPAT_FILE
].
During the persistent process, Cargo will attempt to query the source of each package emitting the report, for the sake of providing an upgrade information as a solution to fix the incompatibility.
§Display reports to users
Users can run cargo report future-incompat
to retrieve a report. This is
done by OnDiskReports::load
. Cargo simply prints reports to the
standard output.
Structs§
- A diagnostic emitted by the compiler as a JSON message. We only care about the ‘rendered’ field
- A single future-incompatible warning emitted by rustc.
- The future incompatibility report, emitted by the compiler as a JSON message.
- Structure used for collecting reports in-memory.
- The structure saved to disk containing the reports.
Constants§
Functions§
- Writes a future-incompat report to disk, using the per-package reports gathered during the build. If requested by the user, a message is also displayed in the build output.