Pharo-dev
By thread
pharo-dev@lists.pharo.org
By month
Messages by month
- ----- 2026 -----
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- 2 participants
- 144614 messages
Re: [Pharo-project] Fwd: A question about hardcoded class names
by Igor Stasenko
2009/2/14 Keith Hodges <keith_hodges(a)yahoo.co.uk>:
> Stéphane Ducasse wrote:
>> Hi guys
>>
>> some days ago with alex we wanted to identify the methods containing a
>> reference to their class (Lint does it too).
>> Now we thought that replacing them with self class is not equivalent
>> since we could imagine
>>
> st/x uses
>
> here class
>> that hardcoding the class name make sure that subclass cannot redefine
>> methods.
>> Now this is a bit against Smalltalk late bindinness and probably most
>> of the time an newbie error.
>>
> I doubt it.
>
> isAbstract
>
> self class = here class.
>
If i understood, st/x
here class
is equivalent to squeak
thisContext method methodClass
right?
> Keith
>> But I wanted to know what was your experiment to that regards.
>>
>> Stef
>>
>>
>>
>>
>>
>> _______________________________________________
>> Pharo-project mailing list
>> Pharo-project(a)lists.gforge.inria.fr
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>>
>>
>
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
--
Best regards,
Igor Stasenko AKA sig.
Feb. 14, 2009
Re: [Pharo-project] Fwd: A question about hardcoded class names
by Stéphane Ducasse
Yes this is what I thought so we will have to go over them one by one
and tag them
Stef
On Feb 14, 2009, at 5:19 PM, Lukas Renggli wrote:
>> Now we thought that replacing them with self class is not equivalent
>> since we could imagine
>> that hardcoding the class name make sure that subclass cannot
>> redefine
>> methods.
>
> No, in many cases this is not equivalent. In my opinion the rule could
> avoid many false positives if it would only trigger if there are no
> subclasses. Of course we would then also get more false negatives.
>
>> But I wanted to know what was your experiment to that regards.
>
> Two typical false positives I encountered:
>
> 1. Factory or builder methods on the class side usually refer to a
> wide variety of classes. Sometimes such methods also refer to the
> receiving class, however since you want to make the method also work
> when called on subclasses you have to hardcode the receiving class.
>
> 2. When collecting pragmas you usually write something along:
>
> PRErrorView>>renderOptionsOn: html
> (Pragma allNamed: #option: from: self class to: PRErrorView)
> do: [ :each | ... ]
>
> Given that PRErrorView has the subclasses PRForbiddenView and
> PRNotFoundView, there are cases where "self class" is not equal to
> PRErrorView. And the point of the above code is to find all pragmas,
> up to PRErrorView.
>
> Cheers,
> Lukas
>
> --
> Lukas Renggli
> http://www.lukas-renggli.ch
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
Feb. 14, 2009
Re: [Pharo-project] Fwd: A question about hardcoded class names
by Keith Hodges
Stéphane Ducasse wrote:
> Hi guys
>
> some days ago with alex we wanted to identify the methods containing a
> reference to their class (Lint does it too).
> Now we thought that replacing them with self class is not equivalent
> since we could imagine
>
st/x uses
here class
> that hardcoding the class name make sure that subclass cannot redefine
> methods.
> Now this is a bit against Smalltalk late bindinness and probably most
> of the time an newbie error.
>
I doubt it.
isAbstract
self class = here class.
Keith
> But I wanted to know what was your experiment to that regards.
>
> Stef
>
>
>
>
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
>
Feb. 14, 2009
Re: [Pharo-project] unnecessary =, == :)
by Igor Stasenko
Sometimes i using ivars , which going to hold boolean value only , but
i leave it to be initialized later
so, a value of variable could be nil, true, false.
Accessor, however alway returns a boolean, but depending of default
value it could look like:
^ myvar == true
or
^ myvar == false
2009/2/14 Gary Chambers <gazzaguru2(a)btinternet.com>:
> SystemWindow>>#mouseDown: (actually needed, on first call that property will
> almost certainly be nil, set later in the method).
>
> Regards, Gary
>
>
> ----- Original Message -----
> From: "Gary Chambers" <gazzaguru2(a)btinternet.com>
> To: <Pharo-project(a)lists.gforge.inria.fr>
> Sent: Saturday, February 14, 2009 5:12 PM
> Subject: Re: [Pharo-project] unnecessary =, == :)
>
>
> PluggableTextMorph>>#accept (sadly required defence against text setters
> that don't return a boolean)
> SystemWindow>>#mouseDown: (removed offending line, now obsolete, apparently)
>
> Regards, Gary
>
> ----- Original Message -----
> From: "Stéphane Ducasse" <stephane.ducasse(a)inria.fr>
> To: "Pharo Development" <Pharo-project(a)lists.gforge.inria.fr>
> Sent: Saturday, February 14, 2009 3:23 PM
> Subject: [Pharo-project] unnecessary =, == :)
>
>
>> Check for a =, ==, ~=, or ~~ message being sent to true/false or with
>> true/false as the argument. Many times these can be eliminated since
>> their receivers are already booleans. For example, "anObject isFoo ==
>> false" could be replaced with "anObject isFoo not" if isFoo always
>> returns a boolean. Sometimes variables might refer to true, false, and
>> something else, but this is considered bad style since the variable
>> has multiple types.
>>
>> Project>>#setChangeSet:
>> Project>>#isolationSet
>> Project>>#compileAll:from:
>> Project>>#writeFileNamed:fromDirectory:toServer:
>> Project>>#isolationHead
>> PNGReadWriter>>#debugging
>> ClockMorph>>#addCustomMenuItems:hand:
>> ClockMorph>>#step
>> ClockMorph>>#toggleShowingSeconds
>> ClockMorph>>#toggleShowing24hr
>> WorldState>>#interCyclePause:
>> Integer>>#quo:
>> Integer>>#digitSubtract:
>> SimpleServiceEntry>>#useLineAfter
>> MorphicUIManager>>#interactiveParserFor:
>> OBPluggableListMorph>>#mouseUp:
>> PianoRollScoreMorph>>#addCustomMenuItems:hand:
>> SystemDictionary>>#abandonSources
>> SystemDictionary>>#internalizeSources
>> SystemDictionary>>#internalizeChangeLog
>> SetTest>>#testRemoveIfAbsent
>> SimpleButtonDelayedMenuMorph>>#mouseUp:
>> Installer>>#validate
>> Installer>>#logErrorDuring:
>> SketchEditorMorph>>#verifyState:
>> SketchEditorMorph>>#deliverPainting:evt:
>> SketchMorph>>#useInterpolation:
>> Slider>>#descending
>> JoystickMorph>>#autoCenterString
>> JoystickMorph>>#button1
>> JoystickMorph>>#button2
>> SARInstaller>>#errorNoSuchMember:
>> MessageSet>>#growable
>> HandMorph>>#handleEvent:
>> HandMorph>>#fullDrawOn:
>> ImageSegment>>#declareAndPossiblyRename:
>> PluggableListMorphPlus>>#wantsDroppedMorph:event:
>> SUnitTest>>#testRanOnlyOnce
>> BitmapFillStyle>>#isTiled
>> InstallerMonticello>>#mcDetectFileBlock
>> FTPClient>>#login
>> Object>>#mustBeBooleanIn:
>> Object>>#'~='
>> Decompiler>>#pushConstant:
>> TextMorphForEditView>>#acceptOnCR
>> HostSystemMenusMenuItem>>#shift
>> FlapTab>>#inboard
>> FlapTab>>#flapShowing
>> FlapTab>>#tabSelected
>> PluggableTreeMorph>>#wantsDroppedNode:on:
>> DisplayScreen>>#deferUpdates:
>> OBSystemBrowser>>#defaultBackgroundColor
>> SmalltalkImage>>#setPlatformPreferences
>> SmalltalkImage>>#snapshot:andQuit:embedded:
>> URLMorph>>#mouseUp:
>> MultiNewParagraph>>#multiComposeLinesFrom:to:delta:into:priorLines:atY:
>> Collection>>#reject:
>> TextDiffBuilder>>#hasMultipleMatches
>> TrueTest>>#testNot
>> TrueTest>>#testInMemory
>> TrueTest>>#testAND
>> MCFileBasedRepository>>#possiblyNewerVersionsOfAnyOf:
>> Process>>#terminate
>> ProtoObjectTest>>#testIsNil
>> SqueakPage>>#write
>> ColorPickerMorph>>#putUpFor:near:
>> FalseTest>>#testAnd
>> FalseTest>>#testOR
>> FalseTest>>#testNot
>> FalseTest>>#testAND
>> UpdatingStringMorph>>#growable
>> UpdatingStringMorph>>#autoAcceptOnFocusLoss
>> LanguageEditor>>#selectedTranslationsAt:put:
>> Socket>>#setOption:value:
>> MultiCompositionScanner>>#setFont
>> PositionableStream>>#unCommand
>> HTTPSocket>>#logToTranscript
>> Number>>#odd
>> OBHierarchyBrowser>>#defaultBackgroundColor
>> MorphExtension>>#isDefault
>> MorphExtension>>#sortedPropertyNames
>> MorphExtension>>#printOn:
>> MorphExtension>>#hasProperty:
>> ObjectOut>>#doesNotUnderstand:
>> PluggableTextMorph>>#hasEditingConflicts
>> PluggableTextMorph>>#accept
>> SimpleSliderMorph>>#truncate
>> OBProtocolBrowser>>#defaultBackgroundColor
>> SystemWindow>>#mustNotClose
>> SystemWindow>>#mouseDown:
>> RBReadBeforeWrittenTester>>#read
>> RBReadBeforeWrittenTester>>#processBlock:
>> RBReadBeforeWrittenTester>>#processStatementNode:
>> RBReadBeforeWrittenTester>>#processIfTrueIfFalse:
>> GradientFillStyle>>#isRadialFill
>> RefactoryTyper>>#typeFor:
>> CompiledMethodTest>>#testValueWithReceiverArguments
>> OBLazyListMorph>>#handleMouseMove:
>> BlockContextTest>>#testSupplyAnswerThroughNestedBlocks
>> BlockContextTest>>#testSupplyAnswerUsingTraditionalMatchOfQuestion
>> BlockContextTest>>#testSupplySameAnswerToAllQuestions
>> BlockContextTest>>#testSupplyAnswerUsingOnlySubstringOfQuestion
>> BlockContextTest>>#testSupplySpecificAnswerToQuestion
>> BlockContextTest>>#testSupplyAnswerUsingRegexMatchOfQuestion
>> ImageMorph>>#isOpaque:
>> ProjectSwikiServer>>#acceptsUploads
>> PolygonMorph>>#rotateTestFlip:
>> PolygonMorph>>#beStraightSegments
>> PolygonMorph>>#beSmoothCurve
>> BitBlt>>#drawFrom:to:withFirstPoint:
>> FileList>>#getSelectedDirectory
>> FileList>>#getSelectedFile
>> RBParser>>#patchLiteralMessage
>> OBMultipleSelectionColumn>>#listSelectionAt:put:
>> ServerDirectory>>#upLoadProject:members:retry:
>> MorphObjectOut>>#doesNotUnderstand:
>> HaloMorph>>#addHandles
>> ThumbnailImageMorph>>#togglePopupFeature
>> ThumbnailImageMorph>>#handlesMouseDown:
>> ThumbnailImageMorph>>#popupFeatureString
>> ContextPart>>#jump:if:
>> MCWorkingCopy>>#merge:
>> FileDoesNotExistException>>#readOnly
>> RBLiteralNodeTest>>#testValue
>> Prefer...
>>
>> _______________________________________________
>> Pharo-project mailing list
>> Pharo-project(a)lists.gforge.inria.fr
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
--
Best regards,
Igor Stasenko AKA sig.
Feb. 14, 2009
Re: [Pharo-project] Debugging with morphic
by Gary Chambers
I'm sure I can come up with something... you obvioulsy want some kind of
debugger if an error occurs.
The taskbar works effectively synchronously with the display and should
handle self inflicted errors.
Other display errors *should* get managed by the #errorOnDraw thing, but not
always it would seem.
Regards, Gary
----- Original Message -----
From: "Alexandre Bergel" <Alexandre.Bergel(a)inria.fr>
To: "Pharo Development" <Pharo-project(a)lists.gforge.inria.fr>
Sent: Saturday, February 14, 2009 4:53 PM
Subject: [Pharo-project] Debugging with morphic
> Hi All (and especially the Pinesoft crew),
>
> When an error is triggered by a displayOn: method, the bottom bar is
> being filled with debugger windows. It then become hardly debuggable.
> Ideally, the system should not display a window if an error is
> triggered in the displayOn.
>
> Do you have any recommandation/conviention/enhancement to prevent the
> image to hang when an error is signaled in a displayOn. This is really
> annoying.
>
> Cheers,
> Alexandre
> --
> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
> Alexandre Bergel http://www.bergel.eu
> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>
>
>
>
>
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Feb. 14, 2009
Re: [Pharo-project] Fwd: A question about hardcoded class names
by Gary Chambers
Another example... the KeyedTree methods I commented on.
Regards, Gary
----- Original Message -----
From: "Lukas Renggli" <renggli(a)gmail.com>
To: <Pharo-project(a)lists.gforge.inria.fr>
Sent: Saturday, February 14, 2009 4:19 PM
Subject: Re: [Pharo-project] Fwd: A question about hardcoded class names
>> Now we thought that replacing them with self class is not equivalent
>> since we could imagine
>> that hardcoding the class name make sure that subclass cannot redefine
>> methods.
>
> No, in many cases this is not equivalent. In my opinion the rule could
> avoid many false positives if it would only trigger if there are no
> subclasses. Of course we would then also get more false negatives.
>
>> But I wanted to know what was your experiment to that regards.
>
> Two typical false positives I encountered:
>
> 1. Factory or builder methods on the class side usually refer to a
> wide variety of classes. Sometimes such methods also refer to the
> receiving class, however since you want to make the method also work
> when called on subclasses you have to hardcode the receiving class.
>
> 2. When collecting pragmas you usually write something along:
>
> PRErrorView>>renderOptionsOn: html
> (Pragma allNamed: #option: from: self class to: PRErrorView)
> do: [ :each | ... ]
>
> Given that PRErrorView has the subclasses PRForbiddenView and
> PRNotFoundView, there are cases where "self class" is not equal to
> PRErrorView. And the point of the above code is to find all pragmas,
> up to PRErrorView.
>
> Cheers,
> Lukas
>
> --
> Lukas Renggli
> http://www.lukas-renggli.ch
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Feb. 14, 2009
Re: [Pharo-project] Refers to class name instead of self class
by Gary Chambers
Project>>#finalEnterActions (changed to use self class)
KeyedTree>>* (valid check for anything that can be a (sub)tree. Allows
heterogeneous use of subclasses with appropriate behaviour (self class would
be restrictive)).
Regards, Gary
----- Original Message -----
From: "Stéphane Ducasse" <stephane.ducasse(a)inria.fr>
To: "Pharo Development" <Pharo-project(a)lists.gforge.inria.fr>
Sent: Saturday, February 14, 2009 3:44 PM
Subject: [Pharo-project] Refers to class name instead of self class
> Checks for classes that have their class name directly in the source
> instead of "self class". The self class variant allows you to create
> subclasses without needing to redefine that method.
>
> Project>>#compileAllIsolated:from:
> Project>>#initializeProjectPreferences
> Project>>#subProjects
> Project>>#storeToMakeRoom
> Project>>#armsLengthCommand:withDescription:
> Project>>#findProjectView:
> Project>>#flapsSuppressed:
> Project>>#fromMyServerLoad:
> Project>>#showWorldMainDockingBar:
> Project>>#assureFlapIntegrity
> Project>>#showSharedFlaps
> Project>>#decideAboutCreatingBlank:
> Project>>#children
> Project>>#versionFrom:
> Project>>#cleanseDisabledGlobalFlapIDsList
> Project>>#ensureChangeSetNameUnique
> Project>>#storeSomeSegment
> Project>>#hasBadNameForStoring
> Project>>#exportSegmentWithChangeSet:fileName:directory:
> Project>>#storeDataOn:
> Project>>#finalEnterActions
> Project>>#enter:revert:saveForRevert:
> Project>>#showWorldTaskbar:
> Project>>#okToChange
> Project>>#depth
> Parser>>#pragmaPrimitives
> SMDependencyAnalysis>>#installPackageReleases:
> MenuMorph>>#deleteIfPopUp
> MenuMorph>>#popUpAt:forHand:in:allowKeyboard:
> MenuMorph>>#addSubmenu:enabled:
> Integer>>#digitLogic:op:length:
> Integer>>#digitLshift:
> Integer>>#digitRshift:bytes:lookfirst:
> Integer>>#digitSubtract:
> Integer>>#digitDiv:neg:
> Integer>>#digitAdd:
> Integer>>#digitMultiply:neg:
> Arc>>#displayOn:transformation:clippingBox:rule:fillColor:
> PopUpMenu>>#startUpSegmented:withCaption:at:allowKeyboard:
> UUniverseMultiServer>>#initialize
> MorphThumbnail
> >>#representativeNoTallerThan:norWiderThan:thumbnailHeight:
> SystemDictionary>>#discardOddsAndEnds
> SystemDictionary>>#majorShrink
> MenuItemMorph>>#deselectItem
> Form>>#shapeFill:seedBlock:
> Form>>#borderFormOfWidth:sharpCorners:
> Form>>#pageImage:at:corner:
> Form>>#orderedDither32To16
> Form>>#wipeImage:at:clippingBox:rectForIndex:
> Form>>#fadeImage:at:indexAndMaskDo:
> Form>>#yTallyPixelValue:orNot:
> Form>>#asFormOfDepth:
> Form>>#shapeBorder:width:
> Form>>#mapColors:to:
> Form>>#allocateForm:
> Form>>#replaceColor:withColor:
> Form>>#asGrayScale
> Form>>#smear:distance:
> Form>>#scaledIntoFormOfSize:
> Form>>#makeBWForm:
> Form>>#eraseShape:
> Form>>#readFromOldFormat:
> Form>>#copyBits:from:at:colorMap:
> Form>>#displayResourceFormOn:
> Form>>#copy:
> Form>>#displayScaledOn:
> Form>>#readResourceFrom:
> Form>>#rectangleEnclosingPixelsNotOfColor:
> Form>>#findShapeAroundSeedBlock:
> Form>>#xTallyPixelValue:orNot:
> Form>>#slideImage:at:delta:
> Form>>#pageWarp:at:forward:
> Form>>#anyShapeFill
> Form>>#convexShapeFill:
> Form>>#contentsOfArea:into:
> Form>>#floodFill:at:tolerance:
> Form>>#mapColor:to:
> Form>>#shapeFill:interiorPoint:
> Form>>#colorReduced
> Form>>#fromDisplay:
> Form>>#rotateBy:magnify:smoothing:
> Form>>#displayOnPort:at:
> Form>>#privateFloodFillValue:
> SketchMorph>>#wantsSimpleSketchMorphHandles
> SmallInteger>>#quo:
> SmallInteger>>#digitAt:
> SmallInteger>>#/
> KeyedTree>>#subtrees
> KeyedTree>>#merge:
> KeyedTree>>#copy
> ReadWriteStream>>#hash
> ReadWriteStream>>#=
> MessageSet>>#initializeMessageList:
> MessageSet>>#setClassAndSelectorIn:
> MorphicTransform>>#inverseTransformation
> ChangeList>>#selectConflictsWith
> OBMonticelloPackageNode>>#findClass
> SMLoader>>#reOpen
> InstructionStream>>#skipBackBeforeJump
> Object>>#deepCopy
> PianoRollNoteMorph>>#mouseDown:
> Set>>#collect:
> Set>>#=
> AlignmentMorph>>#canHaveFillStyles
> OBClassNode>>#classHierarchy
> OBClassNode>>#packagesForClassClass
> Rectangle>>#roundTo:
> Rectangle>>#insetOriginBy:cornerBy:
> Rectangle>>#insetBy:
> Rectangle>>#expandBy:
> Rectangle>>#truncated
> Rectangle>>#intersect:
> Rectangle>>#compressed
> Rectangle>>#expandTo:
> Rectangle>>#truncateTo:
> Rectangle>>#rounded
> Rectangle>>#encompass:
> Rectangle>>#expanded
> Rectangle>>#scaleBy:
> Rectangle>>#merge:
> Rectangle>>#compressTo:
> Rectangle>>#quickMerge:
> Rectangle>>#isSelfEvaluating
> Rectangle>>#translateBy:
> Rectangle>>#extendBy:
> Rectangle>>#outsetBy:
> SequenceableCollection>>#hasEqualElements:
> FileDirectoryWrapper>>#contents
> SqueakPage>>#urlNoOverwrite:
> TextComposer>>#composeEachRectangleIn:
> TextComposer>>#slideOneLineDown
> WaveEditor>>#showFFTAtCursor
> WaveEditor>>#showEnvelope
> ColorMap>>#inverseMap
> ColorMap>>#mappingTo:
> Socket>>#receiveDataWithTimeoutInto:startingAt:
> Socket>>#connectTo:port:
> Socket>>#localPort
> Socket>>#waitForConnectionFor:ifTimedOut:
> Socket>>#accept
> Socket>>#waitForSendDoneFor:
> Socket>>#localAddress
> Socket>>#waitFor...
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Feb. 14, 2009
Re: [Pharo-project] unnecessary =, == :)
by Gary Chambers
SystemWindow>>#mouseDown: (actually needed, on first call that property will
almost certainly be nil, set later in the method).
Regards, Gary
----- Original Message -----
From: "Gary Chambers" <gazzaguru2(a)btinternet.com>
To: <Pharo-project(a)lists.gforge.inria.fr>
Sent: Saturday, February 14, 2009 5:12 PM
Subject: Re: [Pharo-project] unnecessary =, == :)
PluggableTextMorph>>#accept (sadly required defence against text setters
that don't return a boolean)
SystemWindow>>#mouseDown: (removed offending line, now obsolete, apparently)
Regards, Gary
----- Original Message -----
From: "Stéphane Ducasse" <stephane.ducasse(a)inria.fr>
To: "Pharo Development" <Pharo-project(a)lists.gforge.inria.fr>
Sent: Saturday, February 14, 2009 3:23 PM
Subject: [Pharo-project] unnecessary =, == :)
> Check for a =, ==, ~=, or ~~ message being sent to true/false or with
> true/false as the argument. Many times these can be eliminated since
> their receivers are already booleans. For example, "anObject isFoo ==
> false" could be replaced with "anObject isFoo not" if isFoo always
> returns a boolean. Sometimes variables might refer to true, false, and
> something else, but this is considered bad style since the variable
> has multiple types.
>
> Project>>#setChangeSet:
> Project>>#isolationSet
> Project>>#compileAll:from:
> Project>>#writeFileNamed:fromDirectory:toServer:
> Project>>#isolationHead
> PNGReadWriter>>#debugging
> ClockMorph>>#addCustomMenuItems:hand:
> ClockMorph>>#step
> ClockMorph>>#toggleShowingSeconds
> ClockMorph>>#toggleShowing24hr
> WorldState>>#interCyclePause:
> Integer>>#quo:
> Integer>>#digitSubtract:
> SimpleServiceEntry>>#useLineAfter
> MorphicUIManager>>#interactiveParserFor:
> OBPluggableListMorph>>#mouseUp:
> PianoRollScoreMorph>>#addCustomMenuItems:hand:
> SystemDictionary>>#abandonSources
> SystemDictionary>>#internalizeSources
> SystemDictionary>>#internalizeChangeLog
> SetTest>>#testRemoveIfAbsent
> SimpleButtonDelayedMenuMorph>>#mouseUp:
> Installer>>#validate
> Installer>>#logErrorDuring:
> SketchEditorMorph>>#verifyState:
> SketchEditorMorph>>#deliverPainting:evt:
> SketchMorph>>#useInterpolation:
> Slider>>#descending
> JoystickMorph>>#autoCenterString
> JoystickMorph>>#button1
> JoystickMorph>>#button2
> SARInstaller>>#errorNoSuchMember:
> MessageSet>>#growable
> HandMorph>>#handleEvent:
> HandMorph>>#fullDrawOn:
> ImageSegment>>#declareAndPossiblyRename:
> PluggableListMorphPlus>>#wantsDroppedMorph:event:
> SUnitTest>>#testRanOnlyOnce
> BitmapFillStyle>>#isTiled
> InstallerMonticello>>#mcDetectFileBlock
> FTPClient>>#login
> Object>>#mustBeBooleanIn:
> Object>>#'~='
> Decompiler>>#pushConstant:
> TextMorphForEditView>>#acceptOnCR
> HostSystemMenusMenuItem>>#shift
> FlapTab>>#inboard
> FlapTab>>#flapShowing
> FlapTab>>#tabSelected
> PluggableTreeMorph>>#wantsDroppedNode:on:
> DisplayScreen>>#deferUpdates:
> OBSystemBrowser>>#defaultBackgroundColor
> SmalltalkImage>>#setPlatformPreferences
> SmalltalkImage>>#snapshot:andQuit:embedded:
> URLMorph>>#mouseUp:
> MultiNewParagraph>>#multiComposeLinesFrom:to:delta:into:priorLines:atY:
> Collection>>#reject:
> TextDiffBuilder>>#hasMultipleMatches
> TrueTest>>#testNot
> TrueTest>>#testInMemory
> TrueTest>>#testAND
> MCFileBasedRepository>>#possiblyNewerVersionsOfAnyOf:
> Process>>#terminate
> ProtoObjectTest>>#testIsNil
> SqueakPage>>#write
> ColorPickerMorph>>#putUpFor:near:
> FalseTest>>#testAnd
> FalseTest>>#testOR
> FalseTest>>#testNot
> FalseTest>>#testAND
> UpdatingStringMorph>>#growable
> UpdatingStringMorph>>#autoAcceptOnFocusLoss
> LanguageEditor>>#selectedTranslationsAt:put:
> Socket>>#setOption:value:
> MultiCompositionScanner>>#setFont
> PositionableStream>>#unCommand
> HTTPSocket>>#logToTranscript
> Number>>#odd
> OBHierarchyBrowser>>#defaultBackgroundColor
> MorphExtension>>#isDefault
> MorphExtension>>#sortedPropertyNames
> MorphExtension>>#printOn:
> MorphExtension>>#hasProperty:
> ObjectOut>>#doesNotUnderstand:
> PluggableTextMorph>>#hasEditingConflicts
> PluggableTextMorph>>#accept
> SimpleSliderMorph>>#truncate
> OBProtocolBrowser>>#defaultBackgroundColor
> SystemWindow>>#mustNotClose
> SystemWindow>>#mouseDown:
> RBReadBeforeWrittenTester>>#read
> RBReadBeforeWrittenTester>>#processBlock:
> RBReadBeforeWrittenTester>>#processStatementNode:
> RBReadBeforeWrittenTester>>#processIfTrueIfFalse:
> GradientFillStyle>>#isRadialFill
> RefactoryTyper>>#typeFor:
> CompiledMethodTest>>#testValueWithReceiverArguments
> OBLazyListMorph>>#handleMouseMove:
> BlockContextTest>>#testSupplyAnswerThroughNestedBlocks
> BlockContextTest>>#testSupplyAnswerUsingTraditionalMatchOfQuestion
> BlockContextTest>>#testSupplySameAnswerToAllQuestions
> BlockContextTest>>#testSupplyAnswerUsingOnlySubstringOfQuestion
> BlockContextTest>>#testSupplySpecificAnswerToQuestion
> BlockContextTest>>#testSupplyAnswerUsingRegexMatchOfQuestion
> ImageMorph>>#isOpaque:
> ProjectSwikiServer>>#acceptsUploads
> PolygonMorph>>#rotateTestFlip:
> PolygonMorph>>#beStraightSegments
> PolygonMorph>>#beSmoothCurve
> BitBlt>>#drawFrom:to:withFirstPoint:
> FileList>>#getSelectedDirectory
> FileList>>#getSelectedFile
> RBParser>>#patchLiteralMessage
> OBMultipleSelectionColumn>>#listSelectionAt:put:
> ServerDirectory>>#upLoadProject:members:retry:
> MorphObjectOut>>#doesNotUnderstand:
> HaloMorph>>#addHandles
> ThumbnailImageMorph>>#togglePopupFeature
> ThumbnailImageMorph>>#handlesMouseDown:
> ThumbnailImageMorph>>#popupFeatureString
> ContextPart>>#jump:if:
> MCWorkingCopy>>#merge:
> FileDoesNotExistException>>#readOnly
> RBLiteralNodeTest>>#testValue
> Prefer...
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________
Pharo-project mailing list
Pharo-project(a)lists.gforge.inria.fr
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Feb. 14, 2009
Re: [Pharo-project] unnecessary =, == :)
by Gary Chambers
PluggableTextMorph>>#accept (sadly required defence against text setters
that don't return a boolean)
SystemWindow>>#mouseDown: (removed offending line, now obsolete, apparently)
Regards, Gary
----- Original Message -----
From: "Stéphane Ducasse" <stephane.ducasse(a)inria.fr>
To: "Pharo Development" <Pharo-project(a)lists.gforge.inria.fr>
Sent: Saturday, February 14, 2009 3:23 PM
Subject: [Pharo-project] unnecessary =, == :)
> Check for a =, ==, ~=, or ~~ message being sent to true/false or with
> true/false as the argument. Many times these can be eliminated since
> their receivers are already booleans. For example, "anObject isFoo ==
> false" could be replaced with "anObject isFoo not" if isFoo always
> returns a boolean. Sometimes variables might refer to true, false, and
> something else, but this is considered bad style since the variable
> has multiple types.
>
> Project>>#setChangeSet:
> Project>>#isolationSet
> Project>>#compileAll:from:
> Project>>#writeFileNamed:fromDirectory:toServer:
> Project>>#isolationHead
> PNGReadWriter>>#debugging
> ClockMorph>>#addCustomMenuItems:hand:
> ClockMorph>>#step
> ClockMorph>>#toggleShowingSeconds
> ClockMorph>>#toggleShowing24hr
> WorldState>>#interCyclePause:
> Integer>>#quo:
> Integer>>#digitSubtract:
> SimpleServiceEntry>>#useLineAfter
> MorphicUIManager>>#interactiveParserFor:
> OBPluggableListMorph>>#mouseUp:
> PianoRollScoreMorph>>#addCustomMenuItems:hand:
> SystemDictionary>>#abandonSources
> SystemDictionary>>#internalizeSources
> SystemDictionary>>#internalizeChangeLog
> SetTest>>#testRemoveIfAbsent
> SimpleButtonDelayedMenuMorph>>#mouseUp:
> Installer>>#validate
> Installer>>#logErrorDuring:
> SketchEditorMorph>>#verifyState:
> SketchEditorMorph>>#deliverPainting:evt:
> SketchMorph>>#useInterpolation:
> Slider>>#descending
> JoystickMorph>>#autoCenterString
> JoystickMorph>>#button1
> JoystickMorph>>#button2
> SARInstaller>>#errorNoSuchMember:
> MessageSet>>#growable
> HandMorph>>#handleEvent:
> HandMorph>>#fullDrawOn:
> ImageSegment>>#declareAndPossiblyRename:
> PluggableListMorphPlus>>#wantsDroppedMorph:event:
> SUnitTest>>#testRanOnlyOnce
> BitmapFillStyle>>#isTiled
> InstallerMonticello>>#mcDetectFileBlock
> FTPClient>>#login
> Object>>#mustBeBooleanIn:
> Object>>#'~='
> Decompiler>>#pushConstant:
> TextMorphForEditView>>#acceptOnCR
> HostSystemMenusMenuItem>>#shift
> FlapTab>>#inboard
> FlapTab>>#flapShowing
> FlapTab>>#tabSelected
> PluggableTreeMorph>>#wantsDroppedNode:on:
> DisplayScreen>>#deferUpdates:
> OBSystemBrowser>>#defaultBackgroundColor
> SmalltalkImage>>#setPlatformPreferences
> SmalltalkImage>>#snapshot:andQuit:embedded:
> URLMorph>>#mouseUp:
> MultiNewParagraph>>#multiComposeLinesFrom:to:delta:into:priorLines:atY:
> Collection>>#reject:
> TextDiffBuilder>>#hasMultipleMatches
> TrueTest>>#testNot
> TrueTest>>#testInMemory
> TrueTest>>#testAND
> MCFileBasedRepository>>#possiblyNewerVersionsOfAnyOf:
> Process>>#terminate
> ProtoObjectTest>>#testIsNil
> SqueakPage>>#write
> ColorPickerMorph>>#putUpFor:near:
> FalseTest>>#testAnd
> FalseTest>>#testOR
> FalseTest>>#testNot
> FalseTest>>#testAND
> UpdatingStringMorph>>#growable
> UpdatingStringMorph>>#autoAcceptOnFocusLoss
> LanguageEditor>>#selectedTranslationsAt:put:
> Socket>>#setOption:value:
> MultiCompositionScanner>>#setFont
> PositionableStream>>#unCommand
> HTTPSocket>>#logToTranscript
> Number>>#odd
> OBHierarchyBrowser>>#defaultBackgroundColor
> MorphExtension>>#isDefault
> MorphExtension>>#sortedPropertyNames
> MorphExtension>>#printOn:
> MorphExtension>>#hasProperty:
> ObjectOut>>#doesNotUnderstand:
> PluggableTextMorph>>#hasEditingConflicts
> PluggableTextMorph>>#accept
> SimpleSliderMorph>>#truncate
> OBProtocolBrowser>>#defaultBackgroundColor
> SystemWindow>>#mustNotClose
> SystemWindow>>#mouseDown:
> RBReadBeforeWrittenTester>>#read
> RBReadBeforeWrittenTester>>#processBlock:
> RBReadBeforeWrittenTester>>#processStatementNode:
> RBReadBeforeWrittenTester>>#processIfTrueIfFalse:
> GradientFillStyle>>#isRadialFill
> RefactoryTyper>>#typeFor:
> CompiledMethodTest>>#testValueWithReceiverArguments
> OBLazyListMorph>>#handleMouseMove:
> BlockContextTest>>#testSupplyAnswerThroughNestedBlocks
> BlockContextTest>>#testSupplyAnswerUsingTraditionalMatchOfQuestion
> BlockContextTest>>#testSupplySameAnswerToAllQuestions
> BlockContextTest>>#testSupplyAnswerUsingOnlySubstringOfQuestion
> BlockContextTest>>#testSupplySpecificAnswerToQuestion
> BlockContextTest>>#testSupplyAnswerUsingRegexMatchOfQuestion
> ImageMorph>>#isOpaque:
> ProjectSwikiServer>>#acceptsUploads
> PolygonMorph>>#rotateTestFlip:
> PolygonMorph>>#beStraightSegments
> PolygonMorph>>#beSmoothCurve
> BitBlt>>#drawFrom:to:withFirstPoint:
> FileList>>#getSelectedDirectory
> FileList>>#getSelectedFile
> RBParser>>#patchLiteralMessage
> OBMultipleSelectionColumn>>#listSelectionAt:put:
> ServerDirectory>>#upLoadProject:members:retry:
> MorphObjectOut>>#doesNotUnderstand:
> HaloMorph>>#addHandles
> ThumbnailImageMorph>>#togglePopupFeature
> ThumbnailImageMorph>>#handlesMouseDown:
> ThumbnailImageMorph>>#popupFeatureString
> ContextPart>>#jump:if:
> MCWorkingCopy>>#merge:
> FileDoesNotExistException>>#readOnly
> RBLiteralNodeTest>>#testValue
> Prefer...
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Feb. 14, 2009
Re: [Pharo-project] undeclared variables
by Stéphane Ducasse
thanks gary.
Project should go away anyway.
Stef
On Feb 14, 2009, at 5:29 PM, Gary Chambers wrote:
> Will be fixed (#sounds/#sounds: being redundant after refactoring)
> in next
> version of Polymorph. Project>>finalEnterActions is trickier (as
> ProjectNavigationMorph has been removed). The Polymorph override is
> there to
> deal with some peoples (Squeak) gripes about taskbars in projects.
>
> Regards, Gary
>
> ----- Original Message -----
> From: "Stéphane Ducasse" <stephane.ducasse(a)inria.fr>
> To: "Pharo Development" <Pharo-project(a)lists.gforge.inria.fr>
> Sent: Saturday, February 14, 2009 1:16 PM
> Subject: [Pharo-project] undeclared variables
>
>
>> Hi all
>>
>> It would be good to fix such problems in their respective packages.
>>
>> Stef
>>
>> Checks for references to a variable in the Undeclared dictionary. If
>> you remove a variable from a class that is accessed by a method, you
>> will create an undeclared variable reference for those methods that
>> accessed the variable.
>>
>> OBEnhancementColumn>>#selection:
>> Project>>#finalEnterActions
>> OBClosableDefinitionPanel>>#commands
>> OBTextMorphEditorWithShout>>#correctFrom:to:with:
>> OBCollaboratorsSearchNode>>#classes
>> MCPackageManager>>#modifiedTimeStamp
>> UITheme>>#sounds:
>> UITheme>>#sounds
>> InstallerCruft>>#user
>> InstallerCruft>>#createRBforBug:
>> InstallerCruft>>#user:
>> OBEnrichedDefinitionPanel>>#selectReferencingCodeNodes:
>> OBEnrichedDefinitionPanel>>#accept:notifying:
>> OBMethodInvocationSearchNode>>#classes
>> PasteUpMorph>>#scriptorForTextualScript:ofPlayer:
>> Installer>>#installMCcs:from:
>> Installer>>#printOn:
>> OBEnrichedMethodInvocationNode>>#source
>> OBEnrichedMethodInvocationNode>>#modelMethod
>> OBEnrichedMethodInvocationNode>>#invokingClasses
>> OBTreeColumnTests>>#test09JumpToE2
>> OBTreeColumnTests>>#test12JumpToD3
>> OBTreeColumnTests>>#test10JumpToD1
>> OBTreeColumnTests>>#test01AllInOneColumn
>> OBTreeColumnTests>>#test17JumpToG1
>> OBTreeColumnTests>>#test06JumpToC2
>> OBTreeColumnTests>>#test19JumpToA1
>> OBTreeColumnTests>>#test02AllInOneColumn
>> OBTreeColumnTests>>#test04JumpToB2
>> OBTreeColumnTests>>#test14JumpToF1
>> OBTreeColumnTests>>#test08JumpToE1
>> OBTreeColumnTests>>#test07JumpToC1
>> OBTreeColumnTests>>#test11JumpToD2
>> OBTreeColumnTests>>#test13JumpToD4
>> OBTreeColumnTests>>#test03NodeWithBothTreeChildrenAndDefaultChildren
>> OBTreeColumnTests>>#test05JumpToB1
>> OBTreeColumnTests>>#test18JumpToG2
>> OBTreeColumnTests>>#columnPanelABCDEFGH
>> OBTreeColumnTests>>#test16JumpToH1
>> OBTreeColumnTests>>#test15JumpToF2
>> OBEnrichedMethodNode>>#source
>> OBEnrichedMethodNode>>#updateModelMethod
>> OBEnrichedClassNode>>#formatter
>> DictionaryTest>>#flattenOnStream
>> OBEnhPackageNodeTest>>#testPackage
>> OBEnhPackageNodeTest>>#testTemplate
>> OBEnhPackageNodeTest>>#setUp
>> OBPosition>>#asTreePosition
>> Refactoring class>>#initializeRefactoringOptions
>> OBEnrichedMessageNode class>>#on:inMethod:inClass:
>>
>> _______________________________________________
>> Pharo-project mailing list
>> Pharo-project(a)lists.gforge.inria.fr
>> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
>
> _______________________________________________
> Pharo-project mailing list
> Pharo-project(a)lists.gforge.inria.fr
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
Feb. 14, 2009