3 // ignore-wasm32-bare compiled as panic=abort by default
5 #![feature(generators, generator_trait)]
7 use std
::ops
::Generator
;
9 use std
::sync
::atomic
::{AtomicUsize, ATOMIC_USIZE_INIT, Ordering}
;
11 static A
: AtomicUsize
= ATOMIC_USIZE_INIT
;
17 A
.fetch_add(1, Ordering
::SeqCst
);
21 fn bool_true() -> bool
{
35 assert_eq
!(A
.load(Ordering
::SeqCst
), 0);
36 let res
= panic
::catch_unwind(panic
::AssertUnwindSafe(|| {
37 unsafe { foo.resume() }
39 assert
!(res
.is_err());
40 assert_eq
!(A
.load(Ordering
::SeqCst
), 1);
50 assert_eq
!(A
.load(Ordering
::SeqCst
), 1);
51 let res
= panic
::catch_unwind(panic
::AssertUnwindSafe(|| {
52 unsafe { foo.resume() }
54 assert
!(res
.is_err());
55 assert_eq
!(A
.load(Ordering
::SeqCst
), 1);