// run-pass // Test that the Callbacks interface to the compiler works. // ignore-cross-compile // ignore-remote #![feature(rustc_private)] extern crate rustc_driver; extern crate rustc_interface; use rustc_interface::interface; struct TestCalls<'a> { count: &'a mut u32 } impl rustc_driver::Callbacks for TestCalls<'_> { fn config(&mut self, _config: &mut interface::Config) { *self.count *= 2; } } fn main() { let mut count = 1; let args = vec!["compiler-calls".to_string(), "foo.rs".to_string()]; rustc_driver::catch_fatal_errors(|| { rustc_driver::RunCompiler::new(&args, &mut TestCalls { count: &mut count }).run().ok(); }) .ok(); assert_eq!(count, 2); }