@@ -402,3 +402,155 @@ impl ChangeArgumentTypeTrait for Foo {
402
402
fn method_name ( & self , _x : char ) { }
403
403
}
404
404
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