| // This test case tests the incremental compilation hash (ICH) implementation | |
| // for enum definitions. | |
| // 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. | |
| // We also test the ICH for enum definitions exported in metadata. Same as | |
| // above, we want to make sure that the change between rev1 and rev2 also | |
| // results in a change of the ICH for the enum's metadata, and that it stays | |
| // the same between rev2 and rev3. | |
| //@ 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(stmt_expr_attributes)] | |
| #![crate_type="rlib"] | |
| // Change enum visibility ----------------------------------------------------- | |
| #[cfg(any(cfail1,cfail4))] | |
| enum EnumVisibility { A } | |
| #[cfg(not(any(cfail1,cfail4)))] | |
| #[rustc_clean(cfg="cfail2")] | |
| #[rustc_clean(cfg="cfail3")] | |
| #[rustc_clean(cfg="cfail5", except="opt_hir_owner_nodes")] | |
| #[rustc_clean(cfg="cfail6")] | |
| pub enum EnumVisibility { A } | |
| // Change name of a c-style variant ------------------------------------------- | |
| #[cfg(any(cfail1,cfail4))] | |
| enum EnumChangeNameCStyleVariant { | |
| Variant1, | |
| Variant2, | |
| } | |
| #[cfg(not(any(cfail1,cfail4)))] | |
| #[rustc_clean(cfg="cfail2", except="opt_hir_owner_nodes,type_of")] | |
| #[rustc_clean(cfg="cfail3")] | |
| #[rustc_clean(cfg="cfail5", except="opt_hir_owner_nodes,type_of")] | |
| #[rustc_clean(cfg="cfail6")] | |
| enum EnumChangeNameCStyleVariant { | |
| Variant1, | |
| Variant2Changed, | |
| } | |
| // Change name of a tuple-style variant --------------------------------------- | |
| #[cfg(any(cfail1,cfail4))] | |
| enum EnumChangeNameTupleStyleVariant { | |
| Variant1, | |
| Variant2(u32, f32), | |
| } | |
| #[cfg(not(any(cfail1,cfail4)))] | |
| #[rustc_clean(cfg="cfail2", except="opt_hir_owner_nodes,type_of")] | |
| #[rustc_clean(cfg="cfail3")] | |
| #[rustc_clean(cfg="cfail5", except="opt_hir_owner_nodes,type_of")] | |
| #[rustc_clean(cfg="cfail6")] | |
| enum EnumChangeNameTupleStyleVariant { | |
| Variant1, | |
| Variant2Changed(u32, f32), | |
| } | |
| // Change name of a struct-style variant -------------------------------------- | |
| #[cfg(any(cfail1,cfail4))] | |
| enum EnumChangeNameStructStyleVariant { | |
| Variant1, | |
| Variant2 { a: u32, b: f32 }, | |
| } | |
| #[cfg(not(any(cfail1,cfail4)))] | |
| #[rustc_clean(cfg="cfail2", except="opt_hir_owner_nodes,type_of")] | |
| #[rustc_clean(cfg="cfail3")] | |
| #[rustc_clean(cfg="cfail5", except="opt_hir_owner_nodes,type_of")] | |
| #[rustc_clean(cfg="cfail6")] | |
| enum EnumChangeNameStructStyleVariant { | |
| Variant1, | |
| Variant2Changed { a: u32, b: f32 }, | |
| } | |
| // Change the value of a c-style variant -------------------------------------- | |
| #[cfg(any(cfail1,cfail4))] | |
| enum EnumChangeValueCStyleVariant0 { | |
| Variant1, | |
| Variant2 = 11, | |
| } | |
| #[cfg(not(any(cfail1,cfail4)))] | |
| #[rustc_clean(cfg="cfail2", except="opt_hir_owner_nodes")] | |
| #[rustc_clean(cfg="cfail3")] | |
| #[rustc_clean(cfg="cfail5", except="opt_hir_owner_nodes")] | |
| #[rustc_clean(cfg="cfail6")] | |
| enum EnumChangeValueCStyleVariant0 { | |
| Variant1, | |
| Variant2 = 22, | |
| } | |
| #[cfg(any(cfail1,cfail4))] | |
| enum EnumChangeValueCStyleVariant1 { | |
| Variant1, | |
| Variant2, | |
| } | |
| #[cfg(not(any(cfail1,cfail4)))] | |
| #[rustc_clean(cfg="cfail2", except="opt_hir_owner_nodes,type_of")] | |
| #[rustc_clean(cfg="cfail3")] | |
| #[rustc_clean(cfg="cfail5", except="opt_hir_owner_nodes,type_of")] | |
| #[rustc_clean(cfg="cfail6")] | |
| enum EnumChangeValueCStyleVariant1 { | |
| Variant1, | |
| Variant2 = 11, | |
| } | |
| // Add a c-style variant ------------------------------------------------------ | |
| #[cfg(any(cfail1,cfail4))] | |
| enum EnumAddCStyleVariant { | |
| Variant1, | |
| } | |
| #[cfg(not(any(cfail1,cfail4)))] | |
| #[rustc_clean(cfg="cfail2", except="opt_hir_owner_nodes,type_of")] | |
| #[rustc_clean(cfg="cfail3")] | |
| #[rustc_clean(cfg="cfail5", except="opt_hir_owner_nodes,type_of")] | |
| #[rustc_clean(cfg="cfail6")] | |
| enum EnumAddCStyleVariant { | |
| Variant1, | |
| Variant2, | |
| } | |
| // Remove a c-style variant --------------------------------------------------- | |
| #[cfg(any(cfail1,cfail4))] | |
| enum EnumRemoveCStyleVariant { | |
| Variant1, | |
| Variant2, | |
| } | |
| #[cfg(not(any(cfail1,cfail4)))] | |
| #[rustc_clean(cfg="cfail2", except="opt_hir_owner_nodes,type_of")] | |
| #[rustc_clean(cfg="cfail3")] | |
| #[rustc_clean(cfg="cfail5", except="opt_hir_owner_nodes,type_of")] | |
| #[rustc_clean(cfg="cfail6")] | |
| enum EnumRemoveCStyleVariant { | |
| Variant1, | |
| } | |
| // Add a tuple-style variant -------------------------------------------------- | |
| #[cfg(any(cfail1,cfail4))] | |
| enum EnumAddTupleStyleVariant { | |
| Variant1, | |
| } | |
| #[cfg(not(any(cfail1,cfail4)))] | |
| #[rustc_clean(cfg="cfail2", except="opt_hir_owner_nodes,type_of")] | |
| #[rustc_clean(cfg="cfail3")] | |
| #[rustc_clean(cfg="cfail5", except="opt_hir_owner_nodes,type_of")] | |
| #[rustc_clean(cfg="cfail6")] | |
| enum EnumAddTupleStyleVariant { | |
| Variant1, | |
| Variant2(u32, f32), | |
| } | |
| // Remove a tuple-style variant ----------------------------------------------- | |
| #[cfg(any(cfail1,cfail4))] | |
| enum EnumRemoveTupleStyleVariant { | |
| Variant1, | |
| Variant2(u32, f32), | |
| } | |
| #[cfg(not(any(cfail1,cfail4)))] | |
| #[rustc_clean(cfg="cfail2", except="opt_hir_owner_nodes,type_of")] | |
| #[rustc_clean(cfg="cfail3")] | |
| #[rustc_clean(cfg="cfail5", except="opt_hir_owner_nodes,type_of")] | |
| #[rustc_clean(cfg="cfail6")] | |
| enum EnumRemoveTupleStyleVariant { | |
| Variant1, | |
| } | |
| // Add a struct-style variant ------------------------------------------------- | |
| #[cfg(any(cfail1,cfail4))] | |
| enum EnumAddStructStyleVariant { | |
| Variant1, | |
| } | |
| #[cfg(not(any(cfail1,cfail4)))] | |
| #[rustc_clean(cfg="cfail2", except="opt_hir_owner_nodes,type_of")] | |
| #[rustc_clean(cfg="cfail3")] | |
| #[rustc_clean(cfg="cfail5", except="opt_hir_owner_nodes,type_of")] | |
| #[rustc_clean(cfg="cfail6")] | |
| enum EnumAddStructStyleVariant { | |
| Variant1, | |
| Variant2 { a: u32, b: f32 }, | |
| } | |
| // Remove a struct-style variant ---------------------------------------------- | |
| #[cfg(any(cfail1,cfail4))] | |
| enum EnumRemoveStructStyleVariant { | |
| Variant1, | |
| Variant2 { a: u32, b: f32 }, | |
| } | |
| #[cfg(not(any(cfail1,cfail4)))] | |
| #[rustc_clean(cfg="cfail2", except="opt_hir_owner_nodes,type_of")] | |
| #[rustc_clean(cfg="cfail3")] | |
| #[rustc_clean(cfg="cfail5", except="opt_hir_owner_nodes,type_of")] | |
| #[rustc_clean(cfg="cfail6")] | |
| enum EnumRemoveStructStyleVariant { | |
| Variant1, | |
| } | |
| // Change the type of a field in a tuple-style variant ------------------------ | |
| #[cfg(any(cfail1,cfail4))] | |
| enum EnumChangeFieldTypeTupleStyleVariant { | |
| Variant1(u32, u32), | |
| } | |
| #[cfg(not(any(cfail1,cfail4)))] | |
| #[rustc_clean(cfg="cfail2", except="opt_hir_owner_nodes")] | |
| #[rustc_clean(cfg="cfail3")] | |
| #[rustc_clean(cfg="cfail5", except="opt_hir_owner_nodes")] | |
| #[rustc_clean(cfg="cfail6")] | |
| enum EnumChangeFieldTypeTupleStyleVariant { | |
| Variant1(u32, | |
| u64), | |
| } | |
| // Change the type of a field in a struct-style variant ----------------------- | |
| #[cfg(any(cfail1,cfail4))] | |
| enum EnumChangeFieldTypeStructStyleVariant { | |
| Variant1, | |
| Variant2 { a: u32, b: u32 }, | |
| } | |
| #[cfg(not(any(cfail1,cfail4)))] | |
| #[rustc_clean(cfg="cfail2", except="opt_hir_owner_nodes")] | |
| #[rustc_clean(cfg="cfail3")] | |
| #[rustc_clean(cfg="cfail5", except="opt_hir_owner_nodes")] | |
| #[rustc_clean(cfg="cfail6")] | |
| enum EnumChangeFieldTypeStructStyleVariant { | |
| Variant1, | |
| Variant2 { | |
| a: u32, | |
| b: u64 | |
| }, | |
| } | |
| // Change the name of a field in a struct-style variant ----------------------- | |
| #[cfg(any(cfail1,cfail4))] | |
| enum EnumChangeFieldNameStructStyleVariant { | |
| Variant1 { a: u32, b: u32 }, | |
| } | |
| #[cfg(not(any(cfail1,cfail4)))] | |
| #[rustc_clean(cfg="cfail2", except="opt_hir_owner_nodes,type_of")] | |
| #[rustc_clean(cfg="cfail3")] | |
| #[rustc_clean(cfg="cfail5", except="opt_hir_owner_nodes,type_of")] | |
| #[rustc_clean(cfg="cfail6")] | |
| enum EnumChangeFieldNameStructStyleVariant { | |
| Variant1 { a: u32, c: u32 }, | |
| } | |
| // Change order of fields in a tuple-style variant ---------------------------- | |
| #[cfg(any(cfail1,cfail4))] | |
| enum EnumChangeOrderTupleStyleVariant { | |
| Variant1(u32, u64), | |
| } | |
| #[cfg(not(any(cfail1,cfail4)))] | |
| #[rustc_clean(cfg="cfail2", except="opt_hir_owner_nodes")] | |
| #[rustc_clean(cfg="cfail3")] | |
| #[rustc_clean(cfg="cfail5", except="opt_hir_owner_nodes")] | |
| #[rustc_clean(cfg="cfail6")] | |
| enum EnumChangeOrderTupleStyleVariant { | |
| Variant1( | |
| u64, | |
| u32), | |
| } | |
| // Change order of fields in a struct-style variant --------------------------- | |
| #[cfg(any(cfail1,cfail4))] | |
| enum EnumChangeFieldOrderStructStyleVariant { | |
| Variant1 { a: u32, b: f32 }, | |
| } | |
| #[cfg(not(any(cfail1,cfail4)))] | |
| #[rustc_clean(cfg="cfail2", except="opt_hir_owner_nodes,type_of")] | |
| #[rustc_clean(cfg="cfail3")] | |
| #[rustc_clean(cfg="cfail5", except="opt_hir_owner_nodes,type_of")] | |
| #[rustc_clean(cfg="cfail6")] | |
| enum EnumChangeFieldOrderStructStyleVariant { | |
| Variant1 { b: f32, a: u32 }, | |
| } | |
| // Add a field to a tuple-style variant --------------------------------------- | |
| #[cfg(any(cfail1,cfail4))] | |
| enum EnumAddFieldTupleStyleVariant { | |
| Variant1(u32, u32), | |
| } | |
| #[cfg(not(any(cfail1,cfail4)))] | |
| #[rustc_clean(cfg="cfail2", except="opt_hir_owner_nodes,type_of")] | |
| #[rustc_clean(cfg="cfail3")] | |
| #[rustc_clean(cfg="cfail5", except="opt_hir_owner_nodes,type_of")] | |
| #[rustc_clean(cfg="cfail6")] | |
| enum EnumAddFieldTupleStyleVariant { | |
| Variant1(u32, u32, u32), | |
| } | |
| // Add a field to a struct-style variant -------------------------------------- | |
| #[cfg(any(cfail1,cfail4))] | |
| enum EnumAddFieldStructStyleVariant { | |
| Variant1 { a: u32, b: u32 }, | |
| } | |
| #[cfg(not(any(cfail1,cfail4)))] | |
| #[rustc_clean(cfg="cfail2", except="opt_hir_owner_nodes,type_of")] | |
| #[rustc_clean(cfg="cfail3")] | |
| #[rustc_clean(cfg="cfail5", except="opt_hir_owner_nodes,type_of")] | |
| #[rustc_clean(cfg="cfail6")] | |
| enum EnumAddFieldStructStyleVariant { | |
| Variant1 { a: u32, b: u32, c: u32 }, | |
| } | |
| // Add #[must_use] to the enum ------------------------------------------------ | |
| #[cfg(any(cfail1,cfail4))] | |
| enum EnumAddMustUse { | |
| Variant1, | |
| Variant2, | |
| } | |
| #[cfg(not(any(cfail1,cfail4)))] | |
| #[rustc_clean(cfg="cfail2")] | |
| #[rustc_clean(cfg="cfail3")] | |
| #[rustc_clean(cfg="cfail5")] | |
| #[rustc_clean(cfg="cfail6")] | |
| #[must_use] | |
| enum EnumAddMustUse { | |
| Variant1, | |
| Variant2, | |
| } | |
| // Add #[repr(C)] to the enum ------------------------------------------------- | |
| #[cfg(any(cfail1,cfail4))] | |
| enum EnumAddReprC { | |
| Variant1, | |
| Variant2, | |
| } | |
| #[cfg(not(any(cfail1,cfail4)))] | |
| #[rustc_clean(cfg="cfail2", except="type_of")] | |
| #[rustc_clean(cfg="cfail3")] | |
| #[rustc_clean(cfg="cfail5", except="type_of")] | |
| #[rustc_clean(cfg="cfail6")] | |
| #[repr(C)] | |
| enum EnumAddReprC { | |
| Variant1, | |
| Variant2, | |
| } | |
| // Change the name of a type parameter ---------------------------------------- | |
| #[cfg(any(cfail1,cfail4))] | |
| enum EnumChangeNameOfTypeParameter<S> { | |
| Variant1(S), | |
| } | |
| #[cfg(not(any(cfail1,cfail4)))] | |
| #[rustc_clean(cfg="cfail2", except="opt_hir_owner_nodes,generics_of,predicates_of,type_of")] | |
| #[rustc_clean(cfg="cfail3")] | |
| #[rustc_clean(cfg="cfail5", except="opt_hir_owner_nodes,generics_of,predicates_of,type_of")] | |
| #[rustc_clean(cfg="cfail6")] | |
| enum EnumChangeNameOfTypeParameter<T> { | |
| Variant1(T), | |
| } | |
| // Add a type parameter ------------------------------------------------------ | |
| #[cfg(any(cfail1,cfail4))] | |
| enum EnumAddTypeParameter<S> { | |
| Variant1(S), | |
| Variant2(S), | |
| } | |
| #[cfg(not(any(cfail1,cfail4)))] | |
| #[rustc_clean(cfg="cfail2", except="opt_hir_owner_nodes,generics_of,predicates_of,type_of")] | |
| #[rustc_clean(cfg="cfail3")] | |
| #[rustc_clean(cfg="cfail5", except="opt_hir_owner_nodes,generics_of,predicates_of,type_of")] | |
| #[rustc_clean(cfg="cfail6")] | |
| enum EnumAddTypeParameter<S, T> { | |
| Variant1(S), | |
| Variant2(T), | |
| } | |
| // Change the name of a lifetime parameter ------------------------------------ | |
| #[cfg(any(cfail1,cfail4))] | |
| enum EnumChangeNameOfLifetimeParameter<'a> { | |
| Variant1(&'a u32), | |
| } | |
| #[cfg(not(any(cfail1,cfail4)))] | |
| #[rustc_clean(cfg="cfail2", except="opt_hir_owner_nodes,generics_of,type_of")] | |
| #[rustc_clean(cfg="cfail3")] | |
| #[rustc_clean(cfg="cfail5", except="opt_hir_owner_nodes,generics_of,type_of")] | |
| #[rustc_clean(cfg="cfail6")] | |
| enum EnumChangeNameOfLifetimeParameter<'b> { | |
| Variant1(&'b u32), | |
| } | |
| // Add a lifetime parameter --------------------------------------------------- | |
| #[cfg(any(cfail1,cfail4))] | |
| enum EnumAddLifetimeParameter<'a> { | |
| Variant1(&'a u32), | |
| Variant2(&'a u32), | |
| } | |
| #[cfg(not(any(cfail1,cfail4)))] | |
| #[rustc_clean(cfg="cfail2", except="opt_hir_owner_nodes,generics_of,type_of")] | |
| #[rustc_clean(cfg="cfail3")] | |
| #[rustc_clean(cfg="cfail5", except="opt_hir_owner_nodes,generics_of,type_of")] | |
| #[rustc_clean(cfg="cfail6")] | |
| enum EnumAddLifetimeParameter<'a, 'b> { | |
| Variant1(&'a u32), | |
| Variant2(&'b u32), | |
| } | |
| // Add a lifetime bound to a lifetime parameter ------------------------------- | |
| #[cfg(any(cfail1,cfail4))] | |
| enum EnumAddLifetimeParameterBound<'a, 'b> { | |
| Variant1(&'a u32), | |
| Variant2(&'b u32), | |
| } | |
| #[cfg(not(any(cfail1,cfail4)))] | |
| #[rustc_clean(cfg="cfail2", except="opt_hir_owner_nodes,predicates_of")] | |
| #[rustc_clean(cfg="cfail3")] | |
| #[rustc_clean(cfg="cfail5", except="opt_hir_owner_nodes,predicates_of")] | |
| #[rustc_clean(cfg="cfail6")] | |
| enum EnumAddLifetimeParameterBound<'a, 'b: 'a> { | |
| Variant1(&'a u32), | |
| Variant2(&'b u32), | |
| } | |
| // Add a lifetime bound to a type parameter ----------------------------------- | |
| #[cfg(any(cfail1,cfail4))] | |
| enum EnumAddLifetimeBoundToParameter<'a, T> { | |
| Variant1(T), | |
| Variant2(&'a u32), | |
| } | |
| #[cfg(not(any(cfail1,cfail4)))] | |
| #[rustc_clean(cfg="cfail2", except="opt_hir_owner_nodes,predicates_of")] | |
| #[rustc_clean(cfg="cfail3")] | |
| #[rustc_clean(cfg="cfail5", except="opt_hir_owner_nodes,predicates_of")] | |
| #[rustc_clean(cfg="cfail6")] | |
| enum EnumAddLifetimeBoundToParameter<'a, T: 'a> { | |
| Variant1(T), | |
| Variant2(&'a u32), | |
| } | |
| // Add a trait bound to a type parameter -------------------------------------- | |
| #[cfg(any(cfail1,cfail4))] | |
| enum EnumAddTraitBound<S> { | |
| Variant1(S), | |
| } | |
| #[cfg(not(any(cfail1,cfail4)))] | |
| #[rustc_clean(cfg="cfail2", except="opt_hir_owner_nodes,generics_of,predicates_of,type_of")] | |
| #[rustc_clean(cfg="cfail3")] | |
| #[rustc_clean(cfg="cfail5", except="opt_hir_owner_nodes,generics_of,predicates_of,type_of")] | |
| #[rustc_clean(cfg="cfail6")] | |
| enum EnumAddTraitBound<T: Sync> { | |
| Variant1(T), | |
| } | |
| // Add a lifetime bound to a lifetime parameter in where clause --------------- | |
| #[cfg(any(cfail1,cfail4))] | |
| enum EnumAddLifetimeParameterBoundWhere<'a, 'b> { | |
| Variant1(&'a u32), | |
| Variant2(&'b u32), | |
| } | |
| #[cfg(not(any(cfail1,cfail4)))] | |
| #[rustc_clean(cfg="cfail2", except="opt_hir_owner_nodes,predicates_of")] | |
| #[rustc_clean(cfg="cfail3")] | |
| #[rustc_clean(cfg="cfail5", except="opt_hir_owner_nodes,predicates_of")] | |
| #[rustc_clean(cfg="cfail6")] | |
| enum EnumAddLifetimeParameterBoundWhere<'a, 'b> where 'b: 'a { | |
| Variant1(&'a u32), | |
| Variant2(&'b u32), | |
| } | |
| // Add a lifetime bound to a type parameter in where clause ------------------- | |
| #[cfg(any(cfail1,cfail4))] | |
| enum EnumAddLifetimeBoundToParameterWhere<'a, T> { | |
| Variant1(T), | |
| Variant2(&'a u32), | |
| } | |
| #[cfg(not(any(cfail1,cfail4)))] | |
| #[rustc_clean(cfg="cfail2", except="opt_hir_owner_nodes,predicates_of")] | |
| #[rustc_clean(cfg="cfail3")] | |
| #[rustc_clean(cfg="cfail5", except="opt_hir_owner_nodes,predicates_of")] | |
| #[rustc_clean(cfg="cfail6")] | |
| enum EnumAddLifetimeBoundToParameterWhere<'a, T> where T: 'a { | |
| Variant1(T), | |
| Variant2(&'a u32), | |
| } | |
| // Add a trait bound to a type parameter in where clause ---------------------- | |
| #[cfg(any(cfail1,cfail4))] | |
| enum EnumAddTraitBoundWhere<S> { | |
| Variant1(S), | |
| } | |
| #[cfg(not(any(cfail1,cfail4)))] | |
| #[rustc_clean(cfg="cfail2", except="opt_hir_owner_nodes,generics_of,predicates_of,type_of")] | |
| #[rustc_clean(cfg="cfail3")] | |
| #[rustc_clean(cfg="cfail5", except="opt_hir_owner_nodes,generics_of,predicates_of,type_of")] | |
| #[rustc_clean(cfg="cfail6")] | |
| enum EnumAddTraitBoundWhere<T> where T: Sync { | |
| Variant1(T), | |
| } | |
| // In an enum with two variants, swap usage of type parameters ---------------- | |
| #[cfg(any(cfail1,cfail4))] | |
| enum EnumSwapUsageTypeParameters<A, B> { | |
| Variant1 { a: A }, | |
| Variant2 { a: B }, | |
| } | |
| #[cfg(not(any(cfail1,cfail4)))] | |
| #[rustc_clean(cfg="cfail2", except="opt_hir_owner_nodes")] | |
| #[rustc_clean(cfg="cfail3")] | |
| #[rustc_clean(cfg="cfail5", except="opt_hir_owner_nodes")] | |
| #[rustc_clean(cfg="cfail6")] | |
| enum EnumSwapUsageTypeParameters<A, B> { | |
| Variant1 { | |
| a: B | |
| }, | |
| Variant2 { | |
| a: A | |
| }, | |
| } | |
| // In an enum with two variants, swap usage of lifetime parameters ------------ | |
| #[cfg(any(cfail1,cfail4))] | |
| enum EnumSwapUsageLifetimeParameters<'a, 'b> { | |
| Variant1 { a: &'a u32 }, | |
| Variant2 { b: &'b u32 }, | |
| } | |
| #[cfg(not(any(cfail1,cfail4)))] | |
| #[rustc_clean(cfg="cfail2", except="opt_hir_owner_nodes")] | |
| #[rustc_clean(cfg="cfail3")] | |
| #[rustc_clean(cfg="cfail5", except="opt_hir_owner_nodes")] | |
| #[rustc_clean(cfg="cfail6")] | |
| enum EnumSwapUsageLifetimeParameters<'a, 'b> { | |
| Variant1 { | |
| a: &'b u32 | |
| }, | |
| Variant2 { | |
| b: &'a u32 | |
| }, | |
| } | |
| struct ReferencedType1; | |
| struct ReferencedType2; | |
| // Change field type in tuple-style variant indirectly by modifying a use statement | |
| mod change_field_type_indirectly_tuple_style { | |
| #[cfg(any(cfail1,cfail4))] | |
| use super::ReferencedType1 as FieldType; | |
| #[cfg(not(any(cfail1,cfail4)))] | |
| use super::ReferencedType2 as FieldType; | |
| #[rustc_clean(cfg="cfail2", except="opt_hir_owner_nodes")] | |
| #[rustc_clean(cfg="cfail3")] | |
| #[rustc_clean(cfg="cfail5", except="opt_hir_owner_nodes")] | |
| #[rustc_clean(cfg="cfail6")] | |
| enum TupleStyle { | |
| Variant1( | |
| FieldType | |
| ) | |
| } | |
| } | |
| // Change field type in record-style variant indirectly by modifying a use statement | |
| mod change_field_type_indirectly_struct_style { | |
| #[cfg(any(cfail1,cfail4))] | |
| use super::ReferencedType1 as FieldType; | |
| #[cfg(not(any(cfail1,cfail4)))] | |
| use super::ReferencedType2 as FieldType; | |
| #[rustc_clean(cfg="cfail2", except="opt_hir_owner_nodes")] | |
| #[rustc_clean(cfg="cfail3")] | |
| #[rustc_clean(cfg="cfail5", except="opt_hir_owner_nodes")] | |
| #[rustc_clean(cfg="cfail6")] | |
| enum StructStyle { | |
| Variant1 { | |
| a: FieldType | |
| } | |
| } | |
| } | |
| trait ReferencedTrait1 {} | |
| trait ReferencedTrait2 {} | |
| // Change trait bound of type parameter indirectly by modifying a use statement | |
| mod change_trait_bound_indirectly { | |
| #[cfg(any(cfail1,cfail4))] | |
| use super::ReferencedTrait1 as Trait; | |
| #[cfg(not(any(cfail1,cfail4)))] | |
| use super::ReferencedTrait2 as Trait; | |
| #[rustc_clean(cfg="cfail2", except="opt_hir_owner_nodes,predicates_of")] | |
| #[rustc_clean(cfg="cfail3")] | |
| #[rustc_clean(cfg="cfail5", except="opt_hir_owner_nodes,predicates_of")] | |
| #[rustc_clean(cfg="cfail6")] | |
| enum Enum<T: Trait> { | |
| Variant1(T) | |
| } | |
| } | |
| // Change trait bound of type parameter in where clause indirectly by modifying a use statement | |
| mod change_trait_bound_indirectly_where { | |
| #[cfg(any(cfail1,cfail4))] | |
| use super::ReferencedTrait1 as Trait; | |
| #[cfg(not(any(cfail1,cfail4)))] | |
| use super::ReferencedTrait2 as Trait; | |
| #[rustc_clean(cfg="cfail2", except="opt_hir_owner_nodes,predicates_of")] | |
| #[rustc_clean(cfg="cfail3")] | |
| #[rustc_clean(cfg="cfail5", except="opt_hir_owner_nodes,predicates_of")] | |
| #[rustc_clean(cfg="cfail6")] | |
| enum Enum<T> where T: Trait { | |
| Variant1(T) | |
| } | |
| } |