[Pkg] SystemEditor: SystemEditor-mtf.117.mcz

squeak-dev-noreply at lists.squeakfoundation.org squeak-dev-noreply at lists.squeakfoundation.org
Thu Sep 18 18:06:29 UTC 2008


A new version of SystemEditor was added to project SystemEditor:
http://www.squeaksource.com/SystemEditor/SystemEditor-mtf.117.mcz

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

Name: SystemEditor-mtf.117
Author: mtf
Time: 18 September 2008, 11:06:01 am
UUID: 4a548d30-0c97-4225-b51d-bd1ec559e348
Ancestors: SystemEditor-mtf.116

MethodDictionaryEditor had Dictionary as its superclass, rather than DictionaryEditor; fixed.

Made MetaclassEditor>>isDebuggingAsEditor runtime, rather than compile-time, configurable (just send debug: true to the SystemEditor)

=============== Diff against SystemEditor-mtf.116 ===============

Item was changed:
+ DictionaryEditor subclass: #MethodDictionaryEditor
- Dictionary subclass: #MethodDictionaryEditor
  	instanceVariableNames: 'classEditor'
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'SystemEditor-Editors'!

Item was added:
+ ----- Method: SystemEditor>>debug: (in category 'debugging') -----
+ debug: aBoolean
+ "see MetaclassEditor>>isDebuggingAsEditor"
+ 
+ 	debug := aBoolean!

Item was changed:
  ----- Method: OldMetaclassEditor>>isDebuggingAsEditor (in category 'debugging') -----
  isDebuggingAsEditor
  	"To be transparent enough to fool most existing software,
  	MetaclassEditors must answer their subject's instance variables when
  	sent the message allInstVarNames. However, this message is also used by
  	the debugger, inspector, and explorer, when inspecting ClassEditors, and
  	an inspector should see the real instance variables of ClassEditor rather
  	than those of the MetaclassEditor's subject. So there is a conflict of
  	interest already.
  	
  	But it gets worse. If you do open an inspector on an object that is
  	reporting wrong information about it's instance variables, Bad things
  	happen. Specifically, the inspector calls instVarAt: on an instance
  	variable that does not exist, leading to an error every time the display
  	is updated. Less severe, instVarAt: will answer nonsensical. 
  	
  	So I took the instance variable proxying behavior all the way so that it
  	successfully fools the debugger, inspector, and explorer into seeing
  	proxied instance variables (see the senders af this message if you want
  	to know how). But there is still the original problem that you, the
  	programmer want to see the real state of ClassEditor. That is where this
  	method comes in.
  	
  	If this method returns false, everybody sees the proxied instance
  	variables. This is the correct behavior. If this method returns false,
  	everyone sees the true instance variables of ClassEditor. This is
  	incorrect behavior, and breaks the Unit tests, but it is invaluable if
+ 	you are debugging ClassEditor"
+ 
+ 	^ self environment debug!
- 	you are debugging ClassEditor.
- 	
- 	Just be sure to make sure this returns false whenever making a release"
- 	^ false!

Item was changed:
  DictionaryEditor subclass: #SystemEditor
+ 	instanceVariableNames: 'organization showProgress debug'
- 	instanceVariableNames: 'organization showProgress'
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'SystemEditor-Editors'!

Item was added:
+ ----- Method: SystemEditor>>debug (in category 'accessing') -----
+ debug
+ "see MetaclassEditor>>isDebuggingAsEditor"
+ 
+ 	^ debug ifNil: [false]!

Item was changed:
  ----- Method: MetaclassEditor>>isDebuggingAsEditor (in category 'debugging') -----
  isDebuggingAsEditor
  	"To be transparent enough to fool most existing software,
  	MetaclassEditors must answer their subject's instance variables when
  	sent the message allInstVarNames. However, this message is also used by
  	the debugger, inspector, and explorer, when inspecting ClassEditors, and
  	an inspector should see the real instance variables of ClassEditor rather
  	than those of the MetaclassEditor's subject. So there is a conflict of
  	interest already.
  	
  	But it gets worse. If you do open an inspector on an object that is
  	reporting wrong information about it's instance variables, Bad things
  	happen. Specifically, the inspector calls instVarAt: on an instance
  	variable that does not exist, leading to an error every time the display
  	is updated. Less severe, instVarAt: will answer nonsensical. 
  	
  	So I took the instance variable proxying behavior all the way so that it
  	successfully fools the debugger, inspector, and explorer into seeing
  	proxied instance variables (see the senders af this message if you want
  	to know how). But there is still the original problem that you, the
  	programmer want to see the real state of ClassEditor. That is where this
  	method comes in.
  	
  	If this method returns false, everybody sees the proxied instance
  	variables. This is the correct behavior. If this method returns false,
  	everyone sees the true instance variables of ClassEditor. This is
  	incorrect behavior, and breaks the Unit tests, but it is invaluable if
+ 	you are debugging ClassEditor"
+ 
+ 	^ self environment debug!
- 	you are debugging ClassEditor.
- 	
- 	Just be sure to make sure this returns false whenever making a release"
- 	^ false!



More information about the Packages mailing list