Following commit 401dd84 in the Rust project

(https://github.com/rust-lang/rust),
`ErrorGuaranteed` was replaced by fatal errors.
As a result, `tcx.analysis()` now aborts directly
instead of returning an error guard.
To accommodate this change, this update replaces
`tcx.analysis()` with `typeck()`
to perform type checking in the example.
This commit is contained in:
Yang Lin 2025-03-16 23:43:17 +08:00
parent 971366b58b
commit 832299550c
2 changed files with 7 additions and 4 deletions

View File

@ -1,4 +1,4 @@
// Tested with nightly-2025-02-13 // Tested with nightly-2025-03-08
#![feature(rustc_private)] #![feature(rustc_private)]
@ -86,8 +86,10 @@ fn main() {
rustc_interface::run_compiler(config, |compiler| { rustc_interface::run_compiler(config, |compiler| {
let krate = rustc_interface::passes::parse(&compiler.sess); let krate = rustc_interface::passes::parse(&compiler.sess);
rustc_interface::create_and_enter_global_ctxt(&compiler, krate, |tcx| { rustc_interface::create_and_enter_global_ctxt(&compiler, krate, |tcx| {
// Run the analysis phase on the local crate to trigger the type error. // Iterate all the items defined and perform type checking.
let _ = tcx.analysis(()); tcx.par_hir_body_owners(|item_def_id| {
tcx.ensure_ok().typeck(item_def_id);
});
}); });
// If the compiler has encountered errors when this closure returns, it will abort (!) the program. // If the compiler has encountered errors when this closure returns, it will abort (!) the program.
// We avoid this by resetting the error count before returning // We avoid this by resetting the error count before returning

View File

@ -7,7 +7,7 @@ otherwise be printed to stderr.
To get diagnostics from the compiler, To get diagnostics from the compiler,
configure [`rustc_interface::Config`] to output diagnostic to a buffer, configure [`rustc_interface::Config`] to output diagnostic to a buffer,
and run [`TyCtxt.analysis`]. and run [`rustc_hir_typeck::typeck`] for each item.
```rust ```rust
{{#include ../../examples/rustc-interface-getting-diagnostics.rs}} {{#include ../../examples/rustc-interface-getting-diagnostics.rs}}
@ -16,3 +16,4 @@ and run [`TyCtxt.analysis`].
[`rustc_interface`]: https://doc.rust-lang.org/nightly/nightly-rustc/rustc_interface/index.html [`rustc_interface`]: https://doc.rust-lang.org/nightly/nightly-rustc/rustc_interface/index.html
[`rustc_interface::Config`]: https://doc.rust-lang.org/nightly/nightly-rustc/rustc_interface/interface/struct.Config.html [`rustc_interface::Config`]: https://doc.rust-lang.org/nightly/nightly-rustc/rustc_interface/interface/struct.Config.html
[`TyCtxt.analysis`]: https://doc.rust-lang.org/nightly/nightly-rustc/rustc_interface/passes/fn.analysis.html [`TyCtxt.analysis`]: https://doc.rust-lang.org/nightly/nightly-rustc/rustc_interface/passes/fn.analysis.html
[`rustc_hir_typeck::typeck`]: https://doc.rust-lang.org/nightly/nightly-rustc/rustc_hir_typeck/fn.typeck.html