[squeak-dev] The Trunk: Compiler-cmm.297.mcz

commits at source.squeak.org commits at source.squeak.org
Tue Mar 24 00:55:05 UTC 2015


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!



More information about the Squeak-dev mailing list