File tree Expand file tree Collapse file tree 4 files changed +41
-2
lines changed
compiler/rustc_const_eval/src/transform/check_consts Expand file tree Collapse file tree 4 files changed +41
-2
lines changed Original file line number Diff line number Diff line change @@ -89,7 +89,10 @@ impl<'tcx> NonConstOp<'tcx> for FnCallIndirect {
8989 ccx : & ConstCx < ' _ , ' tcx > ,
9090 span : Span ,
9191 ) -> DiagnosticBuilder < ' tcx , ErrorGuaranteed > {
92- ccx. tcx . sess . struct_span_err ( span, "function pointers are not allowed in const fn" )
92+ ccx. tcx . sess . struct_span_err (
93+ span,
94+ & format ! ( "function pointer calls are not allowed in {}s" , ccx. const_kind( ) ) ,
95+ )
9396 }
9497}
9598
Original file line number Diff line number Diff line change 1+ const fn make_fn_ptr ( ) -> fn ( ) {
2+ || { }
3+ }
4+
5+ static STAT : ( ) = make_fn_ptr ( ) ( ) ;
6+ //~^ ERROR function pointer
7+
8+ const CONST : ( ) = make_fn_ptr ( ) ( ) ;
9+ //~^ ERROR function pointer
10+
11+ const fn call_ptr ( ) {
12+ make_fn_ptr ( ) ( ) ;
13+ //~^ ERROR function pointer
14+ }
15+
16+ fn main ( ) { }
Original file line number Diff line number Diff line change 1+ error: function pointer calls are not allowed in statics
2+ --> $DIR/const-fn-ptr.rs:5:19
3+ |
4+ LL | static STAT: () = make_fn_ptr()();
5+ | ^^^^^^^^^^^^^^^
6+
7+ error: function pointer calls are not allowed in constants
8+ --> $DIR/const-fn-ptr.rs:8:19
9+ |
10+ LL | const CONST: () = make_fn_ptr()();
11+ | ^^^^^^^^^^^^^^^
12+
13+ error: function pointer calls are not allowed in constant functions
14+ --> $DIR/const-fn-ptr.rs:12:5
15+ |
16+ LL | make_fn_ptr()();
17+ | ^^^^^^^^^^^^^^^
18+
19+ error: aborting due to 3 previous errors
20+
Original file line number Diff line number Diff line change @@ -7,7 +7,7 @@ LL | const fn foo() { (||{})() }
77 = note: closures need an RFC before allowed to be called in constant functions
88 = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
99
10- error: function pointers are not allowed in const fn
10+ error: function pointer calls are not allowed in constant functions
1111 --> $DIR/issue-56164.rs:7:5
1212 |
1313LL | input()
You can’t perform that action at this time.
0 commit comments