diff options
Diffstat (limited to 'tests/ui/consts/const-eval/dont_promote_unstable_const_fn.rs')
-rw-r--r-- | tests/ui/consts/const-eval/dont_promote_unstable_const_fn.rs | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/tests/ui/consts/const-eval/dont_promote_unstable_const_fn.rs b/tests/ui/consts/const-eval/dont_promote_unstable_const_fn.rs new file mode 100644 index 000000000..4b3cf7073 --- /dev/null +++ b/tests/ui/consts/const-eval/dont_promote_unstable_const_fn.rs @@ -0,0 +1,24 @@ +#![unstable(feature = "humans", + reason = "who ever let humans program computers, + we're apparently really bad at it", + issue = "none")] + +#![feature(staged_api)] + +#[stable(feature = "rust1", since = "1.0.0")] +#[rustc_const_unstable(feature="foo", issue = "none")] +const fn foo() -> u32 { 42 } + +fn meh() -> u32 { 42 } + +const fn bar() -> u32 { foo() } //~ ERROR `foo` is not yet stable as a const fn + +fn a() { + let _: &'static u32 = &foo(); //~ ERROR temporary value dropped while borrowed +} + +fn main() { + let _: &'static u32 = &meh(); //~ ERROR temporary value dropped while borrowed + let x: &'static _ = &std::time::Duration::from_millis(42).subsec_millis(); + //~^ ERROR temporary value dropped while borrowed +} |