use rustc_data_structures::OnDrop;
use rustc_errors::registry::Registry;
use rustc_parse::new_parser_from_source_str;
+use rustc_span::edition;
+use rustc_span::source_map::{FileLoader, FileName, SourceMap};
use std::path::PathBuf;
use std::result;
use std::sync::{Arc, Mutex};
use syntax::ast::{self, MetaItemKind};
use syntax::sess::ParseSess;
-use syntax::source_map::{FileLoader, FileName, SourceMap};
use syntax::token;
-use syntax_pos::edition;
pub type Result<T> = result::Result<T, ErrorReported>;
override_queries: config.override_queries,
};
- let _sess_abort_error = OnDrop(|| {
- compiler.sess.diagnostic().print_error_count(registry);
- });
+ let r = {
+ let _sess_abort_error = OnDrop(|| {
+ compiler.sess.diagnostic().print_error_count(registry);
+ });
- f(&compiler)
+ f(&compiler)
+ };
+
+ let prof = compiler.sess.prof.clone();
+ prof.generic_activity("drop_compiler").run(move || drop(compiler));
+ r
}
pub fn run_compiler<R: Send>(mut config: Config, f: impl FnOnce(&Compiler) -> R + Send) -> R {