Frank Shearar uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-fbs.598.mcz==================== Summary ====================
Name: System-fbs.598
Author: fbs
Time: 26 September 2013, 8:28:58.617 pm
UUID: 28a7c515-1da1-234f-a59c-8e5a4e23a6dd
Ancestors: System-fbs.597
An AbstractEvent's #environment is not an Environment.
If an AbstractEvent doesn't have an explicit Environment, it returns Smalltalk globals.
The preamble starts the RecentMessages' event collection.
=============== Diff against System-fbs.597 ===============
Item was changed:
(PackageInfo named: 'System') preamble: '"Prepare for removing the recent-message-tracking from Utilities."
+ SystemChangeNotifier uniqueInstance noMoreNotificationsFor: Utilities.
+ RecentMessages startUp.'!
- SystemChangeNotifier uniqueInstance noMoreNotificationsFor: Utilities.'!
Item was changed:
Object subclass: #AbstractEvent
instanceVariableNames: 'item itemKind environment'
classVariableNames: ''
poolDictionaries: ''
category: 'System-Change Notification'!
+
+ !AbstractEvent commentStamp: 'fbs 9/26/2013 17:49' prior: 0!
+ An AbstractEvent is used by the system change notification framework to indicate that something happened with code - a class was recategorised, a method was added, and so on.
+
+ My environment instance variable is a Dictionary containing all the relevant information for an event - selector, class, and so on. It is not an Environment instance!!!
Item was added:
+ ----- Method: AbstractEvent class>>environmentKind (in category 'item kinds') -----
+ environmentKind
+
+ ^#environment!
Item was added:
+ ----- Method: AbstractEvent>>itemEnvironment (in category 'accessing') -----
+ itemEnvironment
+ ^ environment at: self class environmentKind ifAbsent: [Smalltalk globals].!
Item was added:
+ ----- Method: AbstractEvent>>itemEnvironment: (in category 'accessing') -----
+ itemEnvironment: anEnvironment
+ ^self environmentAt: self class environmentKind put: anEnvironment.!
Item was changed:
----- Method: RecentMessages>>event: (in category 'change logging') -----
event: anEvent
"Hook for SystemChangeNotifier"
(anEvent isCommented and: [anEvent itemKind = SystemChangeNotifier classKind])
ifTrue: [self recordSelector: #Comment forClass: anEvent item inEnvironment: anEvent environment].
((anEvent isAdded or: [anEvent isModified]) and: [anEvent itemKind = SystemChangeNotifier methodKind])
ifTrue: [
anEvent itemRequestor
+ ifNotNil: [self recordSelector: anEvent itemSelector forClass: anEvent itemClass inEnvironment: anEvent itemEnvironment].
- ifNotNil: [self recordSelector: anEvent itemSelector forClass: anEvent itemClass inEnvironment: anEvent environment].
InMidstOfFileinNotification signal
ifFalse: [Utilities changed: #recentMethodSubmissions]].!