@@ -402,3 +402,155 @@ impl ChangeArgumentTypeTrait for Foo {
402402 fn method_name ( & self , _x : char ) { }
403403}
404404
405+
406+
407+ struct Bar < T > ( T ) ;
408+
409+ // Add Type Parameter To Impl --------------------------------------------------
410+ trait AddTypeParameterToImpl < T > {
411+ fn id ( t : T ) -> T ;
412+ }
413+
414+ #[ cfg( cfail1) ]
415+ impl AddTypeParameterToImpl < u32 > for Bar < u32 > {
416+ fn id ( t : u32 ) -> u32 { t }
417+ }
418+
419+ #[ cfg( not( cfail1) ) ]
420+ #[ rustc_dirty( label="Hir" , cfg="cfail2" ) ]
421+ #[ rustc_clean( label="Hir" , cfg="cfail3" ) ]
422+ #[ rustc_metadata_dirty( cfg="cfail2" ) ]
423+ #[ rustc_metadata_clean( cfg="cfail3" ) ]
424+ impl < T > AddTypeParameterToImpl < T > for Bar < T > {
425+ #[ rustc_dirty( label="Hir" , cfg="cfail2" ) ]
426+ #[ rustc_clean( label="Hir" , cfg="cfail3" ) ]
427+ #[ rustc_metadata_dirty( cfg="cfail2" ) ]
428+ #[ rustc_metadata_clean( cfg="cfail3" ) ]
429+ fn id ( t : T ) -> T { t }
430+ }
431+
432+
433+
434+ // Change Self Type of Impl ----------------------------------------------------
435+ trait ChangeSelfTypeOfImpl {
436+ fn id ( self ) -> Self ;
437+ }
438+
439+ #[ cfg( cfail1) ]
440+ impl ChangeSelfTypeOfImpl for u32 {
441+ fn id ( self ) -> Self { self }
442+ }
443+
444+ #[ cfg( not( cfail1) ) ]
445+ #[ rustc_dirty( label="Hir" , cfg="cfail2" ) ]
446+ #[ rustc_clean( label="Hir" , cfg="cfail3" ) ]
447+ #[ rustc_metadata_dirty( cfg="cfail2" ) ]
448+ #[ rustc_metadata_clean( cfg="cfail3" ) ]
449+ impl ChangeSelfTypeOfImpl for u64 {
450+ #[ rustc_dirty( label="Hir" , cfg="cfail2" ) ]
451+ #[ rustc_clean( label="Hir" , cfg="cfail3" ) ]
452+ #[ rustc_metadata_dirty( cfg="cfail2" ) ]
453+ #[ rustc_metadata_clean( cfg="cfail3" ) ]
454+ fn id ( self ) -> Self { self }
455+ }
456+
457+
458+
459+ // Add Lifetime Bound to Impl --------------------------------------------------
460+ trait AddLifetimeBoundToImplParameter {
461+ fn id ( self ) -> Self ;
462+ }
463+
464+ #[ cfg( cfail1) ]
465+ impl < T > AddLifetimeBoundToImplParameter for T {
466+ fn id ( self ) -> Self { self }
467+ }
468+
469+ #[ cfg( not( cfail1) ) ]
470+ #[ rustc_dirty( label="Hir" , cfg="cfail2" ) ]
471+ #[ rustc_clean( label="Hir" , cfg="cfail3" ) ]
472+ #[ rustc_metadata_dirty( cfg="cfail2" ) ]
473+ #[ rustc_metadata_clean( cfg="cfail3" ) ]
474+ impl < T : ' static > AddLifetimeBoundToImplParameter for T {
475+ #[ rustc_dirty( label="Hir" , cfg="cfail2" ) ]
476+ #[ rustc_clean( label="Hir" , cfg="cfail3" ) ]
477+ #[ rustc_metadata_dirty( cfg="cfail2" ) ]
478+ #[ rustc_metadata_clean( cfg="cfail3" ) ]
479+ fn id ( self ) -> Self { self }
480+ }
481+
482+
483+
484+ // Add Trait Bound to Impl Parameter -------------------------------------------
485+ trait AddTraitBoundToImplParameter {
486+ fn id ( self ) -> Self ;
487+ }
488+
489+ #[ cfg( cfail1) ]
490+ impl < T > AddTraitBoundToImplParameter for T {
491+ fn id ( self ) -> Self { self }
492+ }
493+
494+ #[ cfg( not( cfail1) ) ]
495+ #[ rustc_dirty( label="Hir" , cfg="cfail2" ) ]
496+ #[ rustc_clean( label="Hir" , cfg="cfail3" ) ]
497+ #[ rustc_metadata_dirty( cfg="cfail2" ) ]
498+ #[ rustc_metadata_clean( cfg="cfail3" ) ]
499+ impl < T : Clone > AddTraitBoundToImplParameter for T {
500+ #[ rustc_dirty( label="Hir" , cfg="cfail2" ) ]
501+ #[ rustc_clean( label="Hir" , cfg="cfail3" ) ]
502+ #[ rustc_metadata_dirty( cfg="cfail2" ) ]
503+ #[ rustc_metadata_clean( cfg="cfail3" ) ]
504+ fn id ( self ) -> Self { self }
505+ }
506+
507+
508+
509+ // Add #[no_mangle] to Method --------------------------------------------------
510+ trait AddNoMangleToMethod {
511+ fn add_no_mangle_to_method ( & self ) { }
512+ }
513+
514+ #[ cfg( cfail1) ]
515+ impl AddNoMangleToMethod for Foo {
516+ fn add_no_mangle_to_method ( & self ) { }
517+ }
518+
519+ #[ cfg( not( cfail1) ) ]
520+ #[ rustc_clean( label="Hir" , cfg="cfail2" ) ]
521+ #[ rustc_clean( label="Hir" , cfg="cfail3" ) ]
522+ #[ rustc_metadata_clean( cfg="cfail2" ) ]
523+ #[ rustc_metadata_clean( cfg="cfail3" ) ]
524+ impl AddNoMangleToMethod for Foo {
525+ #[ rustc_dirty( label="Hir" , cfg="cfail2" ) ]
526+ #[ rustc_clean( label="Hir" , cfg="cfail3" ) ]
527+ #[ rustc_metadata_dirty( cfg="cfail2" ) ]
528+ #[ rustc_metadata_clean( cfg="cfail3" ) ]
529+ #[ no_mangle]
530+ fn add_no_mangle_to_method ( & self ) { }
531+ }
532+
533+
534+ // Make Method #[inline] -------------------------------------------------------
535+ trait MakeMethodInline {
536+ fn make_method_inline ( & self ) -> u8 { 0 }
537+ }
538+
539+ #[ cfg( cfail1) ]
540+ impl MakeMethodInline for Foo {
541+ fn make_method_inline ( & self ) -> u8 { 0 }
542+ }
543+
544+ #[ cfg( not( cfail1) ) ]
545+ #[ rustc_clean( label="Hir" , cfg="cfail2" ) ]
546+ #[ rustc_clean( label="Hir" , cfg="cfail3" ) ]
547+ #[ rustc_metadata_clean( cfg="cfail2" ) ]
548+ #[ rustc_metadata_clean( cfg="cfail3" ) ]
549+ impl MakeMethodInline for Foo {
550+ #[ rustc_dirty( label="Hir" , cfg="cfail2" ) ]
551+ #[ rustc_clean( label="Hir" , cfg="cfail3" ) ]
552+ #[ rustc_metadata_dirty( cfg="cfail2" ) ]
553+ #[ rustc_metadata_clean( cfg="cfail3" ) ]
554+ #[ inline]
555+ fn make_method_inline ( & self ) -> u8 { 0 }
556+ }
0 commit comments