[squeak-dev] Method Finder and deprecated method(s)

Eliot Miranda eliot.miranda at gmail.com
Tue Mar 13 17:09:58 UTC 2018


Hi Tim,


    it's great you're taking a look at MethodFinder.  Thanks! No one has responded but I expect that's because we're all busy.  You might make it easier for people to review and accept your work if you commit the changes packages to inbox instead of mailing a change set.  If that works for you go ahead, make sure the commit comment is helpful, and then report to the mailing list.

_,,,^..^,,,_ (phone)

> On Mar 11, 2018, at 11:23 AM, Tim Johnson <digit at sonic.net> wrote:
> 
> Hi all,
> 
> I seem to have stumbled into a few issues, and am taking the bold step of including them all in a single email.  My apologies.  Tested/explored in 6.0a-#17799.
> 
> Issues:
> 
> [1] The deprecation of SequenceableCollection>>#upTo:
> 
> [2] Removing deprecated #defaultBackgroundColor from MethodFinder
> 
> [3] MethodFinder class variable Dangerous and MethodFinder>>#organizationFiltered:
> 
> So:
> 
> [1]
> 
> The deprecation of SequenceableCollection>>#upTo: means Method Finder (a.k.a. Selector Browser) now pops up two modal dialogs if one enters something like:
> 
> 'deprecated '. 'method'. 'deprecated method'
> 
> ...into its code entry pane and hits 'save'.
> 
> This appears to be due to the inclusion of #upTo: in MethodFinder>>#initialize2 as a method which would be sent to a PositionableStream... which seems reasonable.
> 
> According to ReadStream>>#readStream, a ReadStream is intended to be polymorphic with SequencableCollection.  So, then, if #upTo: is an intrinsic method of a Stream, does this mean it must be retained in SequencableCollection? E.g. should it become undeprecated?
> 
> Though never until now have I thought about what it would take to use Method Finder on a stream!  So I tried something similar to (but not exactly) the following in a Workspace:
> 
> MethodFinder methodFor: { { 'deprecated' readStream . $c }.  'depre' }  "changed to protect the innocent user who put array braces in the wrong place on his first attempt"
> 
> [2]
> 
> ...and /another/ deprecation warning popped up:
> 
> "Object>>#defaultBackgroundColor has been deprecated. Implement #uniformWindowColor and #customWindowColor in your model."
> 
> ...#defaultBackgroundColor appears in method source 23 times, so there are probably still a number of places where this deprecated method needs to be engineered around :)   However, the place where it's probably causing trouble in this case is in MethodFinder>>#initialize.  Attached is a change set to remove it from that method.
> 
> [3]
> 
> However, there is another problem with MethodFinder>>#initialize and #initialize2.  They both include comments at their respective ends which call MethodFinder>>#organizationFiltered:, but that method fails due to the class variable Dangerous being uninitialized.  The method which initializes Dangerous, MethodFinder>>#noteDangerous, looks to be unsent.  If I add "self noteDangerous" to one of the #initialize methods (I added it to #initialize3 to test), this makes #organizationFiltered: work again (after initializing MethodFinder).  Note that Dangerous is not mentioned in the MethodFinder class comment, but other class variables are.  I didn't do any research for how Dangerous is intended to be useful.
> 
> Thanks for reading.
> 
> Best,
> Tim
> <MethodFinder-Deprecated.cs>
> 


More information about the Squeak-dev mailing list