<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Mar 13, 2017 at 6:01 PM, Levente Uzonyi <span dir="ltr"><<a href="mailto:leves@caesar.elte.hu" target="_blank">leves@caesar.elte.hu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Done. It would be nice to know which change caused the problem.<br></blockquote><div><br></div><div>Will try and take a look.  Right now v v busy with callbacks, and Clément is here in SF for his annual visit for us to work on Sista.  So time is of the essence :-)</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Levente<br>
<br>
On Mon, 13 Mar 2017, Eliot Miranda wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
<br>
On Mon, Mar 13, 2017 at 5:59 PM, Levente Uzonyi <<a href="mailto:leves@caesar.elte.hu" target="_blank">leves@caesar.elte.hu</a>> wrote:<br>
      Did it help?<br>
<br>
<br>
Post 17033:<br>
4575 run, 4304 passes, 108 expected failures, 30 failures, 133 errors, 0 unexpected passes<br>
Post 17033 plus inbox Files-ul.168<br>
4549 run, 4405 passes, 105 expected failures, 27 failures, 12 errors, 0 unexpected passes<br>
<br>
Looks like you should move  Files-ul.168 to trunk asap.<br>
<br>
<br>
      Levente<br>
<br>
      On Mon, 13 Mar 2017, Eliot Miranda wrote:<br>
<br>
<br>
<br>
            On Mon, Mar 13, 2017 at 5:30 PM, Levente Uzonyi <<a href="mailto:leves@caesar.elte.hu" target="_blank">leves@caesar.elte.hu</a>> wrote:<br>
                  I have updated Files-ul.168 to the Inbox with those methods reverted<br>
                  along with a third one.<br>
<br>
<br>
            Thanks man!<br>
             <br>
<br>
<br>
                  Levente<br>
<br>
                  On Tue, 14 Mar 2017, Levente Uzonyi wrote:<br>
<br>
                        Hi Eliot,<br>
<br>
                        all of those new errors seem to be related to files, so I presume they are related to the changes of the Files package:<br>
<br>
                        "<br>
                        FileDirectory changes:<br>
<br>
                        - implemented #directoryContentsFor:do: in all subclasses of FileDirectory, where #directoryContentsFor: was implemented<br>
                        - introduced #entriesDo: based on the method above<br>
                        - rewrote methods sending #entries to use #entriesDo: instead<br>
                        - simplified DirectoryEntryDirectory >> #asFileDirectory<br>
                        - introduced #hasEntries<br>
                        - #directoryEntryForName: signals InvalidDirectoryError as suggested by a comment from 2007<br>
                        - other minor optimizations<br>
                        "<br>
<br>
                        I suspect that either the DirectoryEntryDirectory >> #asFileDirectory or FileDirectory >> #directoryEntryForName: is responsible for the errors, but it should be easy to<br>
            find the cause<br>
                        by debugging any of those new errors.<br>
<br>
                        Levente<br>
<br>
                        On Mon, 13 Mar 2017, Eliot Miranda wrote:<br>
<br>
                              Hi Levente,<br>
<br>
                              On Mon, Mar 13, 2017 at 4:44 PM, Levente Uzonyi <<a href="mailto:leves@caesar.elte.hu" target="_blank">leves@caesar.elte.hu</a>> wrote:<br>
                                    Hi Eliot,<br>
<br>
                                    I ran the tests 3 times and haven't seen any new test failures or errors.<br>
                                    However there are some other changes in the pack unrelated to SortedCollection, which I couldn't test on platforms other than Linux, but may behave differently<br>
            on<br>
                              other platforms (e.g. changes in<br>
                                    Files).<br>
<br>
<br>
                              First of all let me apologise; my stats were wrong.  I see<br>
                                  4527 run, 4383 passes, 106 expected failures, 26 failures, 12 errors, 0 unexpected passes<br>
                              before whack-a-mole and<br>
                                  4575 run, 4308 passes, 108 expected failures, 26 failures, 133 errors, 0 unexpected passes<br>
                              after.  And this is on Mac OS X using the 64-bit VM and image.  Here's the pre-whack-a-mole full report<br>
<br>
<br>
<br>
                                    Can you send me the list of failures and errors you see?<br>
<br>
<br>
                              Pre whack-a-mole<br>
                              failures: {AllocationTest>>#testOutOfMem<wbr>orySignal . ClassVarScopeTest>>#testDefine<wbr>dClassMethodInGrandchild . ClassVarScopeTest>>#testDefine<wbr>dInstanceMethodInChild .<br>
                              ClassVarScopeTest>>#testDefine<wbr>dInstanceMethodInGrandchild . ClassVarScopeTest>>#testInheri<wbr>tedClassMethodInGrandchild .<br>
                              ClassVarScopeTest>>#testInheri<wbr>tedInstanceMethodInGrandchild .<br>
                              DateAndTimeLeapTest>>#testAsSe<wbr>conds . DecompilerTests>>#testDecompil<wbr>erInClassesENtoEZ . DecompilerTests>>#testDecompil<wbr>erInClassesPAtoPM .<br>
                              IslandVMTweaksTestCase>>#testF<wbr>orgivingPrims .<br>
                              MorphicUIManagerTest>>#testSho<wbr>wAllBinParts . MultiByteFileStreamTest>>#test<wbr>LineEndConversion . PackageDependencyTest>>#testEt<wbr>oys . PackageDependencyTest>>#testMo<wbr>rphic<br>
            .<br>
                              PackageDependencyTest>>#testSo<wbr>und .<br>
                              PackageDependencyTest>>#testSy<wbr>stem . ReleaseTest>>#testClassesSyste<wbr>mCategory . ReleaseTest>>#testMethodsWithU<wbr>nboundGlobals . ReleaseTest>>#testNoObsoleteCl<wbr>asses .<br>
                              ReleaseTest>>#testUndeclared .<br>
                              SocketTest>>#testSocketReuse . SocketTest>>#testUDP . UnixProcessAccessorTestCase>>#<wbr>testRedirectStdOutTo . UnixProcessTestCase>>#testCatA<wbr>File .<br>
                              UnixProcessTestCase>>#testRunC<wbr>ommand .<br>
                              WebClientServerTest>>#testList<wbr>enOnInterface}<br>
<br>
                              errors: {BitmapStreamTests>>#testMatri<wbr>xTransform2x3WithImageSegment . BitmapStreamTests>>#testShortI<wbr>ntegerArrayWithImageSegment .<br>
                              BitmapStreamTests>>#testShortP<wbr>ointArrayWithImageSegment .<br>
                              BitmapStreamTests>>#testShortR<wbr>unArrayWithImageSegment . BitmapStreamTests>>#testWordAr<wbr>rayWithImageSegment . DecompilerTests>>#testDecompil<wbr>erInClassesSAtoSM .<br>
                              LangEnvBugs>>#testIsFontAvaila<wbr>ble .<br>
                              LangEnvBugs>>#testIsFontAvaila<wbr>ble . LocaleTest>>#testIsFontAvailab<wbr>le . SqueakSSLTest>>#testSSLSockets . SqueakSSLTest>>#testSocketAcce<wbr>pt .<br>
                              SqueakSSLTest>>#testSocketConn<wbr>ect}<br>
<br>
                              Post whack-a-mole<br>
                              failures: {AllocationTest>>#te<wbr>stOutOfMemorySignal . ClassVarScopeTest>>#testDefine<wbr>dInstanceMethodInChild . ClassVarScopeTest>>#testDefine<wbr>dInstanceMethodInGrandchild .<br>
                              ClassVarScopeTest>>#testInheri<wbr>tedClassMethodInGrandchild . ClassVarScopeTest>>#testInheri<wbr>tedInstanceMethodInGrandchild . DateAndTimeLeapTest>>#testAsSe<wbr>conds .<br>
                              DecompilerTests>>#testDecompil<wbr>erInClassesENtoEZ .<br>
                              DecompilerTests>>#testDecompil<wbr>erInClassesPAtoPM . DecompilerTests>>#testDecompil<wbr>erInClassesTAtoTM . MorphicUIManagerTest>>#testSho<wbr>wAllBinParts .<br>
                              MultiByteFileStreamTest>>#test<wbr>LineEndConversion .<br>
                              PackageDependencyTest>>#testEt<wbr>oys . PackageDependencyTest>>#testMo<wbr>rphic . PackageDependencyTest>>#testSU<wbr>nitGUI . PackageDependencyTest>>#testSo<wbr>und .<br>
                              PackageDependencyTest>>#testSy<wbr>stem .<br>
                              PackageDependencyTest>>#testTo<wbr>ols . ReleaseTest>>#testClassesSyste<wbr>mCategory . ReleaseTest>>#testMethodsWithU<wbr>nboundGlobals . ReleaseTest>>#testNoObsoleteCl<wbr>asses .<br>
                              ReleaseTest>>#testSuperSubclas<wbr>sReferences .<br>
                              ReleaseTest>>#testUndeclared . SocketTest>>#testSocketReuse . SocketTest>>#testUDP . UnixProcessTestCase>>#testCatA<wbr>File . WebClientServerTest>>#testList<wbr>enOnInterface}<br>
<br>
                              errors: {BitmapStreamTests>>#t<wbr>estMatrixTransform2x3WithImage<wbr>Segment . BitmapStreamTests>>#testShortI<wbr>ntegerArrayWithImageSegment .<br>
                              BitmapStreamTests>>#testShortP<wbr>ointArrayWithImageSegment .<br>
                              BitmapStreamTests>>#testShortR<wbr>unArrayWithImageSegment . BitmapStreamTests>>#testWordAr<wbr>rayWithImageSegment . BrowserTest>>#testFileOutMessa<wbr>geCategories .<br>
                              DecompilerTests>>#testDecompil<wbr>erInClassesSAtoSM .<br>
                              FileDirectoryTest>>#testAttemp<wbr>tExistenceCheckWhenFile . FileDirectoryTest>>#testDirect<wbr>oryExists . FileDirectoryTest>>#testDirect<wbr>oryExistsWhenLikeNamedFileExis<wbr>ts .<br>
                              FileDirectoryTest>>#testNonExi<wbr>stentDirectory<br>
                              . FileDirectoryTest>>#testOldFil<wbr>eOrNoneNamed . FileListTest>>#testServicesFor<wbr>FileEnding . FileStreamTest>>#testCachingNe<wbr>xtChunkPut .<br>
                              FileStreamTest>>#testCachingNe<wbr>xtChunkPut .<br>
                              FileStreamTest>>#testDetectFil<wbr>eDo . FileStreamTest>>#testFileTrunc<wbr>ation . FileStreamTest>>#testFileTrunc<wbr>ation . FileStreamTest>>#testNextChunk<wbr>OutOfBounds .<br>
                              FileStreamTest>>#testNextChunk<wbr>OutOfBounds .<br>
                              FileStreamTest>>#testNextLine . FileStreamTest>>#testPositionP<wbr>astEndIsAtEnd . FileStreamTest>>#testReadIntoS<wbr>tartingAtCount . LangEnvBugs>>#testIsFontAvaila<wbr>ble .<br>
                              LangEnvBugs>>#testIsFontAvaila<wbr>ble .<br>
                              LocaleTest>>#testIsFontAvailab<wbr>le . MCDictionaryRepositoryTest>>#t<wbr>estAddAndLoad . MCDictionaryRepositoryTest>>#t<wbr>estIncludesName .<br>
                              MCDictionaryRepositoryTest>>#t<wbr>estStoreAndLoad .<br>
                              MCDirectoryRepositoryTest>>#te<wbr>stAddAndLoad . MCDirectoryRepositoryTest>>#te<wbr>stIncludesName . MCDirectoryRepositoryTest>>#te<wbr>stStoreAndLoad .<br>
                              MCMczInstallerTest>>#testInsta<wbr>llFromFile .<br>
                              MCMczInstallerTest>>#testInsta<wbr>llFromFile . MCMczInstallerTest>>#testInsta<wbr>llFromStream . MCWorkingCopyTest>>#testAncest<wbr>orMerge . MCWorkingCopyTest>>#testBackpo<wbr>rt .<br>
                              MCWorkingCopyTest>>#testDouble<wbr>RepeatedMerge .<br>
                              MCWorkingCopyTest>>#testMergeI<wbr>ntoImageWithNoChanges . MCWorkingCopyTest>>#testMergeI<wbr>ntoUnmodifiedImage . MCWorkingCopyTest>>#testOptimi<wbr>zedLoad .<br>
                              MCWorkingCopyTest>>#testRedund<wbr>antMerge .<br>
                              MCWorkingCopyTest>>#testRepeat<wbr>edMerge . MCWorkingCopyTest>>#testSelect<wbr>iveBackport . MCWorkingCopyTest>>#testSimple<wbr>Merge . MCWorkingCopyTest>>#testSnapsh<wbr>otAndLoad .<br>
                              MultiByteFileStreamTest>>#test<wbr>AsciiBackChunk<br>
                              . MultiByteFileStreamTest>>#test<wbr>BinaryUpTo . MultiByteFileStreamTest>>#test<wbr>LineEnding . MultiByteFileStreamTest>>#test<wbr>LineEndingChunk .<br>
                              MultiByteFileStreamTest>>#test<wbr>LineEndingWithWideStrings .<br>
                              MultiByteFileStreamTest>>#test<wbr>NextLine . MultiByteFileStreamTest>>#test<wbr>NextPutAllStartingAt . MultiByteFileStreamTest>>#test<wbr>NonAsciiBackChunk .<br>
                              PNGReadWriterTest>>#test16Bit .<br>
                              PNGReadWriterTest>>#test16BitD<wbr>isplay . PNGReadWriterTest>>#test16BitR<wbr>eversed . PNGReadWriterTest>>#test1Bit . PNGReadWriterTest>>#test1BitDi<wbr>splay .<br>
                              PNGReadWriterTest>>#test1BitRe<wbr>versed .<br>
                              PNGReadWriterTest>>#test2Bit . PNGReadWriterTest>>#test2BitDi<wbr>splay . PNGReadWriterTest>>#test2BitRe<wbr>versed . PNGReadWriterTest>>#test32Bit .<br>
                              PNGReadWriterTest>>#test32BitD<wbr>isplay .<br>
                              PNGReadWriterTest>>#test32BitR<wbr>eversed . PNGReadWriterTest>>#test4Bit . PNGReadWriterTest>>#test4BitDi<wbr>splay . PNGReadWriterTest>>#test4BitRe<wbr>versed .<br>
                              PNGReadWriterTest>>#test8Bit .<br>
                              PNGReadWriterTest>>#test8BitDi<wbr>splay . PNGReadWriterTest>>#test8BitRe<wbr>versed . PNGReadWriterTest>>#testAlphaC<wbr>oding . PNGReadWriterTest>>#testBlack1<wbr>6 .<br>
                              PNGReadWriterTest>>#testBlack3<wbr>2 .<br>
                              PNGReadWriterTest>>#testBlack8 . PNGReadWriterTest>>#testBlue16 . PNGReadWriterTest>>#testBlue32 . PNGReadWriterTest>>#testBlue8 . PNGReadWriterTest>>#testGreen1<wbr>6 .<br>
                              PNGReadWriterTest>>#testGreen3<wbr>2 .<br>
                              PNGReadWriterTest>>#testGreen8 . PNGReadWriterTest>>#testRed16 . PNGReadWriterTest>>#testRed32 . PNGReadWriterTest>>#testRed8 . SqueakSSLTest>>#testSSLSockets .<br>
                              SqueakSSLTest>>#testSocketAcce<wbr>pt .<br>
                              SqueakSSLTest>>#testSocketConn<wbr>ect . SystemChangeFileTest>>#testCat<wbr>egoryAdded . SystemChangeFileTest>>#testCat<wbr>egoryAdded .<br>
            SystemChangeFileTest>>#testCat<wbr>egoryAddedBefore .<br>
                              SystemChangeFileTest>>#testCat<wbr>egoryAddedBefore . SystemChangeFileTest>>#testCat<wbr>egoryRemoved . SystemChangeFileTest>>#testCat<wbr>egoryRemoved .<br>
                              SystemChangeFileTest>>#testCat<wbr>egoryRenamed .<br>
                              SystemChangeFileTest>>#testCat<wbr>egoryRenamed . SystemChangeFileTest>>#testCla<wbr>ssAdded . SystemChangeFileTest>>#testCla<wbr>ssAdded . SystemChangeFileTest>>#testCla<wbr>ssCommented<br>
            .<br>
                              SystemChangeFileTest>>#testCla<wbr>ssCommented . SystemChangeFileTest>>#testCla<wbr>ssModified . SystemChangeFileTest>>#testCla<wbr>ssModified .<br>
                              SystemChangeFileTest>>#testCla<wbr>ssRecategorized .<br>
                              SystemChangeFileTest>>#testCla<wbr>ssRecategorized . SystemChangeFileTest>>#testCla<wbr>ssRemoved . SystemChangeFileTest>>#testCla<wbr>ssRemoved .<br>
            SystemChangeFileTest>>#testCla<wbr>ssRenamed<br>
                              .<br>
                              SystemChangeFileTest>>#testCla<wbr>ssRenamed . SystemChangeFileTest>>#testExp<wbr>ressionDoIt . SystemChangeFileTest>>#testExp<wbr>ressionDoIt .<br>
            SystemChangeFileTest>>#testMet<wbr>hodAdded .<br>
                              SystemChangeFileTest>>#testMet<wbr>hodAdded . SystemChangeFileTest>>#testMet<wbr>hodModified . SystemChangeFileTest>>#testMet<wbr>hodModified .<br>
                              SystemChangeFileTest>>#testMet<wbr>hodRecategorized .<br>
                              SystemChangeFileTest>>#testMet<wbr>hodRecategorized . SystemChangeFileTest>>#testMet<wbr>hodRemoved . SystemChangeFileTest>>#testMet<wbr>hodRemoved .<br>
                              SystemChangeFileTest>>#testPro<wbr>tocolAdded .<br>
                              SystemChangeFileTest>>#testPro<wbr>tocolAdded . SystemChangeFileTest>>#testPro<wbr>tocolDefault . SystemChangeFileTest>>#testPro<wbr>tocolDefault .<br>
                              SystemChangeFileTest>>#testPro<wbr>tocolRemoved .<br>
                              SystemChangeFileTest>>#testPro<wbr>tocolRemoved . SystemChangeFileTest>>#testPro<wbr>tocolRenamed . SystemChangeFileTest>>#testPro<wbr>tocolRenamed .<br>
                              TraitFileOutTest>>#testCondens<wbr>eChanges .<br>
                              TraitFileOutTest>>#testFileOut<wbr>Category . TraitFileOutTest>>#testFileOut<wbr>Trait . UnixProcessAccessorTestCase>>#<wbr>testDupTo .<br>
            UnixProcessAccessorTestCase>>#<wbr>testRedirectStdOutTo<br>
                              .<br>
                              UnixProcessTestCase>>#testCatF<wbr>romFileToFiles . UnixProcessTestCase>>#testRunC<wbr>ommand}<br>
<br>
                              And all those duplications confuse me.  And the sources seem to have been killed by running the tests.<br>
<br>
                              HTH<br>
<br>
                               <br>
<br>
<br>
                                    Levente<br>
<br>
                                    On Mon, 13 Mar 2017, Eliot Miranda wrote:<br>
<br>
                                          Hi Levente,<br>
                                              the SortedCollection whack-a-mole [ :-) :-) ] update appears to have caused a significant uptick in Squeak trunk test suite errors, from about 26 to<br>
            over<br>
                              80.  Are you aware of<br>
                                          this?  Are you addressing<br>
                                          the errors?<br>
<br>
                                          I was a little bit inconvenienced by this because I was testing Slang changes to the VM and mistook these errors as evidence of bugs in my Slang changes. <br>
                              That's life and I'm happy to<br>
                                          accept the situation. <br>
                                          But I would like to see the errors come back down to around 26 or less :-)<br>
<br>
                                          Cheers<br>
                                          Eliot<br>
<br>
                                          On Mon, Mar 13, 2017 at 8:00 AM, <<a href="mailto:commits@source.squeak.org" target="_blank">commits@source.squeak.org</a>> wrote:<br>
                                                Levente Uzonyi uploaded a new version of System to project The Trunk:<br>
                                                <a href="http://source.squeak.org/trunk/System-ul.932.mcz" rel="noreferrer" target="_blank">http://source.squeak.org/trunk<wbr>/System-ul.932.mcz</a><br>
<br>
                                                ==================== Summary ====================<br>
<br>
                                                Name: System-ul.932<br>
                                                Author: ul<br>
                                                Time: 13 March 2017, 3:10:17.453603 pm<br>
                                                UUID: 7a305614-9a4b-47f8-a68f-79fcf6<wbr>f90a80<br>
                                                Ancestors: System-eem.931<br>
<br>
                                                - SortedCollection Whack-a-mole<br>
                                                - introduced #classVarNames and #classInstVarNames in PseudoClass, because they had senders<br>
                                                - removed #startTimerInterruptWatcher from messages to keep lists<br>
<br>
                                                =============== Diff against System-eem.931 ===============<br>
<br>
                                                Item was changed:<br>
                                                  ----- Method: ChangeSet class>>traitsOrder: (in category 'fileIn/Out') -----<br>
                                                  traitsOrder: aCollection<br>
                                                        "Answer an OrderedCollection. The traits<br>
                                                        are ordered so they can be filed in."<br>
<br>
                                                +       ^aCollection sorted: [:t1 :t2 |<br>
                                                -       |  traits |<br>
                                                -       traits := aCollection asSortedCollection: [:t1 :t2 |<br>
                                                                (t1 isBaseTrait and: [t1 classTrait == t2]) or: [<br>
                                                                        (t2 traitComposition allTraits includes: t1) or: [<br>
                                                +                               (t1 traitComposition allTraits includes: t2) not]]]!<br>
                                                -                               (t1 traitComposition allTraits includes: t2) not]]].<br>
                                                -       ^traits asArray!<br>
<br>
                                                Item was changed:<br>
                                                  ----- Method: ChangeSet>>changedMessageList (in category 'method changes') -----<br>
                                                  changedMessageList<br>
                                                        "Used by a message set browser to access the list view information."<br>
<br>
                                                        | messageList |<br>
                                                        messageList := OrderedCollection new.<br>
                                                        changeRecords associationsDo: [:clAssoc | | classNameInParts classNameInFull |<br>
                                                                classNameInFull := clAssoc key asString.<br>
                                                                classNameInParts := classNameInFull findTokens: ' '.<br>
<br>
                                                                (clAssoc value allChangeTypes includes: #comment) ifTrue:<br>
                                                                        [messageList add:<br>
                                                                                (MethodReference new<br>
                                                                                        setClassSymbol: classNameInParts first asSymbol<br>
                                                                                        classIsMeta: false<br>
                                                                                        methodSymbol: #Comment<br>
                                                                                        stringVersion: classNameInFull, ' Comment')].<br>
<br>
                                                                clAssoc value methodChangeTypes associationsDo: [:mAssoc |<br>
                                                                        (#(remove addedThenRemoved) includes: mAssoc value) ifFalse:<br>
                                                                                [messageList add:<br>
                                                                                        (MethodReference new<br>
                                                                                                setClassSymbol: classNameInParts first asSymbol<br>
                                                                                                classIsMeta: classNameInParts size > 1<br>
                                                                                                methodSymbol: mAssoc key<br>
                                                                                                stringVersion: classNameInFull, ' ' , mAssoc key)]]].<br>
                                                +       ^ messageList sort!<br>
                                                -       ^ messageList asSortedArray!<br>
<br>
                                                Item was changed:<br>
                                                  ----- Method: ChangeSet>>checkForUncommented<wbr>Classes (in category 'fileIn/Out') -----<br>
                                                  checkForUncommentedClasses<br>
                                                        "Check to see if any classes involved in this change set do not have class comments.  Open up a browser showing all such classes."<br>
<br>
                                                        | aList |<br>
                                                        aList := self changedClasses<br>
                                                                select:<br>
                                                                        [:aClass | aClass theNonMetaClass organization classComment isEmptyOrNil]<br>
                                                                thenCollect:<br>
                                                                        [:aClass  | aClass theNonMetaClass name].<br>
<br>
                                                        aList size > 0<br>
                                                                ifFalse:<br>
                                                                        [^ self inform: 'All classes involved in this change set have class comments']<br>
                                                                ifTrue:<br>
                                                +                       [ToolSet openClassListBrowser: aList asSet sorted title: 'Classes in Change Set ', self name, ': classes that lack class<br>
                              comments']!<br>
                                                -                       [ToolSet openClassListBrowser: aList asSet asSortedArray title: 'Classes in Change Set ', self name, ': classes that lack<br>
            class<br>
                              comments']!<br>
<br>
                                                Item was changed:<br>
                                                  ----- Method: ChangeSet>>fileOutOn: (in category 'fileIn/Out') -----<br>
                                                  fileOutOn: stream<br>
                                                        "Write out all the changes the receiver knows about"<br>
<br>
                                                        | classList traits classes traitList list |<br>
                                                        (self isEmpty and: [stream isKindOf: FileStream])<br>
                                                                ifTrue: [self inform: 'Warning: no changes to file out'].<br>
<br>
                                                        traits := self changedClasses reject: [:each | each isBehavior].<br>
                                                        classes := self changedClasses select: [:each | each isBehavior].<br>
                                                        traitList := self class traitsOrder: traits asOrderedCollection.<br>
                                                        classList := self class superclassOrder: classes asOrderedCollection.<br>
                                                        list := OrderedCollection new<br>
                                                                addAll: traitList;<br>
                                                                addAll: classList;<br>
                                                                yourself.<br>
<br>
                                                        "First put out rename, max classDef and comment changes."<br>
                                                        list do: [:aClass | self fileOutClassDefinition: aClass on: stream].<br>
<br>
                                                        "Then put out all the method changes"<br>
                                                        list do: [:aClass | self fileOutChangesFor: aClass on: stream].<br>
<br>
                                                        "Finally put out removals, final class defs and reorganization if any"<br>
                                                        list reverseDo: [:aClass | self fileOutPSFor: aClass on: stream].<br>
<br>
                                                +       self classRemoves sort do:<br>
                                                -       self classRemoves asSortedCollection do:<br>
                                                                [:aClassName | stream nextChunkPut: 'Smalltalk removeClassNamed: #', aClassName; cr].!<br>
<br>
                                                Item was changed:<br>
                                                  ----- Method: InternalTranslator>>fileOutOn:<wbr>keys:withBOM: (in category 'fileIn/fileOut') -----<br>
                                                  fileOutOn: aStream keys: keys withBOM: bomFlag<br>
                                                        "self current fileOutOn: Transcript. Transcript endEntry"<br>
                                                        self fileOutHeaderOn: aStream withBOM: bomFlag.<br>
                                                        (keys<br>
                                                +               ifNil: [generics keys sort])<br>
                                                -               ifNil: [generics keys asSortedCollection])<br>
                                                                do: [:key | self<br>
                                                                                nextChunkPut: (generics associationAt: key)<br>
                                                                                on: aStream].<br>
                                                        keys<br>
                                                                ifNil: [self untranslated<br>
                                                                                do: [:each | self nextChunkPut: each -> '' on: aStream]].<br>
                                                        aStream nextPut: $!!;<br>
                                                                 cr!<br>
<br>
                                                Item was changed:<br>
                                                  ----- Method: MczInstaller>>install (in category 'installation') -----<br>
                                                  install<br>
                                                +<br>
                                                -       | sources |<br>
                                                        zip := ZipArchive new.<br>
                                                        zip readFrom: stream.<br>
                                                        self checkDependencies ifFalse: [^false].<br>
                                                        self recordVersionInfo.<br>
                                                +       (zip membersMatching: 'snapshot/*')<br>
                                                +               sort: [:a :b | a fileName < b fileName];<br>
                                                +               do: [:src | self installMember: src].!<br>
                                                -       sources := (zip membersMatching: 'snapshot/*')<br>
                                                -                               asSortedCollection: [:a :b | a fileName < b fileName].<br>
                                                -       sources do: [:src | self installMember: src].!<br>
<br>
                                                Item was changed:<br>
                                                  ----- Method: Preferences class>>giveHelpWithPreferences (in category 'support') -----<br>
                                                  giveHelpWithPreferences<br>
                                                        "Open up a workspace with explanatory info in it about Preferences"<br>
<br>
                                                        | aString |<br>
                                                        aString := String streamContents: [:aStream |<br>
                                                                aStream nextPutAll:<br>
<br>
                                                  'Many aspects of the system are governed by the settings of various "Preferences".<br>
<br>
                                                  Click on any of brown tabs at the top of the panel to see all the preferences in that category.<br>
                                                  Or type in to the box above the Search button, then hit Search, and all Preferences matching whatever you typed in will appear in the "search<br>
            results"<br>
                              category.  A preference<br>
                                          is considered to<br>
                                                match your search if either its name matches the characters *or* if anything in the balloon help provided for the preferences matches the search<br>
            text.<br>
<br>
                                                  To find out more about any particular Preference, hold the mouse over it for a moment and balloon help will appear.  Also, a complete list of all<br>
            the<br>
                              Preferences, with<br>
                                          documentation for each, is<br>
                                                included below.<br>
<br>
                                                  Preferences whose names are in shown in bold in the Preferences Panel are designated as being allowed to vary from project to project; those whose<br>
            name<br>
                              are not in bold are<br>
                                          "global", which is to<br>
                                                say, they apply equally whatever project you are in.<br>
<br>
                                                  Click on the name of any preference to get a menu which allows you to *change* whether the preference should vary from project to project or<br>
            should be<br>
                              global, and also allows<br>
                                          you to browse all<br>
                                                the senders of the preference, and to discover all the categories under which the preference has been classified, and to be handed a button that you<br>
            can<br>
                              drop wherever you please<br>
                                          that will control<br>
                                                the preference.<br>
<br>
                                                  If you like all your current Preferences settings, you may wish to hit the "Save Current Settings as my Personal Preferences" button.  Once you<br>
            have<br>
                              done that, you can at any<br>
                                          point in the future<br>
                                                hit "Restore my Personal Preferences" and all your saved settings will get restored immediately.<br>
<br>
                                                  Also, you can use "themes" to set multiple preferences all at once; click on the "change theme..." button in the Squeak flap or in the Preferences<br>
                              panel, or seek out the themes<br>
                                          item in the<br>
                                                Appearance menu.' translated.<br>
<br>
                                                        aStream cr; cr; nextPutAll: '-----------------------------<wbr>------------------------------<wbr>------';<br>
                                                                cr; cr; nextPutAll:  'Alphabetical listing of all Preferences' translated; cr; cr.<br>
                                                +    (Preferences allPreferences sort: [:a :b | a name < b name]) do:<br>
                                                -    (Preferences allPreferences asSortedCollection: [:a :b | a name < b name]) do:<br>
                                                        [:pref | | aHelpString |<br>
                                                                aStream nextPutAll: pref name; cr.<br>
                                                                aHelpString := pref helpString translated.<br>
                                                                (aHelpString beginsWith: pref name) ifTrue:<br>
                                                                        [aHelpString := aHelpString copyFrom: (pref name size ) to: aHelpString size].<br>
                                                                aHelpString := (aHelpString copyReplaceAll: String cr with: ' ')  copyWithout: Character tab.<br>
                                                                aStream nextPutAll: aHelpString capitalized.<br>
                                                                (aHelpString isEmpty or: [aHelpString last == $.]) ifFalse: [aStream nextPut: $.].<br>
                                                          aStream cr; cr]].<br>
<br>
                                                        UIManager default edit: aString label: 'About Preferences' translated<br>
<br>
                                                  "Preferences giveHelpWithPreferences"!<br>
<br>
                                                Item was changed:<br>
                                                  ----- Method: Project class>>allNames (in category 'utilities') -----<br>
                                                  allNames<br>
                                                +<br>
                                                +       ^(self allProjects collect: [:p | p name]) sort: [:n1 :n2 | n1 caseInsensitiveLessOrEqual: n2]!<br>
                                                -       ^ (self allProjects collect: [:p | p name]) asSortedCollection: [:n1 :n2 | n1 asLowercase < n2 asLowercase]!<br>
<br>
                                                Item was changed:<br>
                                                  ----- Method: Project class>>allNamesAndProjects (in category 'utilities') -----<br>
                                                  allNamesAndProjects<br>
                                                +<br>
                                                +       ^(self allProjects<br>
                                                +               sorted: [ :p1 :p2 | p1 name caseInsensitiveLessOrEqual: p2 name ])<br>
                                                +               replace: [ :aProject | Array with: aProject name with: aProject ]!<br>
                                                -       ^ (self allProjects asSortedCollection: [:p1 :p2 | p1 name asLowercase < p2 name asLowercase]) collect:<br>
                                                -               [:aProject | Array with: aProject name with: aProject]!<br>
<br>
                                                Item was changed:<br>
                                                  ----- Method: Project class>>sweep: (in category 'squeaklet on server') -----<br>
                                                  sweep: aServerDirectory<br>
                                                        | repository list parts ind entry projectName versions |<br>
                                                        "On the server, move all but the three most recent versions of each Squeaklet to a folder called 'older'"<br>
                                                        "Project sweep: ((ServerDirectory serverNamed: 'DaniOnJumbo') clone<br>
                                                                                directory: '/vol0/people/dani/Squeaklets/<wbr>2.7')"<br>
<br>
                                                        "Ensure the 'older' directory"<br>
                                                        (aServerDirectory includesKey: 'older')<br>
                                                                ifFalse: [aServerDirectory createDirectory: 'older'].<br>
                                                        repository := aServerDirectory clone directory: aServerDirectory directory, '/older'.<br>
<br>
                                                        "Collect each name, and decide on versions"<br>
                                                        list := aServerDirectory fileNames.<br>
                                                        list isString ifTrue: [^ self inform: 'server is unavailable' translated].<br>
                                                +       list sort.<br>
                                                -       list := list asSortedCollection asOrderedCollection.<br>
                                                        parts := list collect: [:en | Project parseProjectFileName: en].<br>
                                                        parts := parts select: [:en | en third = 'pr'].<br>
                                                        ind := 1.<br>
                                                        [entry := list at: ind.<br>
                                                                projectName := entry first asLowercase.<br>
                                                                versions := OrderedCollection new.  versions add: entry.<br>
                                                                [(ind := ind + 1) > list size<br>
                                                                        ifFalse: [(parts at: ind) first asLowercase = projectName<br>
                                                                                ifTrue: [versions add: (parts at: ind).  true]<br>
                                                                                ifFalse: [false]]<br>
                                                                        ifTrue: [false]] whileTrue.<br>
                                                                aServerDirectory moveYoungest: 3 in: versions to: repository.<br>
                                                                ind > list size] whileFalse.<br>
                                                  !<br>
<br>
                                                Item was added:<br>
                                                + ----- Method: PseudoClass>>classInstVarNames (in category 'accessing') -----<br>
                                                + classInstVarNames<br>
                                                +<br>
                                                +       self realClass ifNotNil: [ :realClass | ^realClass instVarNames ].<br>
                                                +       ^#()!<br>
<br>
                                                Item was added:<br>
                                                + ----- Method: PseudoClass>>classVarNames (in category 'accessing') -----<br>
                                                + classVarNames<br>
                                                +<br>
                                                +       self realClass ifNotNil: [ :realClass | ^realClass classVarNames ].<br>
                                                +       ^#()!<br>
<br>
                                                Item was changed:<br>
                                                  ----- Method: SmalltalkImage>>presumedSentMe<wbr>ssages (in category 'shrinking') -----<br>
                                                  presumedSentMessages   | sent |<br>
                                                  "Smalltalk presumedSentMessages"<br>
<br>
                                                        "The following should be preserved for doIts, etc"<br>
                                                        sent := IdentitySet new.<br>
                                                        #(compactSymbolTable rebuildAllProjects<br>
                                                                browseAllSelect:  lastRemoval<br>
                                                                scrollBarValue: vScrollBarValue: scrollBarMenuButtonPressed:<br>
                                                                withSelectionFrom:  to: removeClassNamed:<br>
                                                                dragon: hilberts: mandala: web test3 factorial tinyBenchmarks benchFib<br>
                                                                newDepth: restoreAfter: zapAllMethods obsoleteClasses<br>
                                                                removeAllUnSentMessages abandonSources removeUnreferencedKeys<br>
                                                                reclaimDependents zapOrganization condenseChanges browseObsoleteReferences<br>
                                                                subclass:instanceVariableNames<wbr>:classVariableNames:poolDictio<wbr>naries:category:<br>
                                                                methodsFor:stamp: methodsFor:stamp:prior: instanceVariableNames:<br>
                                                +               unusedClasses) do:<br>
                                                -               startTimerInterruptWatcher unusedClasses) do:<br>
                                                                [:sel | sent add: sel].<br>
                                                        "The following may be sent by perform: in dispatchOnChar..."<br>
                                                        Smalltalk at: #ParagraphEditor ifPresent: [:paragraphEditor |<br>
                                                                (paragraphEditor classPool at: #CmdActions) asSet do:<br>
                                                                        [:sel | sent add: sel].<br>
                                                                (paragraphEditor classPool at: #ShiftCmdActions) asSet do:<br>
                                                                        [:sel | sent add: sel]].<br>
                                                        ^ sent!<br>
<br>
                                                Item was changed:<br>
                                                  ----- Method: SmalltalkImage>>removeAllUnSen<wbr>tMessages (in category 'shrinking') -----<br>
                                                  removeAllUnSentMessages<br>
                                                        "Smalltalk removeAllUnSentMessages"<br>
                                                        "[Smalltalk unusedClasses do: [:c | (Smalltalk at: c) removeFromSystem].<br>
                                                        Smalltalk removeAllUnSentMessages > 0] whileTrue."<br>
                                                        "Remove all implementations of unsent messages."<br>
                                                        | sels n |<br>
                                                        sels := self systemNavigation allUnSentMessages.<br>
                                                        "The following should be preserved for doIts, etc"<br>
                                                        "needed even after #majorShrink is pulled"<br>
                                                +       #(#compactSymbolTable #rebuildAllProjects #browseAllSelect:  #lastRemoval #scrollBarValue: vScrollBarValue: #scrollBarMenuButtonPressed:<br>
                              #withSelectionFrom: #to:<br>
                                          #removeClassNamed:<br>
                                                #dragon: #hilberts: #mandala: #web #test3 #factorial #tinyBenchmarks #benchFib #newDepth: #restoreAfter: #zapAllMethods #obsoleteClasses<br>
                              #removeAllUnSentMessages #abandonSources<br>
                                                #removeUnreferencedKeys #reclaimDependents #zapOrganization #condenseChanges #browseObsoleteReferences<br>
                                          #subclass:instanceVariableName<wbr>s:classVariableNames:poolDicti<wbr>onaries:category:<br>
                                                #methodsFor:stamp: #methodsFor:stamp:prior: #instanceVariableNames: #unusedClasses )<br>
                                                -       #(#compactSymbolTable #rebuildAllProjects #browseAllSelect:  #lastRemoval #scrollBarValue: vScrollBarValue: #scrollBarMenuButtonPressed:<br>
                              #withSelectionFrom: #to:<br>
                                          #removeClassNamed:<br>
                                                #dragon: #hilberts: #mandala: #web #test3 #factorial #tinyBenchmarks #benchFib #newDepth: #restoreAfter: #zapAllMethods #obsoleteClasses<br>
                              #removeAllUnSentMessages #abandonSources<br>
                                                #removeUnreferencedKeys #reclaimDependents #zapOrganization #condenseChanges #browseObsoleteReferences<br>
                                          #subclass:instanceVariableName<wbr>s:classVariableNames:poolDicti<wbr>onaries:category:</blockquote>
<br><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><span style="font-size:small;border-collapse:separate"><div>_,,,^..^,,,_<br></div><div>best, Eliot</div></span></div></div></div>
</div></div>