|  | //@ run-pass | 
|  |  | 
|  | #![feature(ptr_internals, test)] | 
|  |  | 
|  | extern crate test; | 
|  | use test::black_box as b; // prevent promotion of the argument and const-propagation of the result | 
|  |  | 
|  | use std::ptr::NonNull; | 
|  |  | 
|  | const DANGLING: NonNull<u32> = NonNull::dangling(); | 
|  | const CASTED: NonNull<u32> = NonNull::cast(NonNull::<i32>::dangling()); | 
|  |  | 
|  | pub fn main() { | 
|  | // Be super-extra paranoid and cast the fn items to fn pointers before blackboxing them. | 
|  | assert_eq!(DANGLING, b::<fn() -> _>(NonNull::dangling)()); | 
|  | assert_eq!(CASTED, b::<fn() -> _>(NonNull::dangling)()); | 
|  | } |