Skip to content

Commit 77b0d07

Browse files
committed
Update deriving-all-codegen.rs test
1 parent 3b095e2 commit 77b0d07

File tree

2 files changed

+171
-4
lines changed

2 files changed

+171
-4
lines changed

tests/ui/deriving/deriving-all-codegen.rs

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#![crate_type = "lib"]
1717
#![allow(dead_code)]
1818
#![allow(deprecated)]
19+
#![feature(derive_from)]
1920

2021
// Empty struct.
2122
#[derive(Clone, Copy, Debug, Default, Hash, PartialEq, Eq, PartialOrd, Ord)]
@@ -38,11 +39,26 @@ struct PackedPoint {
3839
y: u32,
3940
}
4041

42+
#[derive(Clone, Copy, Debug, Default, From, Hash, PartialEq, Eq, PartialOrd, Ord)]
43+
struct TupleSingleField(u32);
44+
45+
#[derive(Clone, Copy, Debug, Default, From, Hash, PartialEq, Eq, PartialOrd, Ord)]
46+
struct SingleField {
47+
foo: bool,
48+
}
49+
4150
// A large struct. Note: because this derives `Copy`, it gets the simple
4251
// `clone` implemention that just does `*self`.
4352
#[derive(Clone, Copy, Debug, Default, Hash, PartialEq, Eq, PartialOrd, Ord)]
4453
struct Big {
45-
b1: u32, b2: u32, b3: u32, b4: u32, b5: u32, b6: u32, b7: u32, b8: u32,
54+
b1: u32,
55+
b2: u32,
56+
b3: u32,
57+
b4: u32,
58+
b5: u32,
59+
b6: u32,
60+
b7: u32,
61+
b8: u32,
4662
}
4763

4864
// It is more efficient to compare scalar types before non-scalar types.
@@ -86,7 +102,7 @@ struct PackedManualCopy(u32);
86102
impl Copy for PackedManualCopy {}
87103

88104
// A struct with an unsized field. Some derives are not usable in this case.
89-
#[derive(Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
105+
#[derive(Debug, From, Hash, PartialEq, Eq, PartialOrd, Ord)]
90106
struct Unsized([u32]);
91107

92108
trait Trait {
@@ -117,7 +133,7 @@ enum Enum0 {}
117133
// A single-variant enum.
118134
#[derive(Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
119135
enum Enum1 {
120-
Single { x: u32 }
136+
Single { x: u32 },
121137
}
122138

123139
// A C-like, fieldless enum with a single variant.
@@ -143,7 +159,10 @@ enum Mixed {
143159
P,
144160
Q,
145161
R(u32),
146-
S { d1: Option<u32>, d2: Option<i32> },
162+
S {
163+
d1: Option<u32>,
164+
d2: Option<i32>,
165+
},
147166
}
148167

149168
// When comparing enum variant it is more efficient to compare scalar types before non-scalar types.

tests/ui/deriving/deriving-all-codegen.stdout

Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#![crate_type = "lib"]
1818
#![allow(dead_code)]
1919
#![allow(deprecated)]
20+
#![feature(derive_from)]
2021
#[macro_use]
2122
extern crate std;
2223
#[prelude_import]
@@ -249,6 +250,148 @@ impl ::core::cmp::Ord for PackedPoint {
249250
}
250251
}
251252

253+
struct TupleSingleField(u32);
254+
#[automatically_derived]
255+
impl ::core::clone::Clone for TupleSingleField {
256+
#[inline]
257+
fn clone(&self) -> TupleSingleField {
258+
let _: ::core::clone::AssertParamIsClone<u32>;
259+
*self
260+
}
261+
}
262+
#[automatically_derived]
263+
impl ::core::marker::Copy for TupleSingleField { }
264+
#[automatically_derived]
265+
impl ::core::fmt::Debug for TupleSingleField {
266+
#[inline]
267+
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
268+
::core::fmt::Formatter::debug_tuple_field1_finish(f,
269+
"TupleSingleField", &&self.0)
270+
}
271+
}
272+
#[automatically_derived]
273+
impl ::core::default::Default for TupleSingleField {
274+
#[inline]
275+
fn default() -> TupleSingleField {
276+
TupleSingleField(::core::default::Default::default())
277+
}
278+
}
279+
#[automatically_derived]
280+
impl ::core::convert::From<u32> for TupleSingleField {
281+
#[inline]
282+
fn from(value: u32) -> TupleSingleField { Self(value) }
283+
}
284+
#[automatically_derived]
285+
impl ::core::hash::Hash for TupleSingleField {
286+
#[inline]
287+
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) -> () {
288+
::core::hash::Hash::hash(&self.0, state)
289+
}
290+
}
291+
#[automatically_derived]
292+
impl ::core::marker::StructuralPartialEq for TupleSingleField { }
293+
#[automatically_derived]
294+
impl ::core::cmp::PartialEq for TupleSingleField {
295+
#[inline]
296+
fn eq(&self, other: &TupleSingleField) -> bool { self.0 == other.0 }
297+
}
298+
#[automatically_derived]
299+
impl ::core::cmp::Eq for TupleSingleField {
300+
#[inline]
301+
#[doc(hidden)]
302+
#[coverage(off)]
303+
fn assert_receiver_is_total_eq(&self) -> () {
304+
let _: ::core::cmp::AssertParamIsEq<u32>;
305+
}
306+
}
307+
#[automatically_derived]
308+
impl ::core::cmp::PartialOrd for TupleSingleField {
309+
#[inline]
310+
fn partial_cmp(&self, other: &TupleSingleField)
311+
-> ::core::option::Option<::core::cmp::Ordering> {
312+
::core::cmp::PartialOrd::partial_cmp(&self.0, &other.0)
313+
}
314+
}
315+
#[automatically_derived]
316+
impl ::core::cmp::Ord for TupleSingleField {
317+
#[inline]
318+
fn cmp(&self, other: &TupleSingleField) -> ::core::cmp::Ordering {
319+
::core::cmp::Ord::cmp(&self.0, &other.0)
320+
}
321+
}
322+
323+
struct SingleField {
324+
foo: bool,
325+
}
326+
#[automatically_derived]
327+
impl ::core::clone::Clone for SingleField {
328+
#[inline]
329+
fn clone(&self) -> SingleField {
330+
let _: ::core::clone::AssertParamIsClone<bool>;
331+
*self
332+
}
333+
}
334+
#[automatically_derived]
335+
impl ::core::marker::Copy for SingleField { }
336+
#[automatically_derived]
337+
impl ::core::fmt::Debug for SingleField {
338+
#[inline]
339+
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
340+
::core::fmt::Formatter::debug_struct_field1_finish(f, "SingleField",
341+
"foo", &&self.foo)
342+
}
343+
}
344+
#[automatically_derived]
345+
impl ::core::default::Default for SingleField {
346+
#[inline]
347+
fn default() -> SingleField {
348+
SingleField { foo: ::core::default::Default::default() }
349+
}
350+
}
351+
#[automatically_derived]
352+
impl ::core::convert::From<bool> for SingleField {
353+
#[inline]
354+
fn from(value: bool) -> SingleField { Self { foo: value } }
355+
}
356+
#[automatically_derived]
357+
impl ::core::hash::Hash for SingleField {
358+
#[inline]
359+
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) -> () {
360+
::core::hash::Hash::hash(&self.foo, state)
361+
}
362+
}
363+
#[automatically_derived]
364+
impl ::core::marker::StructuralPartialEq for SingleField { }
365+
#[automatically_derived]
366+
impl ::core::cmp::PartialEq for SingleField {
367+
#[inline]
368+
fn eq(&self, other: &SingleField) -> bool { self.foo == other.foo }
369+
}
370+
#[automatically_derived]
371+
impl ::core::cmp::Eq for SingleField {
372+
#[inline]
373+
#[doc(hidden)]
374+
#[coverage(off)]
375+
fn assert_receiver_is_total_eq(&self) -> () {
376+
let _: ::core::cmp::AssertParamIsEq<bool>;
377+
}
378+
}
379+
#[automatically_derived]
380+
impl ::core::cmp::PartialOrd for SingleField {
381+
#[inline]
382+
fn partial_cmp(&self, other: &SingleField)
383+
-> ::core::option::Option<::core::cmp::Ordering> {
384+
::core::cmp::PartialOrd::partial_cmp(&self.foo, &other.foo)
385+
}
386+
}
387+
#[automatically_derived]
388+
impl ::core::cmp::Ord for SingleField {
389+
#[inline]
390+
fn cmp(&self, other: &SingleField) -> ::core::cmp::Ordering {
391+
::core::cmp::Ord::cmp(&self.foo, &other.foo)
392+
}
393+
}
394+
252395
// A large struct. Note: because this derives `Copy`, it gets the simple
253396
// `clone` implemention that just does `*self`.
254397
struct Big {
@@ -572,6 +715,11 @@ impl ::core::fmt::Debug for Unsized {
572715
}
573716
}
574717
#[automatically_derived]
718+
impl ::core::convert::From<[u32]> for Unsized {
719+
#[inline]
720+
fn from(value: [u32]) -> Unsized { Self(value) }
721+
}
722+
#[automatically_derived]
575723
impl ::core::hash::Hash for Unsized {
576724
#[inline]
577725
fn hash<__H: ::core::hash::Hasher>(&self, state: &mut __H) -> () {

0 commit comments

Comments
 (0)