// Copyright 2014 The Rust Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution and at // http://rust-lang.org/COPYRIGHT. // // Licensed under the Apache License, Version 2.0 or the MIT license // , at your // option. This file may not be copied, modified, or distributed // except according to those terms. use std::kinds::marker; use std::cell::{UnsafeCell, RacyCell}; struct MyUnsafe { value: RacyCell } impl MyUnsafe { fn forbidden(&self) {} } enum UnsafeEnum { VariantSafe, VariantUnsafe(RacyCell) } static STATIC1: UnsafeEnum = UnsafeEnum::VariantSafe; static STATIC2: RacyCell = RacyCell(UnsafeCell { value: 1 }); const CONST: RacyCell = RacyCell(UnsafeCell { value: 1 }); static STATIC3: MyUnsafe = MyUnsafe{value: CONST}; static STATIC4: &'static RacyCell = &STATIC2; struct Wrap { value: T } impl Sync for Wrap {} static UNSAFE: RacyCell = RacyCell(UnsafeCell{value: 1}); static WRAPPED_UNSAFE: Wrap<&'static RacyCell> = Wrap { value: &UNSAFE }; fn main() { let a = &STATIC1; STATIC3.forbidden() }