Skip to content

Commit 6b7845f

Browse files
committed
Add test for default_field_values and const_default
Add a test showing `#![feature(default_field_values)]` using `#[const_trait] trait Default` (`#![feature(const_default)]` + `#![feature(const_trait_impl)]`).
1 parent f838cbc commit 6b7845f

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
//@ check-pass
2+
3+
// Ensure that `default_field_values` and `const_default` interact properly.
4+
5+
#![feature(default_field_values)]
6+
#![feature(const_trait_impl)]
7+
#![feature(const_default)]
8+
9+
#[derive(Default, PartialEq, Eq, Debug)]
10+
struct S {
11+
r: Option<String> = <Option<_> as Default>::default(),
12+
s: String = String::default(),
13+
o: Option<String> = Option::<String>::default(),
14+
p: std::marker::PhantomData<()> = std::marker::PhantomData::default(),
15+
q: Option<String> = <Option<String> as Default>::default(),
16+
t: Option<String> = Option::default(),
17+
}
18+
19+
fn main() {
20+
let s = S { .. };
21+
assert_eq!(s.r, None);
22+
assert_eq!(&s.s, "");
23+
assert_eq!(s.o, None);
24+
assert_eq!(s.p, std::marker::PhantomData);
25+
assert_eq!(s.q, None);
26+
assert_eq!(s.t, None);
27+
assert_eq!(s, S::default());
28+
}

0 commit comments

Comments
 (0)