@@ -447,9 +447,13 @@ func (s *Session) separateEvalStmt(in string) error {
447
447
if strings .LastIndex (line , "}" ) == len (line )- 1 {
448
448
bracketCount --
449
449
}
450
+ if strings .LastIndex (line , "{" ) == len (line )- 1 {
451
+ bracketCount ++
452
+ }
450
453
stmtLines = append (stmtLines , line )
451
454
452
455
if bracketCount == 0 && len (stmtLines ) > 0 {
456
+
453
457
if err := s .evalStmt (strings .Join (stmtLines , "\n " ), true ); err != nil {
454
458
return err
455
459
}
@@ -476,26 +480,24 @@ func (s *Session) separateEvalStmt(in string) error {
476
480
// cleanEvalStmt cleans up prior print statements etc.
477
481
func (s * Session ) cleanEvalStmt (in string ) error {
478
482
var stmtLines []string
479
- var exprCount int
480
483
481
484
inLines := strings .Split (in , "\n " )
482
485
483
486
for _ , line := range inLines {
484
487
485
- if _ , err := s .evalExpr (line ); err != nil {
486
- stmtLines = append (stmtLines , line )
488
+ beforeLines := len (s .mainBody .List )
489
+ if expr , err := s .evalExpr (line ); err == nil {
490
+ if ! s .isPureExpr (expr ) {
491
+ s .mainBody .List = s .mainBody .List [0 :beforeLines ]
492
+ stmtLines = append (stmtLines , line )
493
+ }
487
494
continue
488
495
}
489
-
490
- exprCount ++
496
+ stmtLines = append (stmtLines , line )
491
497
}
492
498
493
499
if len (stmtLines ) != 0 {
494
- var noPrint bool
495
- if exprCount > 0 {
496
- noPrint = true
497
- }
498
- if err := s .evalStmt (strings .Join (stmtLines , "\n " ), noPrint ); err != nil {
500
+ if err := s .evalStmt (strings .Join (stmtLines , "\n " ), true ); err != nil {
499
501
return err
500
502
}
501
503
}
0 commit comments