| //@ run-pass |
| #![allow(dead_code)] |
| //@ aux-build:issue-17718-aux.rs |
| |
| extern crate issue_17718_aux as other; |
| |
| use std::sync::atomic::{AtomicUsize, Ordering}; |
| |
| const C1: usize = 1; |
| const C2: AtomicUsize = AtomicUsize::new(0); |
| const C3: fn() = foo; |
| const C4: usize = C1 * C1 + C1 / C1; |
| const C5: &'static usize = &C4; |
| const C6: usize = { |
| const C: usize = 3; |
| C |
| }; |
| |
| static S1: usize = 3; |
| static S2: AtomicUsize = AtomicUsize::new(0); |
| |
| mod test { |
| static A: usize = 4; |
| static B: &'static usize = &A; |
| static C: &'static usize = &(A); |
| } |
| |
| fn foo() {} |
| |
| fn main() { |
| assert_eq!(C1, 1); |
| assert_eq!(C3(), ()); |
| assert_eq!(C2.fetch_add(1, Ordering::SeqCst), 0); |
| assert_eq!(C2.fetch_add(1, Ordering::SeqCst), 0); |
| assert_eq!(C4, 2); |
| assert_eq!(*C5, 2); |
| assert_eq!(C6, 3); |
| assert_eq!(S1, 3); |
| assert_eq!(S2.fetch_add(1, Ordering::SeqCst), 0); |
| assert_eq!(S2.fetch_add(1, Ordering::SeqCst), 1); |
| |
| match 1 { |
| C1 => {} |
| _ => unreachable!(), |
| } |
| |
| let _a = C1; |
| let _a = C2; |
| let _a = C3; |
| let _a = C4; |
| let _a = C5; |
| let _a = C6; |
| let _a = S1; |
| |
| assert_eq!(other::C1, 1); |
| assert_eq!(other::C3(), ()); |
| assert_eq!(other::C2.fetch_add(1, Ordering::SeqCst), 0); |
| assert_eq!(other::C2.fetch_add(1, Ordering::SeqCst), 0); |
| assert_eq!(other::C4, 2); |
| assert_eq!(*other::C5, 2); |
| assert_eq!(other::S1, 3); |
| assert_eq!(other::S2.fetch_add(1, Ordering::SeqCst), 0); |
| assert_eq!(other::S2.fetch_add(1, Ordering::SeqCst), 1); |
| |
| let _a = other::C1; |
| let _a = other::C2; |
| let _a = other::C3; |
| let _a = other::C4; |
| let _a = other::C5; |
| |
| match 1 { |
| other::C1 => {} |
| _ => unreachable!(), |
| } |
| } |