File tree 2 files changed +51
-0
lines changed 2 files changed +51
-0
lines changed Original file line number Diff line number Diff line change
1
+ // This is a non-regression test for const-qualification of unstable items in libcore
2
+ // as explained in issue #67053.
3
+ // const-qualification could miss some `const fn`s if they were unstable and the feature
4
+ // gate was not enabled in libcore.
5
+
6
+ #![ stable( feature = "core" , since = "1.6.0" ) ]
7
+ #![ feature( const_if_match) ]
8
+ #![ feature( rustc_const_unstable) ]
9
+ #![ feature( staged_api) ]
10
+
11
+ enum Opt < T > {
12
+ Some ( T ) ,
13
+ None ,
14
+ }
15
+
16
+ impl < T > Opt < T > {
17
+ #[ rustc_const_unstable( feature = "foo" ) ]
18
+ #[ stable( feature = "rust1" , since = "1.0.0" ) ]
19
+ const fn unwrap_or_else < F : FnOnce ( ) -> T > ( self , f : F ) -> T {
20
+ //~^ ERROR destructors cannot be evaluated at compile-time
21
+ //~| ERROR destructors cannot be evaluated at compile-time
22
+ match self {
23
+ Opt :: Some ( t) => t,
24
+ Opt :: None => f ( ) , //~ ERROR E0015
25
+ }
26
+ }
27
+ }
28
+
29
+ fn main ( ) { }
Original file line number Diff line number Diff line change
1
+ error[E0015]: calls in constant functions are limited to constant functions, tuple structs and tuple variants
2
+ --> $DIR/unstable-const-fn-in-libcore.rs:24:26
3
+ |
4
+ LL | Opt::None => f(),
5
+ | ^^^
6
+
7
+ error[E0493]: destructors cannot be evaluated at compile-time
8
+ --> $DIR/unstable-const-fn-in-libcore.rs:19:53
9
+ |
10
+ LL | const fn unwrap_or_else<F: FnOnce() -> T>(self, f: F) -> T {
11
+ | ^ constant functions cannot evaluate destructors
12
+
13
+ error[E0493]: destructors cannot be evaluated at compile-time
14
+ --> $DIR/unstable-const-fn-in-libcore.rs:19:47
15
+ |
16
+ LL | const fn unwrap_or_else<F: FnOnce() -> T>(self, f: F) -> T {
17
+ | ^^^^ constant functions cannot evaluate destructors
18
+
19
+ error: aborting due to 3 previous errors
20
+
21
+ Some errors have detailed explanations: E0015, E0493.
22
+ For more information about an error, try `rustc --explain E0015`.
You can’t perform that action at this time.
0 commit comments