[squeak-dev] The Trunk: UpdateStream-mt.14.mcz

Levente Uzonyi leves at caesar.elte.hu
Wed Mar 4 13:13:55 UTC 2020


Is anything other than the FilePackage extension methods in use from 
UpdateStream? If not, then it's about time getting rid of that package.


Levente

On Wed, 4 Mar 2020, Marcel Taeumel wrote:

> We might want to rename FilePackage class>>conflictsWithUpdatedMethods: to FilePackage class>>browseConflictsWithUpdatedMethods:.
> Best,
> Marcel
>
>       Am 04.03.2020 09:33:45 schrieb Marcel Taeumel <marcel.taeumel at hpi.de>:
>
>       This is also about information hiding. The selector is called #conflictsWithUpdatedMethods. So, it should return a collection of conflicts. Under which circumstances a result may be empty does not matter at all.
>       Could be user-cancelled or actually empty. :-)
> Best,
> Marcel
>
>       Am 04.03.2020 09:30:34 schrieb commits at source.squeak.org <commits at source.squeak.org>:
>
>       Marcel Taeumel uploaded a new version of UpdateStream to project The Trunk:
>       http://source.squeak.org/trunk/UpdateStream-mt.14.mcz
>
>       ==================== Summary ====================
>
>       Name: UpdateStream-mt.14
>       Author: mt
>       Time: 4 March 2020, 9:30:27.350885 am
>       UUID: 8238c043-21eb-284c-aec1-f376ec57389e
>       Ancestors: UpdateStream-ct.13
>
>       Fixes some contracts, i.e., "nil" vs. "#()" vs. "self".
>
>       =============== Diff against UpdateStream-ct.13 ===============
>
>       Item was changed:
>       ----- Method: FilePackage class>>conflictsWithUpdatedMethods: (in category '*UpdateStream-instance creation') -----
>       conflictsWithUpdatedMethods: fullName
>       | conflicts changeList |
>       + (conflicts := (self fromFileNamed: fullName) conflictsWithUpdatedMethods)
>       + ifEmpty: [^ self].
>       - conflicts := (self fromFileNamed: fullName) conflictsWithUpdatedMethods.
>       - (conflicts isNil or: [conflicts isEmpty]) ifTrue: [^ self].
>       changeList := ChangeList new.
>       changeList
>       changes: conflicts
>       file: (FileDirectory default readOnlyFileNamed: fullName) close.
>       ChangeList
>       open: changeList
>       name: 'Conflicts for ', (FileDirectory localNameFor: fullName)
>       multiSelect: true.!
>
>       Item was changed:
>       ----- Method: FilePackage>>conflictsWithUpdatedMethods (in category '*UpdateStream-conflict checker') -----
>       conflictsWithUpdatedMethods
>       "Check this package for conflicts with methods in the image which are in newer updates."
>
>       | localFileName stream updateNumberString updateNumber imageUpdateNumber updateNumberChangeSet conflicts fileStream |
>
>       localFileName := FileDirectory localNameFor: fullName.
>       stream := ReadStream on: sourceSystem.
>       stream upToAll: 'latest update: #'.
>       updateNumberString := stream upTo: $].
>       stream close.
>
>       fileStream := FileStream readOnlyFileNamed: fullName.
>       (fileStream contentsOfEntireFile includes: Character linefeed)
>       ifTrue: [self notify: 'The changeset file ', localFileName, ' contains linefeeds. Proceed if...
>       you know that this is okay (e.g. the file contains raw binary data).'].
>       fileStream close.
>
>       updateNumberString isEmpty ifFalse: "remove prepended junk, if any"
>       [updateNumberString := (updateNumberString findTokens: Character space) last].
>       updateNumberString asInteger ifNil:
>       [(self confirm: 'Error: ', localFileName, ' has no valid Latest Update number in its header.
>       Do you want to enter an update number for this file?')
>       + ifFalse: [^ #()]
>       - ifFalse: [^ nil]
>       ifTrue: [updateNumberString := UIManager default
>       request: 'Please enter the estimated update number (e.g. 4332).']].
>       + updateNumberString asInteger ifNil: [self inform: 'Conflict check cancelled.'. ^ #()].
>       - updateNumberString asInteger ifNil: [self inform: 'Conflict check cancelled.'. ^ self].
>       updateNumber := updateNumberString asInteger.
>
>       imageUpdateNumber := SystemVersion current highestUpdate.
>       updateNumber > imageUpdateNumber ifTrue:
>       [(self confirm: 'Warning: The update number for this file (#', updateNumberString, ')
>       is greater than the highest update number for this image (#', imageUpdateNumber asString, ').
>       This probably means you need to update your image.
>       Should we proceed anyway as if the file update number is #', imageUpdateNumber asString, '?')
>       ifTrue:
>       [updateNumber := imageUpdateNumber.
>       updateNumberString := imageUpdateNumber asString]
>       + ifFalse: [^ #()]].
>       - ifFalse: [^ nil]].
>
>       updateNumberChangeSet := self findUpdateChangeSetMatching: updateNumber.
>       + updateNumberChangeSet ifNil: [^ #()].
>       - updateNumberChangeSet ifNil: [^ nil].
>
>       Smalltalk isMorphic ifTrue: [self currentWorld findATranscript: self currentEvent].
>       self class logCr; logCr; log: 'Checking ', localFileName, ' (#', updateNumberString, ') for method conflicts with changesets after ', updateNumberChangeSet name, ' ...'.
>
>       conflicts := OrderedCollection new.
>       self classes do: [:pseudoClass |
>       (Array with: pseudoClass with: pseudoClass metaClass) do: [:classOrMeta |
>       classOrMeta selectorsDo: [:selector | | conflict |
>       conflict := self
>       checkForMoreRecentUpdateThanChangeSet: updateNumberChangeSet
>       pseudoClass: classOrMeta
>       selector: selector.
>       conflict ifNotNil: [conflicts add: conflict].
>       ].
>       ].
>       ].
>       self class logCr; log: conflicts size asString, (' conflict' asPluralBasedOn: conflicts), ' found.'; logCr.
>       self class closeLog.
>       ^ conflicts!
> 
> 
> 
>


More information about the Squeak-dev mailing list