From a67bfebe9569859886c4c7675c87a0c7fe61cfae Mon Sep 17 00:00:00 2001 From: yuyi Date: Fri, 5 Jul 2024 01:50:31 +0800 Subject: [PATCH] vrepl: fix output of the fn call (related #21792) (#21800) --- cmd/tools/vrepl.v | 16 +++++++++++++--- vlib/v/slow_tests/repl/comptime_tmpl.repl | 2 +- vlib/v/slow_tests/repl/fn_calls.repl | 2 +- vlib/v/slow_tests/repl/import_alias.repl | 2 +- .../repl/{method_call.repl => method_call1.repl} | 1 + vlib/v/slow_tests/repl/method_call2.repl | 8 ++++++++ 6 files changed, 25 insertions(+), 6 deletions(-) rename vlib/v/slow_tests/repl/{method_call.repl => method_call1.repl} (97%) create mode 100644 vlib/v/slow_tests/repl/method_call2.repl diff --git a/cmd/tools/vrepl.v b/cmd/tools/vrepl.v index 699570994b..80b484338c 100644 --- a/cmd/tools/vrepl.v +++ b/cmd/tools/vrepl.v @@ -435,6 +435,10 @@ fn run_repl(workdir string, vrepl_prefix string) int { if s.output.len > r.last_output.len { cur_line_output := s.output[r.last_output.len..] print_output(cur_line_output) + if s.exit_code == 0 { + r.last_output = s.output.clone() + r.lines << r.line + } } } else { mut temp_line := r.line @@ -442,9 +446,7 @@ fn run_repl(workdir string, vrepl_prefix string) int { filter_line := r.line.replace(r.line.find_between("'", "'"), '').replace(r.line.find_between('"', '"'), '') mut is_statement := false - if func_call { - is_statement = true - } else if filter_line.count('=') % 2 == 1 + if filter_line.count('=') % 2 == 1 && (filter_line.count('!=') + filter_line.count('>=') + filter_line.count('<=')) == 0 { is_statement = true } else { @@ -467,6 +469,10 @@ fn run_repl(workdir string, vrepl_prefix string) int { if s.output.len > r.last_output.len { cur_line_output := s.output[r.last_output.len..] print_output(cur_line_output) + if s.exit_code == 0 { + r.last_output = s.output.clone() + r.lines << temp_line + } } continue } @@ -478,6 +484,8 @@ fn run_repl(workdir string, vrepl_prefix string) int { } } else if temp_line.starts_with('#include ') { temp_source_code = '${temp_line}\n' + r.current_source_code(false, false) + } else if temp_line.starts_with('fn') { + temp_source_code = r.current_source_code(false, false) } else { temp_source_code = r.current_source_code(true, false) + '\n${temp_line}\n' } @@ -490,6 +498,8 @@ fn run_repl(workdir string, vrepl_prefix string) int { r.parse_import(r.line) } else if r.line.starts_with('#include ') { r.includes << r.line + } else if r.line.starts_with('fn ') { + r.functions << r.line } else { r.lines << r.line } diff --git a/vlib/v/slow_tests/repl/comptime_tmpl.repl b/vlib/v/slow_tests/repl/comptime_tmpl.repl index 0b0b6eb25e..b04d501aa9 100644 --- a/vlib/v/slow_tests/repl/comptime_tmpl.repl +++ b/vlib/v/slow_tests/repl/comptime_tmpl.repl @@ -1,3 +1,3 @@ -print($tmpl('./tmpl/hello.txt')) +$tmpl('./tmpl/hello.txt') ===output=== hello diff --git a/vlib/v/slow_tests/repl/fn_calls.repl b/vlib/v/slow_tests/repl/fn_calls.repl index 8f3d8a39f7..8d18dfbcc1 100644 --- a/vlib/v/slow_tests/repl/fn_calls.repl +++ b/vlib/v/slow_tests/repl/fn_calls.repl @@ -1,4 +1,4 @@ -println(math.sinf(50.0)) +math.sinf(50.0) println(1+math.sinf(50.0)) fn test() { println('foo') } fn test2(a int) { println(a) } test() diff --git a/vlib/v/slow_tests/repl/import_alias.repl b/vlib/v/slow_tests/repl/import_alias.repl index 9ec5c9c169..85d68fe514 100644 --- a/vlib/v/slow_tests/repl/import_alias.repl +++ b/vlib/v/slow_tests/repl/import_alias.repl @@ -1,4 +1,4 @@ import encoding.hex as z -print(z.decode('AB09CD')!.hex()) +z.decode('AB09CD')!.hex() ===output=== ab09cd diff --git a/vlib/v/slow_tests/repl/method_call.repl b/vlib/v/slow_tests/repl/method_call1.repl similarity index 97% rename from vlib/v/slow_tests/repl/method_call.repl rename to vlib/v/slow_tests/repl/method_call1.repl index 2dce1f84bc..de183683ff 100644 --- a/vlib/v/slow_tests/repl/method_call.repl +++ b/vlib/v/slow_tests/repl/method_call1.repl @@ -4,4 +4,5 @@ values.pop() values ===output=== [1, 2, 3] +3 [1, 2] diff --git a/vlib/v/slow_tests/repl/method_call2.repl b/vlib/v/slow_tests/repl/method_call2.repl new file mode 100644 index 0000000000..dd92769fdf --- /dev/null +++ b/vlib/v/slow_tests/repl/method_call2.repl @@ -0,0 +1,8 @@ +mut values := [1, 2, 3] +values +println(values.pop()) +values +===output=== +[1, 2, 3] +3 +[1, 2]