From fbdbee5fe81df6990f8c4e3114d75051aa3282bb Mon Sep 17 00:00:00 2001 From: Alexander Medvednikov Date: Wed, 15 Apr 2026 16:03:29 +0300 Subject: [PATCH] checker: fix compiler bug with bound mut ref callback (fixes #14741) --- .../checker/tests/callback_bound_mut_ref_err.out | 12 ++++++++++++ .../v/checker/tests/callback_bound_mut_ref_err.vv | 15 +++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 vlib/v/checker/tests/callback_bound_mut_ref_err.out create mode 100644 vlib/v/checker/tests/callback_bound_mut_ref_err.vv diff --git a/vlib/v/checker/tests/callback_bound_mut_ref_err.out b/vlib/v/checker/tests/callback_bound_mut_ref_err.out new file mode 100644 index 000000000..e5dcdd923 --- /dev/null +++ b/vlib/v/checker/tests/callback_bound_mut_ref_err.out @@ -0,0 +1,12 @@ +vlib/v/checker/tests/callback_bound_mut_ref_err.vv:14:33: error: cannot use `&State` as `&&State` in argument 1 to `show_entered_text` + 12 | fn main() { + 13 | mut state := &State{} + 14 | register(show_entered_text(mut state)) + | ~~~~~ + 15 | } +vlib/v/checker/tests/callback_bound_mut_ref_err.vv:14:11: error: `show_entered_text(mut state)` (no value) used as value in argument 1 to `register` + 12 | fn main() { + 13 | mut state := &State{} + 14 | register(show_entered_text(mut state)) + | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 15 | } diff --git a/vlib/v/checker/tests/callback_bound_mut_ref_err.vv b/vlib/v/checker/tests/callback_bound_mut_ref_err.vv new file mode 100644 index 000000000..4465cb617 --- /dev/null +++ b/vlib/v/checker/tests/callback_bound_mut_ref_err.vv @@ -0,0 +1,15 @@ +struct State { +mut: + entered_text string +} + +fn register(_on_click fn ()) {} + +fn show_entered_text(mut state &State) { + println(state.entered_text) +} + +fn main() { + mut state := &State{} + register(show_entered_text(mut state)) +} -- 2.39.5