//@ 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!(), } }