ReadEvalPrintLoop.st
changeset 22738 0de46478c392
parent 22736 db668a5e0106
child 22739 d39b0b0008ce
equal deleted inserted replaced
22737:265707d2dd8a 22738:0de46478c392
  1030             ] do:[
  1030             ] do:[
  1031                 (Error, ControlInterrupt) handle:[:ex |
  1031                 (Error, ControlInterrupt) handle:[:ex |
  1032                     prompt isNil ifTrue:[
  1032                     prompt isNil ifTrue:[
  1033                         ex reject
  1033                         ex reject
  1034                     ].
  1034                     ].
  1035                     MiniDebugger enterWithMessage:(ex errorString) mayProceed:true.
  1035                     (self confirmDebugger not
  1036                     ex mayProceed ifTrue:[
  1036                     or:[ ex creator isControlInterrupt
  1037                         ex proceed.
  1037                     or:[ self askYesNo:('Error encountered: %1\Debug? '
       
  1038                                         bindWith:ex description)]]
       
  1039                     ) ifTrue:[
       
  1040                         MiniDebugger enterWithMessage:(ex errorString) mayProceed:true.
       
  1041                         "/ if we arrive here, user typed 'c' - continue
       
  1042                         ex mayProceed ifTrue:[
       
  1043                             ex proceed.
       
  1044                         ].
  1038                     ].
  1045                     ].
  1039                     error showCR:('Evaluation aborted: ', ex description).
  1046                     error showCR:('Evaluation aborted: ', ex description).
  1040                     ex return.
  1047                     ex return.
  1041                 ] do:[
  1048                 ] do:[
  1042                     |value ms us|
  1049                     |value ms us|
  1046                             value := (compilerClass new requestor:self) 
  1053                             value := (compilerClass new requestor:self) 
  1047                                         evaluate:chunk
  1054                                         evaluate:chunk
  1048                                         compile:true.
  1055                                         compile:true.
  1049                         ].    
  1056                         ].    
  1050                         doPrint ifTrue:[
  1057                         doPrint ifTrue:[
       
  1058                             'Return value: ' print.
  1051                             value printOn:output. output cr.
  1059                             value printOn:output. output cr.
  1052                             output flush.
  1060                             output flush.
  1053                         ].
  1061                         ].
  1054                     ] ifFalse:[    
  1062                     ] ifFalse:[    
  1055                         us := Time microsecondsToRun:[
  1063                         us := Time microsecondsToRun:[
  1056                             value := (compilerClass new requestor:self)
  1064                             value := (compilerClass new requestor:self)
  1057                                         evaluate:chunk compile:true.
  1065                                         evaluate:chunk compile:true.
  1058                         ].
  1066                         ].
  1059                         doPrint ifTrue:[
  1067                         doPrint ifTrue:[
  1060                             value isVoid ifFalse:[
  1068                             value isVoid ifFalse:[
       
  1069                                 'Return value: ' print.
  1061                                 value printOn:output. output cr.
  1070                                 value printOn:output. output cr.
       
  1071                                 output flush.
  1062                             ].
  1072                             ].
  1063                         ].
  1073                         ].
  1064 
  1074 
  1065                         timingFlag == true ifTrue:[
  1075                         timingFlag == true ifTrue:[
  1066                             'execution time: ' printOn:error.
  1076                             'execution time: ' printOn:error.