pub resolutions: Option<&'a Resolutions>,
pub mir_map: Option<&'b MirMap<'tcx>>,
pub analysis: Option<&'a ty::CrateAnalysis<'a>>,
- pub tcx: Option<&'b TyCtxt<'tcx>>,
+ pub tcx: Option<TyCtxt<'b, 'tcx, 'tcx>>,
pub trans: Option<&'a trans::CrateTranslation>,
}
hir_crate: &'a hir::Crate,
analysis: &'a ty::CrateAnalysis<'a>,
mir_map: Option<&'b MirMap<'tcx>>,
- tcx: &'b TyCtxt<'tcx>,
+ tcx: TyCtxt<'b, 'tcx, 'tcx>,
crate_name: &'a str)
-> CompileState<'a, 'b, 'ast, 'tcx> {
CompileState {
name: &str,
f: F)
-> Result<R, usize>
- where F: FnOnce(&TyCtxt<'tcx>, Option<MirMap<'tcx>>, ty::CrateAnalysis, CompileResult) -> R
+ where F: for<'a> FnOnce(TyCtxt<'a, 'tcx, 'tcx>,
+ Option<MirMap<'tcx>>,
+ ty::CrateAnalysis,
+ CompileResult) -> R
{
macro_rules! try_with_f {
($e: expr, ($t: expr, $m: expr, $a: expr)) => {
}
/// Run the translation phase to LLVM, after which the AST and analysis can
-pub fn phase_4_translate_to_llvm<'tcx>(tcx: &TyCtxt<'tcx>,
- mut mir_map: MirMap<'tcx>,
- analysis: ty::CrateAnalysis) -> trans::CrateTranslation {
+pub fn phase_4_translate_to_llvm<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
+ mut mir_map: MirMap<'tcx>,
+ analysis: ty::CrateAnalysis)
+ -> trans::CrateTranslation {
let time_passes = tcx.sess.time_passes();
time(time_passes,