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.!
packages@lists.squeakfoundation.org