[Pkg] The Trunk: Collections-eem.460.mcz

commits at source.squeak.org commits at source.squeak.org
Thu Sep 29 19:43:06 UTC 2011


Eliot Miranda uploaded a new version of Collections to project The Trunk:
http://source.squeak.org/trunk/Collections-eem.460.mcz

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

Name: Collections-eem.460
Author: eem
Time: 29 September 2011, 12:42:36.39 pm
UUID: 0b90a58f-9354-4927-91f0-3432359541fe
Ancestors: Collections-ul.459

Fix String>numArgs for prefAllowUnderscoreSelectors regime.

=============== Diff against Collections-ul.459 ===============

Item was changed:
  ----- Method: String>>numArgs (in category 'accessing') -----
  numArgs 
  	"Answer either the number of arguments that the receiver would take if considered a selector.  Answer -1 if it couldn't be a selector.  Note that currently this will answer -1 for anything begining with an uppercase letter even though the system will accept such symbols as selectors.  It is intended mostly for the assistance of spelling correction."
  
  	| firstChar numColons excess start ix |
  	self size = 0 ifTrue: [^ -1].
  	firstChar := self at: 1.
  	(firstChar isLetter or: [firstChar = $:]) ifTrue:
  		["Fast reject if any chars are non-alphanumeric
  		NOTE: fast only for Byte things - Broken for Wide"
+ 		Scanner prefAllowUnderscoreSelectors ifFalse:
+ 			[self class isBytes
+ 				ifTrue: [(self findSubstring: '~' in: self startingAt: 1 matchTable: Tokenish) > 0 ifTrue: [^ -1]]
+ 				ifFalse: [2 to: self size do: [:i | (self at: i) tokenish ifFalse: [^ -1]]]].
- 		self class isBytes
- 			ifTrue: [(self findSubstring: '~' in: self startingAt: 1 matchTable: Tokenish) > 0 ifTrue: [^ -1]]
- 			ifFalse: [2 to: self size do: [:i | (self at: i) tokenish ifFalse: [^ -1]]].
  		"Fast colon count"
  		numColons := 0.  start := 1.
  		[(ix := self indexOf: $: startingAt: start) > 0]
  			whileTrue:
  				[numColons := numColons + 1.
  				start := ix + 1].
  		numColons = 0 ifTrue: [^ 0].
  		firstChar = $:
  			ifTrue: [excess := 2 "Has an initial keyword, as #:if:then:else:"]
  			ifFalse: [excess := 0].
  		self last = $:
  			ifTrue: [^ numColons - excess]
  			ifFalse: [^ numColons - excess - 1 "Has a final keywords as #nextPut::andCR"]].
  	firstChar isSpecial ifTrue:
  		[self size = 1 ifTrue: [^ 1].
  		2 to: self size do: [:i | (self at: i) isSpecial ifFalse: [^ -1]].
  		^ 1].
  	^ -1.!



More information about the Packages mailing list