| // This is a non-regression test for const-qualification of unstable items in libcore |
| // as explained in issue #67053. |
| // const-qualification could miss some `const fn`s if they were unstable and the feature |
| // gate was not enabled in libcore. |
| |
| #![stable(feature = "core", since = "1.6.0")] |
| #![feature(rustc_const_unstable)] |
| #![feature(staged_api)] |
| |
| enum Opt<T> { |
| Some(T), |
| None, |
| } |
| |
| impl<T> Opt<T> { |
| #[rustc_const_unstable(feature = "foo", issue = "none")] |
| #[stable(feature = "rust1", since = "1.0.0")] |
| const fn unwrap_or_else<F: FnOnce() -> T>(self, f: F) -> T { |
| //~^ ERROR destructors cannot be evaluated at compile-time |
| //~| ERROR destructors cannot be evaluated at compile-time |
| match self { |
| Opt::Some(t) => t, |
| Opt::None => f(), //~ ERROR E0015 |
| } |
| } |
| } |
| |
| fn main() {} |