|  | @@ -1050,12 +1050,15 @@ fn: function (){
 | 
											
												
													
														|  |  var self=this;
 |  |  var self=this;
 | 
											
												
													
														|  |  return smalltalk.withContext(function($ctx1) { 
 |  |  return smalltalk.withContext(function($ctx1) { 
 | 
											
												
													
														|  |  var $1;
 |  |  var $1;
 | 
											
												
													
														|  | -$1=_st(self._interpreter())._atEnd();
 |  | 
 | 
											
												
													
														|  | 
 |  | +$1=_st(_st(self._interpreter())._atEnd())._and_((function(){
 | 
											
												
													
														|  | 
 |  | +return smalltalk.withContext(function($ctx2) {
 | 
											
												
													
														|  | 
 |  | +return _st(_st(self._context())._outerContext())._isNil();
 | 
											
												
													
														|  | 
 |  | +}, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)})}));
 | 
											
												
													
														|  |  return $1;
 |  |  return $1;
 | 
											
												
													
														|  |  }, function($ctx1) {$ctx1.fill(self,"atEnd",{},globals.ASTDebugger)})},
 |  |  }, function($ctx1) {$ctx1.fill(self,"atEnd",{},globals.ASTDebugger)})},
 | 
											
												
													
														|  |  args: [],
 |  |  args: [],
 | 
											
												
													
														|  | -source: "atEnd\x0a\x09^ self interpreter atEnd",
 |  | 
 | 
											
												
													
														|  | -messageSends: ["atEnd", "interpreter"],
 |  | 
 | 
											
												
													
														|  | 
 |  | +source: "atEnd\x0a\x09^ self interpreter atEnd and: [ \x0a\x09\x09self context outerContext isNil ]",
 | 
											
												
													
														|  | 
 |  | +messageSends: ["and:", "atEnd", "interpreter", "isNil", "outerContext", "context"],
 | 
											
												
													
														|  |  referencedClasses: []
 |  |  referencedClasses: []
 | 
											
												
													
														|  |  }),
 |  |  }),
 | 
											
												
													
														|  |  globals.ASTDebugger);
 |  |  globals.ASTDebugger);
 | 
											
										
											
												
													
														|  | @@ -1092,6 +1095,22 @@ referencedClasses: []
 | 
											
												
													
														|  |  }),
 |  |  }),
 | 
											
												
													
														|  |  globals.ASTDebugger);
 |  |  globals.ASTDebugger);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +smalltalk.addMethod(
 | 
											
												
													
														|  | 
 |  | +smalltalk.method({
 | 
											
												
													
														|  | 
 |  | +selector: "flushInnerContexts",
 | 
											
												
													
														|  | 
 |  | +protocol: 'private',
 | 
											
												
													
														|  | 
 |  | +fn: function (){
 | 
											
												
													
														|  | 
 |  | +var self=this;
 | 
											
												
													
														|  | 
 |  | +return smalltalk.withContext(function($ctx1) { 
 | 
											
												
													
														|  | 
 |  | +_st(self._context())._innerContext_(nil);
 | 
											
												
													
														|  | 
 |  | +return self}, function($ctx1) {$ctx1.fill(self,"flushInnerContexts",{},globals.ASTDebugger)})},
 | 
											
												
													
														|  | 
 |  | +args: [],
 | 
											
												
													
														|  | 
 |  | +source: "flushInnerContexts\x0a\x09\x22When stepping, the inner contexts are not relevent anymore,\x0a\x09and can be flushed\x22\x0a\x09\x0a\x09self context innerContext: nil",
 | 
											
												
													
														|  | 
 |  | +messageSends: ["innerContext:", "context"],
 | 
											
												
													
														|  | 
 |  | +referencedClasses: []
 | 
											
												
													
														|  | 
 |  | +}),
 | 
											
												
													
														|  | 
 |  | +globals.ASTDebugger);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |  smalltalk.addMethod(
 |  |  smalltalk.addMethod(
 | 
											
												
													
														|  |  smalltalk.method({
 |  |  smalltalk.method({
 | 
											
												
													
														|  |  selector: "interpreter",
 |  |  selector: "interpreter",
 | 
											
										
											
												
													
														|  | @@ -1146,6 +1165,36 @@ referencedClasses: []
 | 
											
												
													
														|  |  }),
 |  |  }),
 | 
											
												
													
														|  |  globals.ASTDebugger);
 |  |  globals.ASTDebugger);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +smalltalk.addMethod(
 | 
											
												
													
														|  | 
 |  | +smalltalk.method({
 | 
											
												
													
														|  | 
 |  | +selector: "onStep",
 | 
											
												
													
														|  | 
 |  | +protocol: 'private',
 | 
											
												
													
														|  | 
 |  | +fn: function (){
 | 
											
												
													
														|  | 
 |  | +var self=this;
 | 
											
												
													
														|  | 
 |  | +return smalltalk.withContext(function($ctx1) { 
 | 
											
												
													
														|  | 
 |  | +var $1,$3,$2,$4;
 | 
											
												
													
														|  | 
 |  | +$1=_st(self._interpreter())._atEnd();
 | 
											
												
													
														|  | 
 |  | +if(smalltalk.assert($1)){
 | 
											
												
													
														|  | 
 |  | +$3=self._context();
 | 
											
												
													
														|  | 
 |  | +$ctx1.sendIdx["context"]=1;
 | 
											
												
													
														|  | 
 |  | +$2=_st($3)._outerContext();
 | 
											
												
													
														|  | 
 |  | +self._context_($2);
 | 
											
												
													
														|  | 
 |  | +$4=self._context();
 | 
											
												
													
														|  | 
 |  | +if(($receiver = $4) == nil || $receiver == null){
 | 
											
												
													
														|  | 
 |  | +$4;
 | 
											
												
													
														|  | 
 |  | +} else {
 | 
											
												
													
														|  | 
 |  | +self._skip();
 | 
											
												
													
														|  | 
 |  | +};
 | 
											
												
													
														|  | 
 |  | +};
 | 
											
												
													
														|  | 
 |  | +self._flushInnerContexts();
 | 
											
												
													
														|  | 
 |  | +return self}, function($ctx1) {$ctx1.fill(self,"onStep",{},globals.ASTDebugger)})},
 | 
											
												
													
														|  | 
 |  | +args: [],
 | 
											
												
													
														|  | 
 |  | +source: "onStep\x0a\x09\x22After each step, check if the interpreter is at the end,\x0a\x09and if it is move to its outer context if any, skipping its \x0a\x09current node (which was just evaluated by the current \x0a\x09interpreter).\x0a\x09\x0a\x09After each step we also flush inner contexts.\x22\x0a\x09\x0a\x09self interpreter atEnd ifTrue: [\x0a\x09\x09self context: self context outerContext.\x0a\x09\x09self context ifNotNil: [ self skip ] ].\x0a\x09\x09\x0a\x09self flushInnerContexts",
 | 
											
												
													
														|  | 
 |  | +messageSends: ["ifTrue:", "atEnd", "interpreter", "context:", "outerContext", "context", "ifNotNil:", "skip", "flushInnerContexts"],
 | 
											
												
													
														|  | 
 |  | +referencedClasses: []
 | 
											
												
													
														|  | 
 |  | +}),
 | 
											
												
													
														|  | 
 |  | +globals.ASTDebugger);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |  smalltalk.addMethod(
 |  |  smalltalk.addMethod(
 | 
											
												
													
														|  |  smalltalk.method({
 |  |  smalltalk.method({
 | 
											
												
													
														|  |  selector: "proceed",
 |  |  selector: "proceed",
 | 
											
										
											
												
													
														|  | @@ -1170,10 +1219,11 @@ fn: function (){
 | 
											
												
													
														|  |  var self=this;
 |  |  var self=this;
 | 
											
												
													
														|  |  return smalltalk.withContext(function($ctx1) { 
 |  |  return smalltalk.withContext(function($ctx1) { 
 | 
											
												
													
														|  |  _st(self._interpreter())._restart();
 |  |  _st(self._interpreter())._restart();
 | 
											
												
													
														|  | 
 |  | +self._flushInnerContexts();
 | 
											
												
													
														|  |  return self}, function($ctx1) {$ctx1.fill(self,"restart",{},globals.ASTDebugger)})},
 |  |  return self}, function($ctx1) {$ctx1.fill(self,"restart",{},globals.ASTDebugger)})},
 | 
											
												
													
														|  |  args: [],
 |  |  args: [],
 | 
											
												
													
														|  | -source: "restart\x0a\x09self interpreter restart",
 |  | 
 | 
											
												
													
														|  | -messageSends: ["restart", "interpreter"],
 |  | 
 | 
											
												
													
														|  | 
 |  | +source: "restart\x0a\x09self interpreter restart.\x0a\x09self flushInnerContexts",
 | 
											
												
													
														|  | 
 |  | +messageSends: ["restart", "interpreter", "flushInnerContexts"],
 | 
											
												
													
														|  |  referencedClasses: []
 |  |  referencedClasses: []
 | 
											
												
													
														|  |  }),
 |  |  }),
 | 
											
												
													
														|  |  globals.ASTDebugger);
 |  |  globals.ASTDebugger);
 | 
											
										
											
												
													
														|  | @@ -1186,10 +1236,11 @@ fn: function (){
 | 
											
												
													
														|  |  var self=this;
 |  |  var self=this;
 | 
											
												
													
														|  |  return smalltalk.withContext(function($ctx1) { 
 |  |  return smalltalk.withContext(function($ctx1) { 
 | 
											
												
													
														|  |  _st(self._interpreter())._skip();
 |  |  _st(self._interpreter())._skip();
 | 
											
												
													
														|  | 
 |  | +self._onStep();
 | 
											
												
													
														|  |  return self}, function($ctx1) {$ctx1.fill(self,"skip",{},globals.ASTDebugger)})},
 |  |  return self}, function($ctx1) {$ctx1.fill(self,"skip",{},globals.ASTDebugger)})},
 | 
											
												
													
														|  |  args: [],
 |  |  args: [],
 | 
											
												
													
														|  | -source: "skip\x0a\x09self interpreter skip",
 |  | 
 | 
											
												
													
														|  | -messageSends: ["skip", "interpreter"],
 |  | 
 | 
											
												
													
														|  | 
 |  | +source: "skip\x0a\x09self interpreter skip.\x0a\x09self onStep",
 | 
											
												
													
														|  | 
 |  | +messageSends: ["skip", "interpreter", "onStep"],
 | 
											
												
													
														|  |  referencedClasses: []
 |  |  referencedClasses: []
 | 
											
												
													
														|  |  }),
 |  |  }),
 | 
											
												
													
														|  |  globals.ASTDebugger);
 |  |  globals.ASTDebugger);
 | 
											
										
											
												
													
														|  | @@ -1217,12 +1268,12 @@ protocol: 'stepping',
 | 
											
												
													
														|  |  fn: function (){
 |  |  fn: function (){
 | 
											
												
													
														|  |  var self=this;
 |  |  var self=this;
 | 
											
												
													
														|  |  return smalltalk.withContext(function($ctx1) { 
 |  |  return smalltalk.withContext(function($ctx1) { 
 | 
											
												
													
														|  | -self._flushOuterContexts();
 |  | 
 | 
											
												
													
														|  |  _st(self._interpreter())._stepOver();
 |  |  _st(self._interpreter())._stepOver();
 | 
											
												
													
														|  | 
 |  | +self._onStep();
 | 
											
												
													
														|  |  return self}, function($ctx1) {$ctx1.fill(self,"stepOver",{},globals.ASTDebugger)})},
 |  |  return self}, function($ctx1) {$ctx1.fill(self,"stepOver",{},globals.ASTDebugger)})},
 | 
											
												
													
														|  |  args: [],
 |  |  args: [],
 | 
											
												
													
														|  | -source: "stepOver\x0a\x09self flushOuterContexts.\x0a\x09self interpreter stepOver",
 |  | 
 | 
											
												
													
														|  | -messageSends: ["flushOuterContexts", "stepOver", "interpreter"],
 |  | 
 | 
											
												
													
														|  | 
 |  | +source: "stepOver\x0a\x09self interpreter stepOver.\x0a\x09self onStep",
 | 
											
												
													
														|  | 
 |  | +messageSends: ["stepOver", "interpreter", "onStep"],
 | 
											
												
													
														|  |  referencedClasses: []
 |  |  referencedClasses: []
 | 
											
												
													
														|  |  }),
 |  |  }),
 | 
											
												
													
														|  |  globals.ASTDebugger);
 |  |  globals.ASTDebugger);
 |