[squeak-dev] The Inbox: Environments-cmm.75.mcz

commits at source.squeak.org commits at source.squeak.org
Mon Feb 18 02:54:05 UTC 2019


Chris Muller uploaded a new version of Environments to project The Inbox:
http://source.squeak.org/inbox/Environments-cmm.75.mcz

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

Name: Environments-cmm.75
Author: cmm
Time: 17 February 2019, 8:54:02.934673 pm
UUID: 13aceb53-d0e1-4823-a86c-a2abacb6c2d9
Ancestors: Environments-pre.73

Keep and access Classes and Traits by their #name's logical value instead of the physical identity of the String object.

=============== Diff against Environments-pre.73 ===============

Item was removed:
- (PackageInfo named: 'Environments') preamble: '"Fix ''Instances'' entry for Smalltalk Environment."
- | dict |
- dict := (Environment classPool at: ''Instances'').
- dict keys
- 	do: [ : eachName | (eachName isSymbol not ) ifTrue: [ dict at: eachName asSymbol put: (dict removeKey: eachName) ] ].
- 
- "Let Environment names be, consistently, Symbols."
- Environment allInstances do:
- 	[ : each | 
- 	each info 
- 		instVarNamed: ''name'' 
- 		put: (each name asSymbol) ]'!

Item was changed:
  ----- Method: Environment>>allClassesAndTraitsDo: (in category 'classes and traits') -----
  allClassesAndTraitsDo: aBlock
  	declarations keysAndValuesDo:
  		[:key :value |
+ 		((value isBehavior) and: [key = value name]) ifTrue:
- 		((value isBehavior) and: [key == value name]) ifTrue:
  			[aBlock value: value]]!

Item was changed:
  ----- Method: Environment>>classOrTraitNamed: (in category 'classes and traits') -----
  classOrTraitNamed: aString 
  	"aString is either a class or trait name or a class or trait name followed by ' class' or 'classTrait' respectively.
  	Answer the class or metaclass it names."
  
  	| meta baseName |
  	(aString endsWith: ' class')
  		ifTrue: [meta := true.
  				baseName := aString copyFrom: 1 to: aString size - 6]
  		ifFalse: [
  			(aString endsWith: ' classTrait')
  				ifTrue: [
  					meta := true.
  					baseName := aString copyFrom: 1 to: aString size - 11]
  				ifFalse: [
  					meta := false.
  					baseName := aString]].
  
+ 	^declarations at: baseName ifPresent:
- 	^declarations at: baseName asSymbol ifPresent:
  		[ :global |
   		global isBehavior ifTrue:
  			[ meta
  				ifFalse: [ global ]
  				ifTrue: [ global classSide ]]]!

Item was changed:
  ----- Method: Environment>>hasClassNamed: (in category 'classes and traits') -----
+ hasClassNamed: aString 
+ 	^ declarations
+ 		at: aString
+ 		ifPresent: [ : global | global isKindOf: Class ]
+ 		ifAbsent: [ false ]!
- hasClassNamed: aString
- 	Symbol hasInterned: aString ifTrue:
- 		[:symbol | 
- 		^ (declarations at: symbol ifAbsent: [nil])
- 			isKindOf: Class].
- 	^ false.!

Item was changed:
  ----- Method: Environment>>initialize (in category 'initialize-release') -----
  initialize
+ 	declarations := Dictionary new.
+ 	bindings := Dictionary new. 
- 	declarations := IdentityDictionary new.
- 	bindings := IdentityDictionary new. 
  	undeclared := WeakIdentityDictionary new.
  	policies := Array new. 
  	observers := IdentitySet new.!

Item was changed:
  ----- Method: Environment>>removeClassNamed: (in category 'classes and traits') -----
  removeClassNamed: aString
  	declarations 
+ 		at: aString 
- 		at: aString asSymbol 
  		ifPresent: [:class | class removeFromSystem]
  		ifAbsent: 
  			[Transcript cr; show: 'Removal of class named ', aString, 
  			' ignored because ', aString, ' does not exist.']!

Item was added:
+ (PackageInfo named: 'Environments') postscript: '"Fix ''Instances'' entry for Smalltalk Environment."
+ | dict |
+ dict := (Environment classPool at: ''Instances'').
+ Environment classPool at: ''Instances'' put: (dict := dict as: Dictionary).
+ 
+ "Fix ''delcarations'' and ''bindings'' of existing Environments."
+ Environment allInstances do:
+ 	[ : each | 
+ 	#(''declarations'' ''bindings'') do: [ : eachIdDictVar | (each instVarNamed: eachIdDictVar put: ((each instVarNamed: eachIdDictVar) as: Dictionary)) ] ]'!



More information about the Squeak-dev mailing list