The Trunk: Compiler-cmm.297.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: Compiler-cmm.297.mcz

commits-2
Chris Muller uploaded a new version of Compiler to project The Trunk:
http://source.squeak.org/trunk/Compiler-cmm.297.mcz

==================== Summary ====================

Name: Compiler-cmm.297
Author: cmm
Time: 23 March 2015, 7:54:50.696 pm
UUID: 1d7e980a-3504-44fa-9a9c-803bf3a6bda2
Ancestors: Compiler-topa.296

DoIt evaluation in the debugger needs to be from the selected Context's methodClass, not the receiver's class so that "super" will refer to the correct class.

=============== Diff against Compiler-topa.296 ===============

Item was changed:
  ----- Method: Compiler>>evaluate:in:to:notifying:ifFail:logged: (in category 'public access logging') -----
  evaluate: textOrStream in: aContext to: receiver notifying: aRequestor ifFail: failBlock logged: logFlag
  "Compiles the sourceStream into a parse tree, then generates code into
  a method. If aContext is not nil, the text can refer to temporaries in that
  context (the Debugger uses this). If aRequestor is not nil, then it will receive
  a notify:at: message before the attempt to evaluate is aborted. Finally, the
  compiled method is invoked from here via withArgs:executeMethod:, hence
  the system no longer creates Doit method litter on errors."
-
  | theClass |
+ theClass := (aContext == nil ifTrue: [receiver class] ifFalse: [aContext methodClass]).
- theClass := ((aContext == nil ifTrue: [receiver] ifFalse: [aContext receiver]) class).
  ^self
  evaluateCue: (CompilationCue
  source: textOrStream
  context: aContext
  receiver: receiver
  class: theClass
  environment: theClass environment
  requestor: aRequestor)
  ifFail: failBlock
  logged: logFlag!