vrepl: fix output of the fn call (related #21792) (#21800)

This commit is contained in:
yuyi 2024-07-05 01:50:31 +08:00 committed by GitHub
parent 96eada1835
commit a67bfebe95
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 25 additions and 6 deletions

View File

@ -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
}

View File

@ -1,3 +1,3 @@
print($tmpl('./tmpl/hello.txt'))
$tmpl('./tmpl/hello.txt')
===output===
hello

View File

@ -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()

View File

@ -1,4 +1,4 @@
import encoding.hex as z
print(z.decode('AB09CD')!.hex())
z.decode('AB09CD')!.hex()
===output===
ab09cd

View File

@ -4,4 +4,5 @@ values.pop()
values
===output===
[1, 2, 3]
3
[1, 2]

View File

@ -0,0 +1,8 @@
mut values := [1, 2, 3]
values
println(values.pop())
values
===output===
[1, 2, 3]
3
[1, 2]