<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>