[squeak-dev] The Inbox: Kernel-eem.1285.mcz

commits at source.squeak.org commits at source.squeak.org
Wed Dec 11 19:50:23 UTC 2019


A new version of Kernel was added to project The Inbox:
http://source.squeak.org/inbox/Kernel-eem.1285.mcz

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

Name: Kernel-eem.1285
Author: eem
Time: 11 December 2019, 11:50:19.928718 am
UUID: 3dce70bd-9166-47fe-a86f-22456db9845a
Ancestors: Kernel-mt.1284

Commit my own take on sendsSelector: vs sendsMessage:, and selectorsDo: vs messagesDo:.  IMNERHO sendsMessage: messagesDo: are *wrong*!! :-)  c.f. Behavior>>selectorsDo:

=============== Diff against Kernel-mt.1284 ===============

Item was changed:
  ----- Method: CompiledCode>>messagesDo: (in category 'scanning') -----
  messagesDo: workBlock
+ 	"Evaluate aBlock with all the message selectors sent by me. Duplicate seletors are possible."
- 	"Evaluate aBlock with all the message selectors sent by me. Duplicate sends possible."
  
+ 	"If anything should be deprecated it is messagesDo:; it can be an extension in AST/Refactoring.
+ 	 This method enumerates over selectors, not messages.  c.f. Behavior>>selectorsDo: etc"
+ 	^self selectorsDo: workBlock!
- 	| scanner selector  |
- 	self isQuick ifTrue: [^ self].
- 	
- 	self codeLiteralsDo: [:compiledCode | 
- 		scanner := InstructionStream on: compiledCode.
- 		scanner scanFor: [ :x | 
- 			(selector := scanner selectorToSendOrSelf) == scanner
- 				ifFalse: [workBlock value: selector].
- 			false "keep scanning" ] ].!

Item was added:
+ ----- Method: CompiledCode>>selectorsDo: (in category 'scanning') -----
+ selectorsDo: workBlock
+ 	"Evaluate aBlock with all the message selectors sent by me. Duplicate seletors are possible."
+ 
+ 	self isQuick ifTrue: [^self].
+ 	
+ 	self codeLiteralsDo:
+ 		[:compiledCode | | scanner |
+ 		(scanner := InstructionStream on: compiledCode) scanFor:
+ 			[:x| | selector |
+ 			(selector := scanner selectorToSendOrSelf) ~~ scanner ifTrue:
+ 				[workBlock value: selector].
+ 			false "keep scanning"]]!

Item was changed:
  ----- Method: CompiledCode>>sendsMessage: (in category 'testing') -----
+ sendsMessage: aSelector
+ 	"eem: this should be deprecated. This method does not check if a method sends a message;
+ 	 it checks if a method sends a message with a particular selector."
+ 	self flag: #todo.
- sendsMessage: aSelector 
- 	
  	self messagesDo: [:selector |
  		selector = aSelector ifTrue: [^ true]].
  	^ false!

Item was changed:
  ----- Method: CompiledCode>>sendsSelector: (in category 'testing') -----
  sendsSelector: aSelector 
+ 	"Answer if the receiver sends a message whose selector is aSelector."
  
+ 	self selectorsDo:
+ 		[:selector | selector = aSelector ifTrue: [^true]].
+ 	^false!
- 	self flag: #todo. "mt: Deprecate? AST/Refactoring project needs it..."
- 	^ self sendsMessage: aSelector!



More information about the Squeak-dev mailing list