This repository was archived by the owner on May 28, 2025. It is now read-only.
File tree Expand file tree Collapse file tree 3 files changed +53
-0
lines changed
tests/ui/consts/const-eval Expand file tree Collapse file tree 3 files changed +53
-0
lines changed Original file line number Diff line number Diff line change 1+ // This checks that function pointer signatures that are referenced mutably
2+ // but contain a &mut T parameter still fail in a constant context: see issue #114994.
3+ //
4+ // check-fail
5+
6+ const fn use_mut_const_fn ( _f : & mut fn ( & mut String ) ) { //~ ERROR mutable references are not allowed in constant functions
7+ ( )
8+ }
9+
10+ const fn use_mut_const_tuple_fn ( _f : ( fn ( ) , & mut u32 ) ) { //~ ERROR mutable references are not allowed in constant functions
11+
12+ }
13+
14+ fn main ( ) { }
Original file line number Diff line number Diff line change 1+ error[E0658]: mutable references are not allowed in constant functions
2+ --> $DIR/issue-114994-fail.rs:6:27
3+ |
4+ LL | const fn use_mut_const_fn(_f: &mut fn(&mut String)) {
5+ | ^^
6+ |
7+ = note: see issue #57349 <https://github.com/rust-lang/rust/issues/57349> for more information
8+ = help: add `#![feature(const_mut_refs)]` to the crate attributes to enable
9+
10+ error[E0658]: mutable references are not allowed in constant functions
11+ --> $DIR/issue-114994-fail.rs:10:33
12+ |
13+ LL | const fn use_mut_const_tuple_fn(_f: (fn(), &mut u32)) {
14+ | ^^
15+ |
16+ = note: see issue #57349 <https://github.com/rust-lang/rust/issues/57349> for more information
17+ = help: add `#![feature(const_mut_refs)]` to the crate attributes to enable
18+
19+ error: aborting due to 2 previous errors
20+
21+ For more information about this error, try `rustc --explain E0658`.
Original file line number Diff line number Diff line change 1+ // This checks that function pointer signatures containing &mut T types
2+ // work in a constant context: see issue #114994.
3+ //
4+ // check-pass
5+
6+ const fn use_const_fn ( _f : fn ( & mut String ) ) {
7+ ( )
8+ }
9+
10+ const fn get_some_fn ( ) -> fn ( & mut String ) {
11+ String :: clear
12+ }
13+
14+ const fn some_const_fn ( ) {
15+ let _f: fn ( & mut String ) = String :: clear;
16+ }
17+
18+ fn main ( ) { }
You can’t perform that action at this time.
0 commit comments