Add a test checking the output of builtin derives.
This commit is contained in:
parent
788ddedb0d
commit
ea74997c41
2 changed files with 1163 additions and 0 deletions
63
src/test/ui/deriving/deriving-all-codegen.rs
Normal file
63
src/test/ui/deriving/deriving-all-codegen.rs
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
// check-pass
|
||||
// compile-flags: -Zunpretty=expanded
|
||||
// edition:2021
|
||||
//
|
||||
// This test checks the code generated for all[*] the builtin derivable traits
|
||||
// on a variety of structs and enums. It protects against accidental changes to
|
||||
// the generated code, and makes deliberate changes to the generated code
|
||||
// easier to review.
|
||||
//
|
||||
// [*] It excludes `Copy` in some cases, because that changes the code
|
||||
// generated for `Clone`.
|
||||
//
|
||||
// [*] It excludes `RustcEncodable` and `RustDecodable`, which are obsolete and
|
||||
// also require the `rustc_serialize` crate.
|
||||
|
||||
#![crate_type = "lib"]
|
||||
#![allow(dead_code)]
|
||||
#![allow(deprecated)]
|
||||
|
||||
// Empty struct.
|
||||
#[derive(Clone, Copy, Debug, Default, Hash, PartialEq, Eq, PartialOrd, Ord)]
|
||||
struct Empty;
|
||||
|
||||
// A basic struct.
|
||||
#[derive(Clone, Copy, Debug, Default, Hash, PartialEq, Eq, PartialOrd, Ord)]
|
||||
struct Point {
|
||||
x: u32,
|
||||
y: u32,
|
||||
}
|
||||
|
||||
// A long struct.
|
||||
#[derive(Clone, Debug, Default, Hash, PartialEq, Eq, PartialOrd, Ord)]
|
||||
struct Big {
|
||||
b1: u32, b2: u32, b3: u32, b4: u32, b5: u32, b6: u32, b7: u32, b8:u32,
|
||||
}
|
||||
|
||||
// A C-like, fieldless enum.
|
||||
#[derive(Clone, Copy, Debug, Default, Hash, PartialEq, Eq, PartialOrd, Ord)]
|
||||
enum Fieldless {
|
||||
#[default]
|
||||
A,
|
||||
B,
|
||||
C,
|
||||
}
|
||||
|
||||
// An enum with multiple fieldless and fielded variants.
|
||||
#[derive(Clone, Copy, Debug, Default, Hash, PartialEq, Eq, PartialOrd, Ord)]
|
||||
enum Mixed {
|
||||
#[default]
|
||||
P,
|
||||
Q,
|
||||
R(u32),
|
||||
S { d1: u32, d2: u32 },
|
||||
}
|
||||
|
||||
// An enum with no fieldless variants. Note that `Default` cannot be derived
|
||||
// for this enum.
|
||||
#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
|
||||
enum Fielded {
|
||||
X(u32),
|
||||
Y(bool),
|
||||
Z(Option<i32>),
|
||||
}
|
||||
1100
src/test/ui/deriving/deriving-all-codegen.stdout
Normal file
1100
src/test/ui/deriving/deriving-all-codegen.stdout
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue