[Solved] `mir_borrowck` returns dummy value

Hi all,

I am trying to get the borrow checker results. I use rustc_driver::RunCompiler::new with a customized rustc_driver::Callbacks::after_analysis. Inside after_analysis, I call mir_borrowck like this

let local_def_id = ... // get the local_def_id of the function...
tcx.ensure().mir_borrowck(local_def_id);
let bc_result = tcx.mir_borrowck(local_def_id);
info!("borrow checker result: {:?}", bc_result);

But the bc_result is always a dummy value BorrowCheckResult { concrete_opaque_types: {}, closure_requirements: None, used_mut_upvars: [], tainted_by_errors: None }.

Any insight as to why that's the case? I can try to come up with a minimal reproducible example if needed.

EDIT: I've found what I missed there. The actual API should be used is like

            use rustc_borrowck::consumers::{
                get_body_with_borrowck_facts, ConsumerOptions::PoloniusOutputFacts,
            };
            let bc_result = get_body_with_borrowck_facts(tcx, local_def_id, PoloniusOutputFacts);

I will leave the post as it is if it might be useful for anyone else hitting into the same issue.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.