2015-05-05 07:47:04 -05:00
|
|
|
// Test that we can't call random fns in a const fn or do other bad things.
|
|
|
|
|
2018-08-20 13:51:48 -05:00
|
|
|
#![feature(const_fn, const_transmute)]
|
2015-05-05 07:47:04 -05:00
|
|
|
|
|
|
|
use std::mem::transmute;
|
|
|
|
|
|
|
|
fn random() -> u32 { 0 }
|
|
|
|
|
|
|
|
const fn sub(x: &u32) -> usize {
|
2018-08-20 13:51:48 -05:00
|
|
|
unsafe { transmute(x) }
|
2015-05-05 07:47:04 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
const fn sub1() -> u32 {
|
|
|
|
random() //~ ERROR E0015
|
|
|
|
}
|
|
|
|
|
|
|
|
static Y: u32 = 0;
|
|
|
|
|
|
|
|
const fn get_Y() -> u32 {
|
|
|
|
Y
|
|
|
|
//~^ ERROR E0013
|
|
|
|
}
|
|
|
|
|
|
|
|
const fn get_Y_addr() -> &'static u32 {
|
|
|
|
&Y
|
|
|
|
//~^ ERROR E0013
|
|
|
|
}
|
|
|
|
|
2016-05-02 17:57:35 -05:00
|
|
|
const fn get() -> u32 {
|
2018-11-26 06:08:55 -06:00
|
|
|
let x = 22; //~ ERROR let bindings in constant functions are unstable
|
|
|
|
//~^ ERROR statements in constant functions
|
|
|
|
let y = 44; //~ ERROR let bindings in constant functions are unstable
|
|
|
|
//~^ ERROR statements in constant functions
|
2016-05-02 17:57:35 -05:00
|
|
|
x + y
|
2018-11-26 06:08:55 -06:00
|
|
|
//~^ ERROR let bindings in constant functions are unstable
|
|
|
|
//~| ERROR let bindings in constant functions are unstable
|
2016-05-02 17:57:35 -05:00
|
|
|
}
|
|
|
|
|
2018-05-28 19:38:18 -05:00
|
|
|
fn main() {}
|