Skip to content

Commit 56e5867

Browse files
ICH: Add some more test cases for trait impls.
1 parent 2f56207 commit 56e5867

File tree

1 file changed

+152
-0
lines changed

1 file changed

+152
-0
lines changed

src/test/incremental/hashes/trait_impls.rs

+152
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)