@@ -276,28 +276,45 @@ impl<'tcx> InstanceDef<'tcx> {
276276 }
277277}
278278
279- impl < ' tcx > fmt:: Display for Instance < ' tcx > {
279+ fn fmt_instance (
280+ f : & mut fmt:: Formatter < ' _ > ,
281+ instance : & Instance < ' _ > ,
282+ type_length : rustc_session:: Limit ,
283+ ) -> fmt:: Result {
284+ ty:: tls:: with ( |tcx| {
285+ let substs = tcx. lift ( instance. substs ) . expect ( "could not lift for printing" ) ;
286+
287+ let s = FmtPrinter :: new_with_limit ( tcx, Namespace :: ValueNS , type_length)
288+ . print_def_path ( instance. def_id ( ) , substs) ?
289+ . into_buffer ( ) ;
290+ f. write_str ( & s)
291+ } ) ?;
292+
293+ match instance. def {
294+ InstanceDef :: Item ( _) => Ok ( ( ) ) ,
295+ InstanceDef :: VTableShim ( _) => write ! ( f, " - shim(vtable)" ) ,
296+ InstanceDef :: ReifyShim ( _) => write ! ( f, " - shim(reify)" ) ,
297+ InstanceDef :: Intrinsic ( _) => write ! ( f, " - intrinsic" ) ,
298+ InstanceDef :: Virtual ( _, num) => write ! ( f, " - virtual#{}" , num) ,
299+ InstanceDef :: FnPtrShim ( _, ty) => write ! ( f, " - shim({})" , ty) ,
300+ InstanceDef :: ClosureOnceShim { .. } => write ! ( f, " - shim" ) ,
301+ InstanceDef :: DropGlue ( _, None ) => write ! ( f, " - shim(None)" ) ,
302+ InstanceDef :: DropGlue ( _, Some ( ty) ) => write ! ( f, " - shim(Some({}))" , ty) ,
303+ InstanceDef :: CloneShim ( _, ty) => write ! ( f, " - shim({})" , ty) ,
304+ }
305+ }
306+
307+ pub struct ShortInstance < ' a , ' tcx > ( pub & ' a Instance < ' tcx > , pub usize ) ;
308+
309+ impl < ' a , ' tcx > fmt:: Display for ShortInstance < ' a , ' tcx > {
280310 fn fmt ( & self , f : & mut fmt:: Formatter < ' _ > ) -> fmt:: Result {
281- ty:: tls:: with ( |tcx| {
282- let substs = tcx. lift ( self . substs ) . expect ( "could not lift for printing" ) ;
283- let s = FmtPrinter :: new ( tcx, Namespace :: ValueNS )
284- . print_def_path ( self . def_id ( ) , substs) ?
285- . into_buffer ( ) ;
286- f. write_str ( & s)
287- } ) ?;
311+ fmt_instance ( f, self . 0 , rustc_session:: Limit ( self . 1 ) )
312+ }
313+ }
288314
289- match self . def {
290- InstanceDef :: Item ( _) => Ok ( ( ) ) ,
291- InstanceDef :: VTableShim ( _) => write ! ( f, " - shim(vtable)" ) ,
292- InstanceDef :: ReifyShim ( _) => write ! ( f, " - shim(reify)" ) ,
293- InstanceDef :: Intrinsic ( _) => write ! ( f, " - intrinsic" ) ,
294- InstanceDef :: Virtual ( _, num) => write ! ( f, " - virtual#{}" , num) ,
295- InstanceDef :: FnPtrShim ( _, ty) => write ! ( f, " - shim({})" , ty) ,
296- InstanceDef :: ClosureOnceShim { .. } => write ! ( f, " - shim" ) ,
297- InstanceDef :: DropGlue ( _, None ) => write ! ( f, " - shim(None)" ) ,
298- InstanceDef :: DropGlue ( _, Some ( ty) ) => write ! ( f, " - shim(Some({}))" , ty) ,
299- InstanceDef :: CloneShim ( _, ty) => write ! ( f, " - shim({})" , ty) ,
300- }
315+ impl < ' tcx > fmt:: Display for Instance < ' tcx > {
316+ fn fmt ( & self , f : & mut fmt:: Formatter < ' _ > ) -> fmt:: Result {
317+ ty:: tls:: with ( |tcx| fmt_instance ( f, self , tcx. type_length_limit ( ) ) )
301318 }
302319}
303320
0 commit comments