v4 / vlib / v / checker / tests / mut_arg_different_muls_err.vv
38 lines · 31 sloc · 692 bytes · 734fde89e88855b83932a56947f0863aaf88c42d
Raw
1pub type WindowResizeFn = fn (window &Window, w int, h int)
2
3@[heap]
4pub struct Window {
5 id string = '_window_'
6pub mut:
7 resize_fn WindowResizeFn = unsafe { nil }
8}
9
10@[params]
11pub struct WindowParams {
12pub:
13 on_resize WindowResizeFn = unsafe { nil }
14}
15
16fn window_resized(mut w &Window) {
17 window_width, window_height := 200, 100
18
19 if w.resize_fn != unsafe { WindowResizeFn(0) } {
20 println('fn present ${window_width} ${window_height}')
21 w.resize_fn(w, window_width, window_height)
22 }
23}
24
25fn on_event(mut w Window) {
26 window_resized(mut w)
27}
28
29fn on_resize(window &Window, w int, h int) {
30 println(' ${w} ${h}')
31}
32
33fn main() {
34 mut w := &Window{
35 resize_fn: on_resize
36 }
37 on_event(mut w)
38}
39