use a::TyCtxt; mod a { use std::ops::Deref; pub struct TyCtxt<'tcx> { gcx: &'tcx GlobalCtxt<'tcx>, } impl<'tcx> Deref for TyCtxt<'tcx> { type Target = &'tcx GlobalCtxt<'tcx>; fn deref(&self) -> &Self::Target { &self.gcx } } pub struct GlobalCtxt<'tcx> { pub sess: &'tcx Session, _t: &'tcx (), } pub struct Session { pub opts: (), } } mod b { fn foo<'tcx>(tcx: crate::TyCtxt<'tcx>) { tcx.opts; //~^ ERROR no field `opts` on type `TyCtxt<'tcx>` //~| HELP one of the expressions' fields has a field of the same name } } fn main() {}