Marcel Taeumel uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-mt.1123.mcz ==================== Summary ==================== Name: System-mt.1123 Author: mt Time: 19 November 2019, 12:05:29.547265 pm UUID: 084b44a2-c237-c445-b14c-c84158296a4c Ancestors: System-mt.1121, System-ct.1094, System-ct.1095, System-ct.1096, System-ct.1104, System-ct.1105, System-ct.1106, System-ct.1112 Merge, merge, merge. Fixes in Project, minor category clean-up in SmalltalkImage, better class comment in MethodReference, new utility method in ChangeSet. =============== Diff against System-mt.1121 =============== Item was added: + ----- Method: ChangeSet class>>removeEmptyChangeSets (in category 'enumerating') ----- + removeEmptyChangeSets + "Remove all change sets that are empty + and which are not nailed down by belonging to a Project." + "ChangeSet removeEmptyChangeSets" + | toGo | + toGo := self allChangeSets + select: [:cs | cs isEmpty and: [cs okayToRemoveInforming: false]] + thenDo: [:cs | self removeChangeSet: cs]. + self inform: toGo size printString, ' change set(s) removed.'! Item was changed: Object subclass: #MethodReference instanceVariableNames: 'classSymbol classIsMeta methodSymbol stringVersion category environment' classVariableNames: 'InvalidReference' poolDictionaries: '' category: 'System-Tools'! + !MethodReference commentStamp: 'ct 9/21/2019 17:22' prior: 0! + A MethodReference is is a lightweight proxy for a CompiledMethod. Has methods to refer to the CompileMethod's source statements, byte codes. Is heavily used by Tools. - !MethodReference commentStamp: 'tlk 5/9/2006 18:43' prior: 0! - A MethodReference is is a lightweight proxy for a CompiledMethod. Has methods for pointed to the CompileMethod's source statements, byte codes. Is heavily used my Tools. Instance Variables + classIsMeta: Boolean class vs. instance - classIsMeta: Boolean class vs. instance classSymbol: Symbol for method's class (without class keyword if meta) + methodSymbol: Symbol for method's selector - methodSymbol: Symbol for method's selector stringVersion: 'Class>>selector:' format ! Item was changed: ----- Method: Project>>okToChange (in category 'release') ----- okToChange "Answer whether the window in which the project is housed can be dismissed -- which is destructive. We never clobber a project without confirmation" | answer | (self isCurrentProject and: [self isTopProject]) ifTrue: [ self inform: 'You cannot close the top project.'. ^ false]. (self confirm: ('Do you really want to delete the project\{1}\and all its content?' withCRs translated format:{self name})) ifFalse: [^ false]. self subProjects ifNotEmpty: [:sp | answer := Project uiManager chooseFrom: #( "1" 'Lift all sub-projects' "2" 'Discard all sub-projects (NO UNDO!!)' "3 or 0" 'Cancel') lines: #(2) title: ('The project {1}\contains {2} sub-project(s).' withCRs translated format:{self name. sp size}). (answer = 0 or: [answer = 3]) ifTrue: [^ false]. answer = 1 ifTrue: [self liftSubProjects. ^ true]. + answer = 2 ifTrue: [^ sp allSatisfy: [:ea | + [ea okToChange] valueSuppressingMessages: {'*delete the project*and all its content*'}]]]. - answer = 2 ifTrue: [^ sp allSatisfy: [:ea | ea okToChange]]]. ^ true! Item was changed: ----- Method: Project>>previewImageForm (in category 'displaying') ----- previewImageForm + ^ self imageForm scaledToSize: self viewSize! - ^ self imageForm! Item was removed: - ----- Method: Project>>setViewSize: (in category 'accessing') ----- - setViewSize: aPoint - viewSize := aPoint! Item was added: + ----- Method: Project>>transcript (in category 'accessing') ----- + transcript + + ^ transcript! Item was added: + ----- Method: Project>>viewSize: (in category 'accessing') ----- + viewSize: aPoint + viewSize := aPoint! Item was changed: + ----- Method: SmalltalkImage>>add:toList:after: (in category 'startup and shutdown list') ----- - ----- Method: SmalltalkImage>>add:toList:after: (in category 'startup list') ----- add: aClass toList: startUpOrShutDownList after: predecessor "Add the name of aClass to the startUp or shutDown list. Add it after the name of predecessor" (Smalltalk globals includes: aClass) ifFalse: [self error: aClass name , ' cannot be found in Smalltalk dictionary.']. "Add after predecessor, moving it if already there." (Smalltalk globals includes: predecessor) ifFalse: [self error: predecessor name , ' cannot be found in Smalltalk dictionary.']. (startUpOrShutDownList includes: predecessor name) ifFalse: [self error: predecessor name , ' cannot be found in the list.']. startUpOrShutDownList remove: aClass name ifAbsent:[]. startUpOrShutDownList add: aClass name after: predecessor name! Item was changed: + ----- Method: SmalltalkImage>>add:toList:before: (in category 'startup and shutdown list') ----- - ----- Method: SmalltalkImage>>add:toList:before: (in category 'startup list') ----- add: aClass toList: startUpOrShutDownList before: successor "Add the name of aClass to the startUp or shutDown list. Add it before the name of successor" (Smalltalk globals includes: aClass) ifFalse: [self error: aClass name , ' cannot be found in Smalltalk dictionary.']. "Add before successor, moving it if already there." (Smalltalk globals includes: successor) ifFalse: [self error: successor name , ' cannot be found in Smalltalk dictionary.']. (startUpOrShutDownList includes: successor name) ifFalse: [self error: successor name , ' cannot be found in the list.']. startUpOrShutDownList remove: aClass name ifAbsent: []. startUpOrShutDownList add: aClass name before: successor name.! Item was changed: + ----- Method: SmalltalkImage>>addToShutDownList: (in category 'startup and shutdown list') ----- - ----- Method: SmalltalkImage>>addToShutDownList: (in category 'startup list') ----- addToShutDownList: aClass "This will add a ref to this class at the BEGINNING of the shutDown list." "No-op if already in the list." (ShutDownList includes: aClass name) ifFalse: [ShutDownList addFirst: aClass name]! Item was changed: + ----- Method: SmalltalkImage>>addToShutDownList:before: (in category 'startup and shutdown list') ----- - ----- Method: SmalltalkImage>>addToShutDownList:before: (in category 'startup list') ----- addToShutDownList: aClass before: predecessor self add: aClass toList: ShutDownList before: predecessor! Item was changed: + ----- Method: SmalltalkImage>>addToStartUpList: (in category 'startup and shutdown list') ----- - ----- Method: SmalltalkImage>>addToStartUpList: (in category 'startup list') ----- addToStartUpList: aClass "This will add a ref to this class at the END of the startUp list." "No-op if already in the list." (StartUpList includes: aClass name) ifFalse: [StartUpList addLast: aClass name]! Item was changed: + ----- Method: SmalltalkImage>>addToStartUpList:before: (in category 'startup and shutdown list') ----- - ----- Method: SmalltalkImage>>addToStartUpList:before: (in category 'startup list') ----- addToStartUpList: aClass before: predecessor self add: aClass toList: StartUpList before: predecessor! Item was added: + ----- Method: SmalltalkImage>>at:ifPresent:ifAbsent: (in category 'accessing') ----- + at: key ifPresent: aBlock ifAbsent: anotherBlock + "Lookup the given key in the globals. If it is present, answer the value of evaluating the given block with the value associated with the key. Otherwise, evaluate anotherBlock and answer its result." + + ^globals at: key ifPresent: aBlock ifAbsent: anotherBlock! Item was changed: + ----- Method: SmalltalkImage>>removeFromShutDownList: (in category 'startup and shutdown list') ----- - ----- Method: SmalltalkImage>>removeFromShutDownList: (in category 'snapshot and quit') ----- removeFromShutDownList: aClass ShutDownList remove: aClass name ifAbsent: []! Item was changed: + ----- Method: SmalltalkImage>>removeFromStartUpList: (in category 'startup and shutdown list') ----- - ----- Method: SmalltalkImage>>removeFromStartUpList: (in category 'snapshot and quit') ----- removeFromStartUpList: aClass StartUpList remove: aClass name ifAbsent: []! |
I think there is a problem somewhere in this update. After loading
System-mt.1123, I can no longer open a new MVC project. Reverting to System-mt.1121 fixes it. The issue seems to be in Project>>previewImageForm which calls Project>>viewSize, but the viewSize for the (MVC) project is nil when looking at it from Morphic. I tried changing to this, which seems to fix the initial failure: Project>>previewImageForm ^ self imageForm scaledToSize: Project current viewSize But that leads to another error in ProjectViewMorph>>enter when entering the MVC project. I don't have time to look at it further right now, but I'll do so later if no one gets to it first. Dave. On Tue, Nov 19, 2019 at 11:05:37AM +0000, [hidden email] wrote: > Marcel Taeumel uploaded a new version of System to project The Trunk: > http://source.squeak.org/trunk/System-mt.1123.mcz > > ==================== Summary ==================== > > Name: System-mt.1123 > Author: mt > Time: 19 November 2019, 12:05:29.547265 pm > UUID: 084b44a2-c237-c445-b14c-c84158296a4c > Ancestors: System-mt.1121, System-ct.1094, System-ct.1095, System-ct.1096, System-ct.1104, System-ct.1105, System-ct.1106, System-ct.1112 > > Merge, merge, merge. Fixes in Project, minor category clean-up in SmalltalkImage, better class comment in MethodReference, new utility method in ChangeSet. > > =============== Diff against System-mt.1121 =============== > > Item was added: > + ----- Method: ChangeSet class>>removeEmptyChangeSets (in category 'enumerating') ----- > + removeEmptyChangeSets > + "Remove all change sets that are empty > + and which are not nailed down by belonging to a Project." > + "ChangeSet removeEmptyChangeSets" > + | toGo | > + toGo := self allChangeSets > + select: [:cs | cs isEmpty and: [cs okayToRemoveInforming: false]] > + thenDo: [:cs | self removeChangeSet: cs]. > + self inform: toGo size printString, ' change set(s) removed.'! > > Item was changed: > Object subclass: #MethodReference > instanceVariableNames: 'classSymbol classIsMeta methodSymbol stringVersion category environment' > classVariableNames: 'InvalidReference' > poolDictionaries: '' > category: 'System-Tools'! > > + !MethodReference commentStamp: 'ct 9/21/2019 17:22' prior: 0! > + A MethodReference is is a lightweight proxy for a CompiledMethod. Has methods to refer to the CompileMethod's source statements, byte codes. Is heavily used by Tools. > - !MethodReference commentStamp: 'tlk 5/9/2006 18:43' prior: 0! > - A MethodReference is is a lightweight proxy for a CompiledMethod. Has methods for pointed to the CompileMethod's source statements, byte codes. Is heavily used my Tools. > > Instance Variables > + classIsMeta: Boolean class vs. instance > - classIsMeta: Boolean class vs. instance > classSymbol: Symbol for method's class (without class keyword if meta) > + methodSymbol: Symbol for method's selector > - methodSymbol: Symbol for method's selector > stringVersion: 'Class>>selector:' format > > ! > > Item was changed: > ----- Method: Project>>okToChange (in category 'release') ----- > okToChange > "Answer whether the window in which the project is housed can be dismissed -- which is destructive. We never clobber a project without confirmation" > > | answer | > (self isCurrentProject and: [self isTopProject]) ifTrue: [ > self inform: 'You cannot close the top project.'. > ^ false]. > > (self confirm: ('Do you really want to delete the project\{1}\and all its content?' withCRs translated format:{self name})) > ifFalse: [^ false]. > > self subProjects ifNotEmpty: [:sp | > answer := Project uiManager > chooseFrom: #( > "1" 'Lift all sub-projects' > "2" 'Discard all sub-projects (NO UNDO!!)' > "3 or 0" 'Cancel') > lines: #(2) > title: ('The project {1}\contains {2} sub-project(s).' withCRs translated format:{self name. sp size}). > > (answer = 0 or: [answer = 3]) ifTrue: [^ false]. > answer = 1 ifTrue: [self liftSubProjects. ^ true]. > + answer = 2 ifTrue: [^ sp allSatisfy: [:ea | > + [ea okToChange] valueSuppressingMessages: {'*delete the project*and all its content*'}]]]. > - answer = 2 ifTrue: [^ sp allSatisfy: [:ea | ea okToChange]]]. > > ^ true! > > Item was changed: > ----- Method: Project>>previewImageForm (in category 'displaying') ----- > previewImageForm > > + ^ self imageForm scaledToSize: self viewSize! > - ^ self imageForm! > > Item was removed: > - ----- Method: Project>>setViewSize: (in category 'accessing') ----- > - setViewSize: aPoint > - viewSize := aPoint! > > Item was added: > + ----- Method: Project>>transcript (in category 'accessing') ----- > + transcript > + > + ^ transcript! > > Item was added: > + ----- Method: Project>>viewSize: (in category 'accessing') ----- > + viewSize: aPoint > + viewSize := aPoint! > > Item was changed: > + ----- Method: SmalltalkImage>>add:toList:after: (in category 'startup and shutdown list') ----- > - ----- Method: SmalltalkImage>>add:toList:after: (in category 'startup list') ----- > add: aClass toList: startUpOrShutDownList after: predecessor > "Add the name of aClass to the startUp or shutDown list. > Add it after the name of predecessor" > > (Smalltalk globals includes: aClass) > ifFalse: [self error: aClass name , ' cannot be found in Smalltalk dictionary.']. > > "Add after predecessor, moving it if already there." > (Smalltalk globals includes: predecessor) > ifFalse: [self error: predecessor name , ' cannot be found in Smalltalk dictionary.']. > (startUpOrShutDownList includes: predecessor name) > ifFalse: [self error: predecessor name , ' cannot be found in the list.']. > startUpOrShutDownList remove: aClass name ifAbsent:[]. > startUpOrShutDownList add: aClass name after: predecessor name! > > Item was changed: > + ----- Method: SmalltalkImage>>add:toList:before: (in category 'startup and shutdown list') ----- > - ----- Method: SmalltalkImage>>add:toList:before: (in category 'startup list') ----- > add: aClass toList: startUpOrShutDownList before: successor > "Add the name of aClass to the startUp or shutDown list. > Add it before the name of successor" > > (Smalltalk globals includes: aClass) > ifFalse: [self error: aClass name , ' cannot be found in Smalltalk dictionary.']. > > "Add before successor, moving it if already there." > (Smalltalk globals includes: successor) > ifFalse: [self error: successor name , ' cannot be found in Smalltalk dictionary.']. > (startUpOrShutDownList includes: successor name) > ifFalse: [self error: successor name , ' cannot be found in the list.']. > startUpOrShutDownList remove: aClass name ifAbsent: []. > startUpOrShutDownList add: aClass name before: successor name.! > > Item was changed: > + ----- Method: SmalltalkImage>>addToShutDownList: (in category 'startup and shutdown list') ----- > - ----- Method: SmalltalkImage>>addToShutDownList: (in category 'startup list') ----- > addToShutDownList: aClass > "This will add a ref to this class at the BEGINNING of the shutDown list." > "No-op if already in the list." > > (ShutDownList includes: aClass name) ifFalse: [ShutDownList addFirst: aClass name]! > > Item was changed: > + ----- Method: SmalltalkImage>>addToShutDownList:before: (in category 'startup and shutdown list') ----- > - ----- Method: SmalltalkImage>>addToShutDownList:before: (in category 'startup list') ----- > addToShutDownList: aClass before: predecessor > > self add: aClass toList: ShutDownList before: predecessor! > > Item was changed: > + ----- Method: SmalltalkImage>>addToStartUpList: (in category 'startup and shutdown list') ----- > - ----- Method: SmalltalkImage>>addToStartUpList: (in category 'startup list') ----- > addToStartUpList: aClass > "This will add a ref to this class at the END of the startUp list." > "No-op if already in the list." > > (StartUpList includes: aClass name) ifFalse: [StartUpList addLast: aClass name]! > > Item was changed: > + ----- Method: SmalltalkImage>>addToStartUpList:before: (in category 'startup and shutdown list') ----- > - ----- Method: SmalltalkImage>>addToStartUpList:before: (in category 'startup list') ----- > addToStartUpList: aClass before: predecessor > > self add: aClass toList: StartUpList before: predecessor! > > Item was added: > + ----- Method: SmalltalkImage>>at:ifPresent:ifAbsent: (in category 'accessing') ----- > + at: key ifPresent: aBlock ifAbsent: anotherBlock > + "Lookup the given key in the globals. If it is present, answer the value of evaluating the given block with the value associated with the key. Otherwise, evaluate anotherBlock and answer its result." > + > + ^globals at: key ifPresent: aBlock ifAbsent: anotherBlock! > > Item was changed: > + ----- Method: SmalltalkImage>>removeFromShutDownList: (in category 'startup and shutdown list') ----- > - ----- Method: SmalltalkImage>>removeFromShutDownList: (in category 'snapshot and quit') ----- > removeFromShutDownList: aClass > > ShutDownList remove: aClass name ifAbsent: []! > > Item was changed: > + ----- Method: SmalltalkImage>>removeFromStartUpList: (in category 'startup and shutdown list') ----- > - ----- Method: SmalltalkImage>>removeFromStartUpList: (in category 'snapshot and quit') ----- > removeFromStartUpList: aClass > > StartUpList remove: aClass name ifAbsent: []! > > |
Hi, all. Sorry! Just fixed that oversight in Trunk: System-mt.1124 Morphic-mt.1589 ST80-mt.243 Best, Marcel
|
Is it possible to write meaningful smokeĀ tests for such things as opening an MVC project from Morphic, entering it and going back? Without totally deranging the image that runs the tests? Marcel Taeumel <[hidden email]> schrieb am Mi., 20. Nov. 2019, 14:47:
|
Hmmm... not really. The automatic emergency project switch is not even working properly at the moment. Best, Marcel
|
Hmmm... but it's still a fair question. It's a tricky area for sure,
but it might still be possible to write some tests. The main methods of interest would be the 11 methods in the "enter" category of class Project, and maybe the 2 methods in "enter - recovery". The part about "without totally deranging the image that runs the tests" might be a bit of a challenge ;-) I am not volunteering to do this, just saying that it's worth considering. Dave On Wed, Nov 20, 2019 at 06:53:21PM +0100, Marcel Taeumel wrote: > Hmmm... not really. The automatic emergency project switch is not even working properly at the moment. > > Best, > Marcel > Am 20.11.2019 16:52:15 schrieb Jakob Reschke <[hidden email]>: > Is it possible to write meaningful smoke?? tests for such things as opening an MVC project from Morphic, entering it and going back? Without totally deranging the image that runs the tests? > > > Marcel Taeumel <[hidden email] [mailto:[hidden email]]> schrieb am Mi., 20. Nov. 2019, 14:47: > > Hi, all. > > Sorry! Just fixed that oversight in Trunk: > > System-mt.1124 > > Morphic-mt.1589 > > ST80-mt.243 > > > Best, > Marcel > Am 20.11.2019 13:31:08 schrieb David T. Lewis <[hidden email] [mailto:[hidden email]]>: > I think there is a problem somewhere in this update. After loading > System-mt.1123, I can no longer open a new MVC project. Reverting to > System-mt.1121 fixes it. The issue seems to be in Project>>previewImageForm > which calls Project>>viewSize, but the viewSize for the (MVC) project > is nil when looking at it from Morphic. > > I tried changing to this, which seems to fix the initial failure: > > Project>>previewImageForm > ^ self imageForm scaledToSize: Project current viewSize > > But that leads to another error in ProjectViewMorph>>enter when > entering the MVC project. > > I don't have time to look at it further right now, but I'll do so > later if no one gets to it first. > > Dave. > > > On Tue, Nov 19, 2019 at 11:05:37AM +0000, [hidden email] [mailto:[hidden email]] wrote: > > Marcel Taeumel uploaded a new version of System to project The Trunk: > > http://source.squeak.org/trunk/System-mt.1123.mcz [http://source.squeak.org/trunk/System-mt.1123.mcz] > > > > ==================== Summary ==================== > > > > Name: System-mt.1123 > > Author: mt > > Time: 19 November 2019, 12:05:29.547265 pm > > UUID: 084b44a2-c237-c445-b14c-c84158296a4c > > Ancestors: System-mt.1121, System-ct.1094, System-ct.1095, System-ct.1096, System-ct.1104, System-ct.1105, System-ct.1106, System-ct.1112 > > > > Merge, merge, merge. Fixes in Project, minor category clean-up in SmalltalkImage, better class comment in MethodReference, new utility method in ChangeSet. > > > > =============== Diff against System-mt.1121 =============== > > > > Item was added: > > + ----- Method: ChangeSet class>>removeEmptyChangeSets (in category 'enumerating') ----- > > + removeEmptyChangeSets > > + "Remove all change sets that are empty > > + and which are not nailed down by belonging to a Project." > > + "ChangeSet removeEmptyChangeSets" > > + | toGo | > > + toGo := self allChangeSets > > + select: [:cs | cs isEmpty and: [cs okayToRemoveInforming: false]] > > + thenDo: [:cs | self removeChangeSet: cs]. > > + self inform: toGo size printString, ' change set(s) removed.'! > > > > Item was changed: > > Object subclass: #MethodReference > > instanceVariableNames: 'classSymbol classIsMeta methodSymbol stringVersion category environment' > > classVariableNames: 'InvalidReference' > > poolDictionaries: '' > > category: 'System-Tools'! > > > > + !MethodReference commentStamp: 'ct 9/21/2019 17:22' prior: 0! > > + A MethodReference is is a lightweight proxy for a CompiledMethod. Has methods to refer to the CompileMethod's source statements, byte codes. Is heavily used by Tools. > > - !MethodReference commentStamp: 'tlk 5/9/2006 18:43' prior: 0! > > - A MethodReference is is a lightweight proxy for a CompiledMethod. Has methods for pointed to the CompileMethod's source statements, byte codes. Is heavily used my Tools. > > > > Instance Variables > > + classIsMeta: Boolean class vs. instance > > - classIsMeta: Boolean class vs. instance > > classSymbol: Symbol for method's class (without class keyword if meta) > > + methodSymbol: Symbol for method's selector > > - methodSymbol: Symbol for method's selector > > stringVersion: 'Class>>selector:' format > > > > ! > > > > Item was changed: > > ----- Method: Project>>okToChange (in category 'release') ----- > > okToChange > > "Answer whether the window in which the project is housed can be dismissed -- which is destructive. We never clobber a project without confirmation" > > > > | answer | > > (self isCurrentProject and: [self isTopProject]) ifTrue: [ > > self inform: 'You cannot close the top project.'. > > ^ false]. > > > > (self confirm: ('Do you really want to delete the project\{1}\and all its content?' withCRs translated format:{self name})) > > ifFalse: [^ false]. > > > > self subProjects ifNotEmpty: [:sp | > > answer := Project uiManager > > chooseFrom: #( > > "1" 'Lift all sub-projects' > > "2" 'Discard all sub-projects (NO UNDO!!)' > > "3 or 0" 'Cancel') > > lines: #(2) > > title: ('The project {1}\contains {2} sub-project(s).' withCRs translated format:{self name. sp size}). > > > > (answer = 0 or: [answer = 3]) ifTrue: [^ false]. > > answer = 1 ifTrue: [self liftSubProjects. ^ true]. > > + answer = 2 ifTrue: [^ sp allSatisfy: [:ea | > > + [ea okToChange] valueSuppressingMessages: {'*delete the project*and all its content*'}]]]. > > - answer = 2 ifTrue: [^ sp allSatisfy: [:ea | ea okToChange]]]. > > > > ^ true! > > > > Item was changed: > > ----- Method: Project>>previewImageForm (in category 'displaying') ----- > > previewImageForm > > > > + ^ self imageForm scaledToSize: self viewSize! > > - ^ self imageForm! > > > > Item was removed: > > - ----- Method: Project>>setViewSize: (in category 'accessing') ----- > > - setViewSize: aPoint > > - viewSize := aPoint! > > > > Item was added: > > + ----- Method: Project>>transcript (in category 'accessing') ----- > > + transcript > > + > > + ^ transcript! > > > > Item was added: > > + ----- Method: Project>>viewSize: (in category 'accessing') ----- > > + viewSize: aPoint > > + viewSize := aPoint! > > > > Item was changed: > > + ----- Method: SmalltalkImage>>add:toList:after: (in category 'startup and shutdown list') ----- > > - ----- Method: SmalltalkImage>>add:toList:after: (in category 'startup list') ----- > > add: aClass toList: startUpOrShutDownList after: predecessor > > "Add the name of aClass to the startUp or shutDown list. > > Add it after the name of predecessor" > > > > (Smalltalk globals includes: aClass) > > ifFalse: [self error: aClass name , ' cannot be found in Smalltalk dictionary.']. > > > > "Add after predecessor, moving it if already there." > > (Smalltalk globals includes: predecessor) > > ifFalse: [self error: predecessor name , ' cannot be found in Smalltalk dictionary.']. > > (startUpOrShutDownList includes: predecessor name) > > ifFalse: [self error: predecessor name , ' cannot be found in the list.']. > > startUpOrShutDownList remove: aClass name ifAbsent:[]. > > startUpOrShutDownList add: aClass name after: predecessor name! > > > > Item was changed: > > + ----- Method: SmalltalkImage>>add:toList:before: (in category 'startup and shutdown list') ----- > > - ----- Method: SmalltalkImage>>add:toList:before: (in category 'startup list') ----- > > add: aClass toList: startUpOrShutDownList before: successor > > "Add the name of aClass to the startUp or shutDown list. > > Add it before the name of successor" > > > > (Smalltalk globals includes: aClass) > > ifFalse: [self error: aClass name , ' cannot be found in Smalltalk dictionary.']. > > > > "Add before successor, moving it if already there." > > (Smalltalk globals includes: successor) > > ifFalse: [self error: successor name , ' cannot be found in Smalltalk dictionary.']. > > (startUpOrShutDownList includes: successor name) > > ifFalse: [self error: successor name , ' cannot be found in the list.']. > > startUpOrShutDownList remove: aClass name ifAbsent: []. > > startUpOrShutDownList add: aClass name before: successor name.! > > > > Item was changed: > > + ----- Method: SmalltalkImage>>addToShutDownList: (in category 'startup and shutdown list') ----- > > - ----- Method: SmalltalkImage>>addToShutDownList: (in category 'startup list') ----- > > addToShutDownList: aClass > > "This will add a ref to this class at the BEGINNING of the shutDown list." > > "No-op if already in the list." > > > > (ShutDownList includes: aClass name) ifFalse: [ShutDownList addFirst: aClass name]! > > > > Item was changed: > > + ----- Method: SmalltalkImage>>addToShutDownList:before: (in category 'startup and shutdown list') ----- > > - ----- Method: SmalltalkImage>>addToShutDownList:before: (in category 'startup list') ----- > > addToShutDownList: aClass before: predecessor > > > > self add: aClass toList: ShutDownList before: predecessor! > > > > Item was changed: > > + ----- Method: SmalltalkImage>>addToStartUpList: (in category 'startup and shutdown list') ----- > > - ----- Method: SmalltalkImage>>addToStartUpList: (in category 'startup list') ----- > > addToStartUpList: aClass > > "This will add a ref to this class at the END of the startUp list." > > "No-op if already in the list." > > > > (StartUpList includes: aClass name) ifFalse: [StartUpList addLast: aClass name]! > > > > Item was changed: > > + ----- Method: SmalltalkImage>>addToStartUpList:before: (in category 'startup and shutdown list') ----- > > - ----- Method: SmalltalkImage>>addToStartUpList:before: (in category 'startup list') ----- > > addToStartUpList: aClass before: predecessor > > > > self add: aClass toList: StartUpList before: predecessor! > > > > Item was added: > > + ----- Method: SmalltalkImage>>at:ifPresent:ifAbsent: (in category 'accessing') ----- > > + at: key ifPresent: aBlock ifAbsent: anotherBlock > > + "Lookup the given key in the globals. If it is present, answer the value of evaluating the given block with the value associated with the key. Otherwise, evaluate anotherBlock and answer its result." > > + > > + ^globals at: key ifPresent: aBlock ifAbsent: anotherBlock! > > > > Item was changed: > > + ----- Method: SmalltalkImage>>removeFromShutDownList: (in category 'startup and shutdown list') ----- > > - ----- Method: SmalltalkImage>>removeFromShutDownList: (in category 'snapshot and quit') ----- > > removeFromShutDownList: aClass > > > > ShutDownList remove: aClass name ifAbsent: []! > > > > Item was changed: > > + ----- Method: SmalltalkImage>>removeFromStartUpList: (in category 'startup and shutdown list') ----- > > - ----- Method: SmalltalkImage>>removeFromStartUpList: (in category 'snapshot and quit') ----- > > removeFromStartUpList: aClass > > > > StartUpList remove: aClass name ifAbsent: []! > > > > > > > |
Free forum by Nabble | Edit this page |