The Trunk: EToys-nice.36.mcz

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

The Trunk: EToys-nice.36.mcz

commits-2
Nicolas Cellier uploaded a new version of EToys to project The Trunk:
http://source.squeak.org/trunk/EToys-nice.36.mcz

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

Name: EToys-nice.36
Author: nice
Time: 19 October 2009, 11:20:31 am
UUID: 9f11b689-fee1-2347-a7c5-53ae8326942b
Ancestors: EToys-tfel.35

Use #fasterKeys
and correct a bug in
#includesSelector:forInstance:ofClass:limitClass:

Observe the old code:
What you see, in the second loop:
        theKeys collect: [anInstVarNames | Utilities setterSelectorFor: anInstVarName]
Is not what you get, because at this stage, keys contains the (Utilities getterSelectorFor: anInstVarName), that is #getFoo for anInstVarName #foo

So the second loop did collect #setGetFoo: ...
I didn't try it, but that's how I read it.

=============== Diff against EToys-tfel.35 ===============

Item was changed:
  ----- Method: PasteUpMorph>>userCustomEventNames (in category '*eToys-customevents-scripting') -----
  userCustomEventNames
  | reg |
  reg := self valueOfProperty: #userCustomEventsRegistry ifAbsent: [ ^#() ].
+ ^reg fasterKeys sort!
- ^reg keys asArray sort!

Item was changed:
  ----- Method: KedamaTurtleVectorPlayer>>compileAllAccessors (in category 'player protocol') -----
  compileAllAccessors
 
+ info fasterKeys do: [:k |
- info keys asArray do: [:k |
  (#(who x y heading color visible) includes: k) ifFalse: [
  self compileVectorInstVarAccessorsFor: k.
  ].
  ].
  !

Item was changed:
  ----- Method: KedamaSequenceExecutionStub>>compileAllAccessors (in category 'method management') -----
  compileAllAccessors
 
+ turtles info fasterKeys do: [:k |
- turtles info keys asArray do: [:k |
  (#(who x y heading color visible normal) includes: k) ifFalse: [
  self compileScalarInstVarAccessorsFor: k.
  ].
  ].
  !

Item was changed:
  ----- Method: EToyVocabulary>>includesSelector:forInstance:ofClass:limitClass: (in category 'initialization') -----
  includesSelector: aSelector forInstance: anInstance ofClass: aTargetClass limitClass: mostGenericClass
  "Answer whether the vocabulary includes the given selector for the given class (and instance, if provided), only considering method implementations in mostGenericClass and lower"
 
+ | classToUse aClass |
- | classToUse aClass theKeys |
  (aTargetClass isUniClass and:
  [(aTargetClass namedTileScriptSelectors includes: aSelector) or:
+ [aTargetClass slotInfo fasterKeys anySatisfy:
+ [:anInstVarName | (Utilities getterSelectorFor: anInstVarName) = aSelector or: [(Utilities setterSelectorFor: anInstVarName) = aSelector]]]])
+ ifTrue: [^ true].
- [(((theKeys := aTargetClass slotInfo keys collect:
- [:anInstVarName | Utilities getterSelectorFor: anInstVarName])) includes: aSelector)
- or:
- [(theKeys collect: [:anInstVarName | Utilities setterSelectorFor: anInstVarName]) includes: aSelector]]]) ifTrue: [^ true].
 
  (methodInterfaces includesKey: aSelector) ifFalse: [^ false].
  classToUse := self classToUseFromInstance: anInstance ofClass: aTargetClass.
  ^ (aClass := classToUse whichClassIncludesSelector: aSelector)
  ifNil:
  [false]
  ifNotNil:
  [aClass includesBehavior: mostGenericClass]
  !

Item was changed:
  ----- Method: StandardScriptingSystem>>globalCustomEventNames (in category '*eToys-customevents-custom events') -----
  globalCustomEventNames
+ ^self customEventsRegistry fasterKeys sort!
- ^self customEventsRegistry keys asArray sort!

Item was changed:
  ----- Method: EToyVocabulary>>allMethodsInCategory:forInstance:ofClass: (in category 'method list') -----
  allMethodsInCategory: aCategoryName forInstance: anObject ofClass: aClass
  "Answer a list of all methods in the etoy interface which are in the given category, on behalf of anObject, or if it is nil, aClass"
 
  | aCategory unfiltered suitableSelectors isAll |
 
  aCategoryName ifNil: [^ OrderedCollection new].
  aClass isUniClass ifTrue:
  [aCategoryName = ScriptingSystem nameForScriptsCategory ifTrue:
  [^ aClass namedTileScriptSelectors].
  aCategoryName = ScriptingSystem nameForInstanceVariablesCategory ifTrue:
+ [^ aClass slotInfo fasterKeys sort collect:
- [^ aClass slotInfo keys asSortedArray collect:
  [:anInstVarName | Utilities getterSelectorFor: anInstVarName]]].
  unfiltered := (isAll := aCategoryName = self allCategoryName)
  ifTrue:
  [methodInterfaces collect: [:anInterface | anInterface selector]]
  ifFalse:
  [aCategory := categories detect: [:cat | cat categoryName = aCategoryName]
  ifNone: [^ OrderedCollection new].
  aCategory elementsInOrder collect: [:anElement | anElement selector]].
 
  (anObject isKindOf: Player) ifTrue:
  [suitableSelectors := anObject costume selectorsForViewer.
  unfiltered := unfiltered  select:
  [:aSelector | suitableSelectors includes: aSelector]].
  (isAll and: [aClass isUniClass]) ifTrue:
  [unfiltered addAll: aClass namedTileScriptSelectors.
+ unfiltered addAll: (aClass slotInfo fasterKeys sort collect:
- unfiltered addAll: (aClass slotInfo keys asSortedArray collect:
  [:anInstVarName | Utilities getterSelectorFor: anInstVarName])].
 
  ^ (unfiltered copyWithoutAll: #(dummy unused)) asSortedArray!