v2 / vlib / v / tests / options / option_reference_params_test.v
28 lines · 23 sloc · 453 bytes · 1c2f1a35040752af8aea8daf8226bd231d3bca19
Raw
1struct Logger {}
2
3fn (l Logger) log(this string) {
4 println(this)
5}
6
7fn new_logger() &Logger {
8 return &Logger{}
9}
10
11fn do_log(mut maybe_logr ?&Logger, this string) {
12 if logr := maybe_logr {
13 logr.log(this)
14 }
15}
16
17fn bang(mut logr ?&Logger, this string) {
18 nested_log := fn [mut logr] (this string) {
19 do_log(mut logr, this)
20 }
21 nested_log(this)
22}
23
24fn test_option_reference_params() {
25 mut logr := new_logger()
26 bang(mut &logr, 'bang!')
27 assert true
28}
29