@@ -435,16 +435,18 @@ fn run_repl(workdir string, vrepl_prefix string) int {
435
435
if s.output.len > r.last_output.len {
436
436
cur_line_output := s.output[r.last_output.len..]
437
437
print_output (cur_line_output)
438
+ if s.exit_code == 0 {
439
+ r.last_output = s.output.clone ()
440
+ r.lines << r.line
441
+ }
438
442
}
439
443
} else {
440
444
mut temp_line := r.line
441
445
func_call , fntype := r.function_call (r.line)
442
446
filter_line := r.line.replace (r.line.find_between ("'" , "'" ), '' ).replace (r.line.find_between ('"' ,
443
447
'"' ), '' )
444
448
mut is_statement := false
445
- if func_call {
446
- is_statement = true
447
- } else if filter_line.count ('=' ) % 2 == 1
449
+ if filter_line.count ('=' ) % 2 == 1
448
450
&& (filter_line.count ('!=' ) + filter_line.count ('>=' ) + filter_line.count ('<=' )) == 0 {
449
451
is_statement = true
450
452
} else {
@@ -467,6 +469,10 @@ fn run_repl(workdir string, vrepl_prefix string) int {
467
469
if s.output.len > r.last_output.len {
468
470
cur_line_output := s.output[r.last_output.len..]
469
471
print_output (cur_line_output)
472
+ if s.exit_code == 0 {
473
+ r.last_output = s.output.clone ()
474
+ r.lines << temp_line
475
+ }
470
476
}
471
477
continue
472
478
}
@@ -478,6 +484,8 @@ fn run_repl(workdir string, vrepl_prefix string) int {
478
484
}
479
485
} else if temp_line.starts_with ('#include ' ) {
480
486
temp_source_code = '${temp_line} \n ' + r.current_source_code (false , false )
487
+ } else if temp_line.starts_with ('fn' ) {
488
+ temp_source_code = r.current_source_code (false , false )
481
489
} else {
482
490
temp_source_code = r.current_source_code (true , false ) + '\n ${temp_line} \n '
483
491
}
@@ -490,6 +498,8 @@ fn run_repl(workdir string, vrepl_prefix string) int {
490
498
r.parse_import (r.line)
491
499
} else if r.line.starts_with ('#include ' ) {
492
500
r.includes << r.line
501
+ } else if r.line.starts_with ('fn ' ) {
502
+ r.functions << r.line
493
503
} else {
494
504
r.lines << r.line
495
505
}
0 commit comments