]> git.lizzy.rs Git - rust.git/blob - src/test/ui/issues/issue-27997.rs
Rollup merge of #100168 - WaffleLapkin:improve_diagnostics_for_missing_type_in_a_cons...
[rust.git] / src / test / ui / issues / issue-27997.rs
1 // run-pass
2 use std::sync::atomic::{Ordering, AtomicUsize};
3
4 use std::mem;
5 struct S<U,V> {
6     _u: U,
7     size_of_u: usize,
8     _v: V,
9     size_of_v: usize
10 }
11
12 impl<U, V> S<U, V> {
13     fn new(u: U, v: V) -> Self {
14         S {
15             _u: u,
16             size_of_u: mem::size_of::<U>(),
17             _v: v,
18             size_of_v: mem::size_of::<V>()
19         }
20     }
21 }
22
23 static COUNT: AtomicUsize = AtomicUsize::new(0);
24
25 impl<V, U> Drop for S<U, V> {
26     fn drop(&mut self) {
27         assert_eq!(mem::size_of::<U>(), self.size_of_u);
28         assert_eq!(mem::size_of::<V>(), self.size_of_v);
29         COUNT.store(COUNT.load(Ordering::SeqCst)+1, Ordering::SeqCst);
30     }
31 }
32
33 fn main() {
34     assert_eq!(COUNT.load(Ordering::SeqCst), 0);
35     { S::new(0u8, 1u16); }
36     assert_eq!(COUNT.load(Ordering::SeqCst), 1);
37 }