| // This test case tests the incremental compilation hash (ICH) implementation | 
 | // for let expressions. | 
 |  | 
 | // The general pattern followed here is: Change one thing between rev1 and rev2 | 
 | // and make sure that the hash has changed, then change nothing between rev2 and | 
 | // rev3 and make sure that the hash has not changed. | 
 |  | 
 | //@ build-pass (FIXME(62277): could be check-pass?) | 
 | //@ revisions: cfail1 cfail2 cfail3 cfail4 cfail5 cfail6 | 
 | //@ compile-flags: -Z query-dep-graph -O | 
 | //@ [cfail1]compile-flags: -Zincremental-ignore-spans | 
 | //@ [cfail2]compile-flags: -Zincremental-ignore-spans | 
 | //@ [cfail3]compile-flags: -Zincremental-ignore-spans | 
 | //@ ignore-backends: gcc | 
 |  | 
 | #![allow(warnings)] | 
 | #![feature(rustc_attrs)] | 
 | #![feature(specialization)] | 
 | #![crate_type="rlib"] | 
 |  | 
 | struct Foo; | 
 |  | 
 | // Change Method Name ----------------------------------------------------------- | 
 |  | 
 | #[cfg(any(cfail1,cfail4))] | 
 | pub trait ChangeMethodNameTrait { | 
 |     fn method_name(); | 
 | } | 
 |  | 
 | #[cfg(any(cfail1,cfail4))] | 
 | impl ChangeMethodNameTrait for Foo { | 
 |     fn method_name() { } | 
 | } | 
 |  | 
 | #[cfg(not(any(cfail1,cfail4)))] | 
 | #[rustc_clean(except="opt_hir_owner_nodes,associated_item_def_ids", cfg="cfail2")] | 
 | #[rustc_clean(cfg="cfail3")] | 
 | #[rustc_clean(except="opt_hir_owner_nodes,associated_item_def_ids,predicates_of", cfg="cfail5")] | 
 | #[rustc_clean(cfg="cfail6")] | 
 | pub trait ChangeMethodNameTrait { | 
 |     #[rustc_clean(cfg="cfail3")] | 
 |     #[rustc_clean(cfg="cfail6")] | 
 |     fn method_name2(); | 
 | } | 
 |  | 
 | #[cfg(not(any(cfail1,cfail4)))] | 
 | #[rustc_clean(except="opt_hir_owner_nodes,associated_item_def_ids", cfg="cfail2")] | 
 | #[rustc_clean(cfg="cfail3")] | 
 | #[rustc_clean(except="opt_hir_owner_nodes,associated_item_def_ids", cfg="cfail5")] | 
 | #[rustc_clean(cfg="cfail6")] | 
 | impl ChangeMethodNameTrait for Foo { | 
 |     #[rustc_clean(cfg="cfail3")] | 
 |     #[rustc_clean(cfg="cfail6")] | 
 |     fn method_name2() { } | 
 | } | 
 |  | 
 | // Change Method Body ----------------------------------------------------------- | 
 | // | 
 | // This should affect the method itself, but not the impl. | 
 |  | 
 | pub trait ChangeMethodBodyTrait { | 
 |     fn method_name(); | 
 | } | 
 |  | 
 | #[cfg(any(cfail1,cfail4))] | 
 | impl ChangeMethodBodyTrait for Foo { | 
 |     // -------------------------------------------------------------- | 
 |     // ------------------------- | 
 |     // -------------------------------------------------------------- | 
 |     // ------------------------- | 
 |     fn method_name() { | 
 |         // | 
 |     } | 
 | } | 
 |  | 
 | #[cfg(not(any(cfail1,cfail4)))] | 
 | #[rustc_clean(cfg="cfail2")] | 
 | #[rustc_clean(cfg="cfail3")] | 
 | #[rustc_clean(cfg="cfail5")] | 
 | #[rustc_clean(cfg="cfail6")] | 
 | impl ChangeMethodBodyTrait for Foo { | 
 |     #[rustc_clean(except="opt_hir_owner_nodes,typeck", cfg="cfail2")] | 
 |     #[rustc_clean(cfg="cfail3")] | 
 |     #[rustc_clean(except="opt_hir_owner_nodes,typeck", cfg="cfail5")] | 
 |     #[rustc_clean(cfg="cfail6")] | 
 |     fn method_name() { | 
 |         () | 
 |     } | 
 | } | 
 |  | 
 | // Change Method Body (inlined fn) --------------------------------------------- | 
 | // | 
 | // This should affect the method itself, but not the impl. | 
 |  | 
 | pub trait ChangeMethodBodyTraitInlined { | 
 |     fn method_name(); | 
 | } | 
 |  | 
 | #[cfg(any(cfail1,cfail4))] | 
 | impl ChangeMethodBodyTraitInlined for Foo { | 
 |     // ---------------------------------------------------------------------------- | 
 |     // ------------------------- | 
 |     // ---------------------------------------------------------------------------- | 
 |     // ------------------------- | 
 |     #[inline] | 
 |     fn method_name() { | 
 |         // ----- | 
 |     } | 
 | } | 
 |  | 
 | #[cfg(not(any(cfail1,cfail4)))] | 
 | #[rustc_clean(cfg="cfail2")] | 
 | #[rustc_clean(cfg="cfail3")] | 
 | #[rustc_clean(cfg="cfail5")] | 
 | #[rustc_clean(cfg="cfail6")] | 
 | impl ChangeMethodBodyTraitInlined for Foo { | 
 |     #[rustc_clean(except="opt_hir_owner_nodes,typeck,optimized_mir", cfg="cfail2")] | 
 |     #[rustc_clean(cfg="cfail3")] | 
 |     #[rustc_clean(except="opt_hir_owner_nodes,typeck,optimized_mir", cfg="cfail5")] | 
 |     #[rustc_clean(cfg="cfail6")] | 
 |     #[inline] | 
 |     fn method_name() { | 
 |         panic!() | 
 |     } | 
 | } | 
 |  | 
 | // Change Method Selfness ------------------------------------------------------ | 
 |  | 
 | #[cfg(any(cfail1,cfail4))] | 
 | pub trait ChangeMethodSelfnessTrait { | 
 |     fn method_name(); | 
 | } | 
 |  | 
 | #[cfg(any(cfail1,cfail4))] | 
 | impl ChangeMethodSelfnessTrait for Foo { | 
 |     fn method_name() { } | 
 | } | 
 |  | 
 | #[cfg(not(any(cfail1,cfail4)))] | 
 | pub trait ChangeMethodSelfnessTrait { | 
 |     fn method_name(&self); | 
 | } | 
 |  | 
 | #[cfg(not(any(cfail1,cfail4)))] | 
 | #[rustc_clean(cfg="cfail2")] | 
 | #[rustc_clean(cfg="cfail3")] | 
 | #[rustc_clean(except="opt_hir_owner_nodes", cfg="cfail5")] | 
 | #[rustc_clean(cfg="cfail6")] | 
 | impl ChangeMethodSelfnessTrait for Foo { | 
 |     #[rustc_clean( | 
 |         except="opt_hir_owner_nodes,associated_item,generics_of,fn_sig,typeck,optimized_mir", | 
 |         cfg="cfail2", | 
 |     )] | 
 |     #[rustc_clean(cfg="cfail3")] | 
 |     #[rustc_clean( | 
 |         except="opt_hir_owner_nodes,associated_item,generics_of,fn_sig,typeck,optimized_mir", | 
 |         cfg="cfail5", | 
 |     )] | 
 |     #[rustc_clean(cfg="cfail6")] | 
 |     fn method_name(&self) { | 
 |         () | 
 |     } | 
 | } | 
 |  | 
 | // Change Method Selfness ----------------------------------------------------------- | 
 |  | 
 | #[cfg(any(cfail1,cfail4))] | 
 | pub trait RemoveMethodSelfnessTrait { | 
 |     fn method_name(&self); | 
 | } | 
 |  | 
 | #[cfg(any(cfail1,cfail4))] | 
 | impl RemoveMethodSelfnessTrait for Foo { | 
 |     fn method_name(&self) { } | 
 | } | 
 |  | 
 | #[cfg(not(any(cfail1,cfail4)))] | 
 | pub trait RemoveMethodSelfnessTrait { | 
 |     fn method_name(); | 
 | } | 
 |  | 
 | #[cfg(not(any(cfail1,cfail4)))] | 
 | #[rustc_clean(cfg="cfail2")] | 
 | #[rustc_clean(cfg="cfail3")] | 
 | #[rustc_clean(except="opt_hir_owner_nodes", cfg="cfail5")] | 
 | #[rustc_clean(cfg="cfail6")] | 
 | impl RemoveMethodSelfnessTrait for Foo { | 
 |     #[rustc_clean( | 
 |         except="opt_hir_owner_nodes,associated_item,generics_of,fn_sig,typeck,optimized_mir", | 
 |         cfg="cfail2", | 
 |     )] | 
 |     #[rustc_clean(cfg="cfail3")] | 
 |     #[rustc_clean( | 
 |         except="opt_hir_owner_nodes,associated_item,generics_of,fn_sig,typeck,optimized_mir", | 
 |         cfg="cfail5", | 
 |     )] | 
 |     #[rustc_clean(cfg="cfail6")] | 
 |     fn method_name() {} | 
 | } | 
 |  | 
 | // Change Method Selfmutness ----------------------------------------------------------- | 
 |  | 
 | #[cfg(any(cfail1,cfail4))] | 
 | pub trait ChangeMethodSelfmutnessTrait { | 
 |     fn method_name(&self); | 
 | } | 
 |  | 
 | #[cfg(any(cfail1,cfail4))] | 
 | impl ChangeMethodSelfmutnessTrait for Foo { | 
 |     // ----------------------------------------------------------------------------------- | 
 |     // ------------------------- | 
 |     // ----------------------------------------------------------------------------------- | 
 |     // ------------------------- | 
 |     fn method_name(&    self) {} | 
 | } | 
 |  | 
 | #[cfg(not(any(cfail1,cfail4)))] | 
 | pub trait ChangeMethodSelfmutnessTrait { | 
 |     fn method_name(&mut self); | 
 | } | 
 |  | 
 | #[cfg(not(any(cfail1,cfail4)))] | 
 | #[rustc_clean(cfg="cfail2")] | 
 | #[rustc_clean(cfg="cfail3")] | 
 | #[rustc_clean(cfg="cfail5")] | 
 | #[rustc_clean(cfg="cfail6")] | 
 | impl ChangeMethodSelfmutnessTrait for Foo { | 
 |     #[rustc_clean(except="opt_hir_owner_nodes,fn_sig,typeck,optimized_mir", cfg="cfail2")] | 
 |     #[rustc_clean(cfg="cfail3")] | 
 |     #[rustc_clean(except="opt_hir_owner_nodes,fn_sig,typeck,optimized_mir", cfg="cfail5")] | 
 |     #[rustc_clean(cfg="cfail6")] | 
 |     fn method_name(&mut self) {} | 
 | } | 
 |  | 
 | // Change item kind ----------------------------------------------------------- | 
 |  | 
 | #[cfg(any(cfail1,cfail4))] | 
 | pub trait ChangeItemKindTrait { | 
 |     fn name(); | 
 | } | 
 |  | 
 | #[cfg(any(cfail1,cfail4))] | 
 | impl ChangeItemKindTrait for Foo { | 
 |     fn name() { } | 
 | } | 
 |  | 
 | #[cfg(not(any(cfail1,cfail4)))] | 
 | pub trait ChangeItemKindTrait { | 
 |     type name; | 
 | } | 
 |  | 
 | #[cfg(not(any(cfail1,cfail4)))] | 
 | #[rustc_clean(except="opt_hir_owner_nodes,associated_item_def_ids", cfg="cfail2")] | 
 | #[rustc_clean(cfg="cfail3")] | 
 | #[rustc_clean(except="opt_hir_owner_nodes,associated_item_def_ids", cfg="cfail5")] | 
 | #[rustc_clean(cfg="cfail6")] | 
 | impl ChangeItemKindTrait for Foo { | 
 |     type name = (); | 
 | } | 
 |  | 
 | // Remove item ----------------------------------------------------------- | 
 |  | 
 | #[cfg(any(cfail1,cfail4))] | 
 | pub trait RemoveItemTrait { | 
 |     type TypeName; | 
 |     fn method_name(); | 
 | } | 
 |  | 
 | #[cfg(any(cfail1,cfail4))] | 
 | impl RemoveItemTrait for Foo { | 
 |     type TypeName = (); | 
 |     fn method_name() { } | 
 | } | 
 |  | 
 | #[cfg(not(any(cfail1,cfail4)))] | 
 | pub trait RemoveItemTrait { | 
 |     type TypeName; | 
 | } | 
 |  | 
 | #[cfg(not(any(cfail1,cfail4)))] | 
 | #[rustc_clean(except="opt_hir_owner_nodes,associated_item_def_ids", cfg="cfail2")] | 
 | #[rustc_clean(cfg="cfail3")] | 
 | #[rustc_clean(except="opt_hir_owner_nodes,associated_item_def_ids", cfg="cfail5")] | 
 | #[rustc_clean(cfg="cfail6")] | 
 | impl RemoveItemTrait for Foo { | 
 |     type TypeName = (); | 
 | } | 
 |  | 
 | // Add item ----------------------------------------------------------- | 
 |  | 
 | #[cfg(any(cfail1,cfail4))] | 
 | pub trait AddItemTrait { | 
 |     type TypeName; | 
 | } | 
 |  | 
 | #[cfg(any(cfail1,cfail4))] | 
 | impl AddItemTrait for Foo { | 
 |     type TypeName = (); | 
 | } | 
 |  | 
 | #[cfg(not(any(cfail1,cfail4)))] | 
 | pub trait AddItemTrait { | 
 |     type TypeName; | 
 |     fn method_name(); | 
 | } | 
 |  | 
 | #[cfg(not(any(cfail1,cfail4)))] | 
 | #[rustc_clean(except="opt_hir_owner_nodes,associated_item_def_ids", cfg="cfail2")] | 
 | #[rustc_clean(cfg="cfail3")] | 
 | #[rustc_clean(except="opt_hir_owner_nodes,associated_item_def_ids", cfg="cfail5")] | 
 | #[rustc_clean(cfg="cfail6")] | 
 | impl AddItemTrait for Foo { | 
 |     type TypeName = (); | 
 |     fn method_name() { } | 
 | } | 
 |  | 
 | // Change has-value ----------------------------------------------------------- | 
 |  | 
 | #[cfg(any(cfail1,cfail4))] | 
 | pub trait ChangeHasValueTrait { | 
 |     //-------------------------------------------------------- | 
 |     //-------------------------- | 
 |     //-------------------------------------------------------- | 
 |     //-------------------------- | 
 |     fn method_name()   ; | 
 | } | 
 |  | 
 | #[cfg(any(cfail1,cfail4))] | 
 | impl ChangeHasValueTrait for Foo { | 
 |     fn method_name() { } | 
 | } | 
 |  | 
 | #[cfg(not(any(cfail1,cfail4)))] | 
 | #[rustc_clean(cfg="cfail2")] | 
 | #[rustc_clean(cfg="cfail3")] | 
 | #[rustc_clean(cfg="cfail5")] | 
 | #[rustc_clean(cfg="cfail6")] | 
 | pub trait ChangeHasValueTrait { | 
 |     #[rustc_clean(except="opt_hir_owner_nodes", cfg="cfail2")] | 
 |     #[rustc_clean(cfg="cfail3")] | 
 |     #[rustc_clean(except="opt_hir_owner_nodes", cfg="cfail5")] | 
 |     #[rustc_clean(cfg="cfail6")] | 
 |     fn method_name() { } | 
 | } | 
 |  | 
 | #[cfg(not(any(cfail1,cfail4)))] | 
 | #[rustc_clean(cfg="cfail2")] | 
 | #[rustc_clean(cfg="cfail3")] | 
 | #[rustc_clean(cfg="cfail5")] | 
 | #[rustc_clean(cfg="cfail6")] | 
 | impl ChangeHasValueTrait for Foo { | 
 |     fn method_name() { } | 
 | } | 
 |  | 
 | // Add default | 
 |  | 
 | pub trait AddDefaultTrait { | 
 |     fn method_name(); | 
 | } | 
 |  | 
 | #[cfg(any(cfail1,cfail4))] | 
 | impl AddDefaultTrait for Foo { | 
 |     // ------------------------------------------------------- | 
 |     // ------------------------- | 
 |     // ------------------------------------------------------- | 
 |     // ------------------------- | 
 |     fn         method_name() { } | 
 | } | 
 |  | 
 | #[cfg(not(any(cfail1,cfail4)))] | 
 | #[rustc_clean(cfg="cfail2")] | 
 | #[rustc_clean(cfg="cfail3")] | 
 | #[rustc_clean(cfg="cfail5")] | 
 | #[rustc_clean(cfg="cfail6")] | 
 | impl AddDefaultTrait for Foo { | 
 |     #[rustc_clean(except="opt_hir_owner_nodes", cfg="cfail2")] | 
 |     #[rustc_clean(cfg="cfail3")] | 
 |     #[rustc_clean(except="opt_hir_owner_nodes", cfg="cfail5")] | 
 |     #[rustc_clean(cfg="cfail6")] | 
 |     default fn method_name() { } | 
 | } | 
 |  | 
 | // Add arguments | 
 |  | 
 | #[cfg(any(cfail1,cfail4))] | 
 | pub trait AddArgumentTrait { | 
 |     fn method_name(&self); | 
 | } | 
 |  | 
 | #[cfg(any(cfail1,cfail4))] | 
 | impl AddArgumentTrait for Foo { | 
 |     // ----------------------------------------------------------------------------------- | 
 |     // ------------------------- | 
 |     // ----------------------------------------------------------------------------------- | 
 |     // ------------------------- | 
 |     fn method_name(&self         ) { } | 
 | } | 
 |  | 
 | #[cfg(not(any(cfail1,cfail4)))] | 
 | pub trait AddArgumentTrait { | 
 |     fn method_name(&self, x: u32); | 
 | } | 
 |  | 
 | #[cfg(not(any(cfail1,cfail4)))] | 
 | #[rustc_clean(cfg="cfail2")] | 
 | #[rustc_clean(cfg="cfail3")] | 
 | #[rustc_clean(cfg="cfail5")] | 
 | #[rustc_clean(cfg="cfail6")] | 
 | impl AddArgumentTrait for Foo { | 
 |     #[rustc_clean(except="opt_hir_owner_nodes,fn_sig,typeck,optimized_mir", cfg="cfail2")] | 
 |     #[rustc_clean(cfg="cfail3")] | 
 |     #[rustc_clean(except="opt_hir_owner_nodes,fn_sig,typeck,optimized_mir", cfg="cfail5")] | 
 |     #[rustc_clean(cfg="cfail6")] | 
 |     fn method_name(&self, _x: u32) { } | 
 | } | 
 |  | 
 | // Change argument type | 
 |  | 
 | #[cfg(any(cfail1,cfail4))] | 
 | pub trait ChangeArgumentTypeTrait { | 
 |     fn method_name(&self, x: u32); | 
 | } | 
 |  | 
 | #[cfg(any(cfail1,cfail4))] | 
 | impl ChangeArgumentTypeTrait for Foo { | 
 |     // ----------------------------------------------------------------------------------- | 
 |     // ------------------------- | 
 |     // ----------------------------------------------------------------------------------- | 
 |     // ------------------------- | 
 |     fn method_name(&self, _x: u32 ) { } | 
 | } | 
 |  | 
 | #[cfg(not(any(cfail1,cfail4)))] | 
 | pub trait ChangeArgumentTypeTrait { | 
 |     fn method_name(&self, x: char); | 
 | } | 
 |  | 
 | #[cfg(not(any(cfail1,cfail4)))] | 
 | #[rustc_clean(cfg="cfail2")] | 
 | #[rustc_clean(cfg="cfail3")] | 
 | #[rustc_clean(cfg="cfail5")] | 
 | #[rustc_clean(cfg="cfail6")] | 
 | impl ChangeArgumentTypeTrait for Foo { | 
 |     #[rustc_clean(except="opt_hir_owner_nodes,fn_sig,typeck,optimized_mir", cfg="cfail2")] | 
 |     #[rustc_clean(cfg="cfail3")] | 
 |     #[rustc_clean(except="opt_hir_owner_nodes,fn_sig,typeck,optimized_mir", cfg="cfail5")] | 
 |     #[rustc_clean(cfg="cfail6")] | 
 |     fn method_name(&self, _x: char) { } | 
 | } | 
 |  | 
 |  | 
 |  | 
 | struct Bar<T>(T); | 
 |  | 
 | // Add Type Parameter To Impl -------------------------------------------------- | 
 | trait AddTypeParameterToImpl<T> { | 
 |     fn id(t: T) -> T; | 
 | } | 
 |  | 
 | #[cfg(any(cfail1,cfail4))] | 
 | impl AddTypeParameterToImpl<u32> for Bar<u32> { | 
 |     fn id(t: u32) -> u32 { t } | 
 | } | 
 |  | 
 | #[cfg(not(any(cfail1,cfail4)))] | 
 | #[rustc_clean(except="opt_hir_owner_nodes,generics_of,impl_trait_header", cfg="cfail2")] | 
 | #[rustc_clean(cfg="cfail3")] | 
 | #[rustc_clean(except="opt_hir_owner_nodes,generics_of,impl_trait_header", cfg="cfail5")] | 
 | #[rustc_clean(cfg="cfail6")] | 
 | impl<TTT> AddTypeParameterToImpl<TTT> for Bar<TTT> { | 
 |     #[rustc_clean( | 
 |         except="opt_hir_owner_nodes,generics_of,fn_sig,type_of,typeck,optimized_mir", | 
 |         cfg="cfail2", | 
 |     )] | 
 |     #[rustc_clean(cfg="cfail3")] | 
 |     #[rustc_clean( | 
 |         except="opt_hir_owner_nodes,generics_of,fn_sig,type_of,typeck,optimized_mir", | 
 |         cfg="cfail5", | 
 |     )] | 
 |     #[rustc_clean(cfg="cfail6")] | 
 |     fn id(t: TTT) -> TTT { t } | 
 | } | 
 |  | 
 |  | 
 |  | 
 | // Change Self Type of Impl ---------------------------------------------------- | 
 | trait ChangeSelfTypeOfImpl { | 
 |     fn id(self) -> Self; | 
 | } | 
 |  | 
 | #[cfg(any(cfail1,cfail4))] | 
 | impl ChangeSelfTypeOfImpl for u32 { | 
 |     fn id(self) -> Self { self } | 
 | } | 
 |  | 
 | #[cfg(not(any(cfail1,cfail4)))] | 
 | #[rustc_clean(except="opt_hir_owner_nodes,impl_trait_header", cfg="cfail2")] | 
 | #[rustc_clean(cfg="cfail3")] | 
 | #[rustc_clean(except="opt_hir_owner_nodes,impl_trait_header", cfg="cfail5")] | 
 | #[rustc_clean(cfg="cfail6")] | 
 | impl ChangeSelfTypeOfImpl for u64 { | 
 |     #[rustc_clean(except="fn_sig,typeck,optimized_mir", cfg="cfail2")] | 
 |     #[rustc_clean(cfg="cfail3")] | 
 |     #[rustc_clean(except="fn_sig,typeck,optimized_mir", cfg="cfail5")] | 
 |     #[rustc_clean(cfg="cfail6")] | 
 |     fn id(self) -> Self { self } | 
 | } | 
 |  | 
 |  | 
 |  | 
 | // Add Lifetime Bound to Impl -------------------------------------------------- | 
 | trait AddLifetimeBoundToImplParameter { | 
 |     fn id(self) -> Self; | 
 | } | 
 |  | 
 | #[cfg(any(cfail1,cfail4))] | 
 | impl<T> AddLifetimeBoundToImplParameter for T { | 
 |     fn id(self) -> Self { self } | 
 | } | 
 |  | 
 | #[cfg(not(any(cfail1,cfail4)))] | 
 | #[rustc_clean(except="opt_hir_owner_nodes", cfg="cfail2")] | 
 | #[rustc_clean(cfg="cfail3")] | 
 | #[rustc_clean(except="opt_hir_owner_nodes", cfg="cfail5")] | 
 | #[rustc_clean(cfg="cfail6")] | 
 | impl<T: 'static> AddLifetimeBoundToImplParameter for T { | 
 |     #[rustc_clean(cfg="cfail2")] | 
 |     #[rustc_clean(cfg="cfail3")] | 
 |     #[rustc_clean(cfg="cfail5")] | 
 |     #[rustc_clean(cfg="cfail6")] | 
 |     fn id(self) -> Self { self } | 
 | } | 
 |  | 
 |  | 
 |  | 
 | // Add Trait Bound to Impl Parameter ------------------------------------------- | 
 | trait AddTraitBoundToImplParameter { | 
 |     fn id(self) -> Self; | 
 | } | 
 |  | 
 | #[cfg(any(cfail1,cfail4))] | 
 | impl<T> AddTraitBoundToImplParameter for T { | 
 |     fn id(self) -> Self { self } | 
 | } | 
 |  | 
 | #[cfg(not(any(cfail1,cfail4)))] | 
 | #[rustc_clean(except="opt_hir_owner_nodes", cfg="cfail2")] | 
 | #[rustc_clean(cfg="cfail3")] | 
 | #[rustc_clean(except="opt_hir_owner_nodes", cfg="cfail5")] | 
 | #[rustc_clean(cfg="cfail6")] | 
 | impl<T: Clone> AddTraitBoundToImplParameter for T { | 
 |     #[rustc_clean(cfg="cfail2")] | 
 |     #[rustc_clean(cfg="cfail3")] | 
 |     #[rustc_clean(cfg="cfail5")] | 
 |     #[rustc_clean(cfg="cfail6")] | 
 |     fn id(self) -> Self { self } | 
 | } | 
 |  | 
 |  | 
 |  | 
 | // Add #[no_mangle] to Method -------------------------------------------------- | 
 | trait AddNoMangleToMethod { | 
 |     fn add_no_mangle_to_method(&self) { } | 
 | } | 
 |  | 
 | #[cfg(any(cfail1,cfail4))] | 
 | impl AddNoMangleToMethod for Foo { | 
 |     // ------------------------- | 
 |     // ------------------------- | 
 |     // ------------------------- | 
 |     // ------------------------- | 
 |     // --------- | 
 |     fn add_no_mangle_to_method(&self) { } | 
 | } | 
 |  | 
 | #[cfg(not(any(cfail1,cfail4)))] | 
 | #[rustc_clean(cfg="cfail2")] | 
 | #[rustc_clean(cfg="cfail3")] | 
 | #[rustc_clean(cfg="cfail5")] | 
 | #[rustc_clean(cfg="cfail6")] | 
 | impl AddNoMangleToMethod for Foo { | 
 |     #[rustc_clean(cfg="cfail2")] | 
 |     #[rustc_clean(cfg="cfail3")] | 
 |     #[rustc_clean(cfg="cfail5")] | 
 |     #[rustc_clean(cfg="cfail6")] | 
 |     #[no_mangle] | 
 |     fn add_no_mangle_to_method(&self) { } | 
 | } | 
 |  | 
 |  | 
 | // Make Method #[inline] ------------------------------------------------------- | 
 | trait MakeMethodInline { | 
 |     fn make_method_inline(&self) -> u8 { 0 } | 
 | } | 
 |  | 
 | #[cfg(any(cfail1,cfail4))] | 
 | impl MakeMethodInline for Foo { | 
 |     // ------------------------- | 
 |     // ------------------------- | 
 |     // ------------------------- | 
 |     // ------------------------- | 
 |     // ------ | 
 |     fn make_method_inline(&self) -> u8 { 0 } | 
 | } | 
 |  | 
 | #[cfg(not(any(cfail1,cfail4)))] | 
 | #[rustc_clean(cfg="cfail2")] | 
 | #[rustc_clean(cfg="cfail3")] | 
 | #[rustc_clean(cfg="cfail5")] | 
 | #[rustc_clean(cfg="cfail6")] | 
 | impl MakeMethodInline for Foo { | 
 |     #[rustc_clean(cfg="cfail2")] | 
 |     #[rustc_clean(cfg="cfail3")] | 
 |     #[rustc_clean(cfg="cfail5")] | 
 |     #[rustc_clean(cfg="cfail6")] | 
 |     #[inline] | 
 |     fn make_method_inline(&self) -> u8 { 0 } | 
 | } |