[squeak-dev] The Inbox: Monticello-ct.717.mcz

commits at source.squeak.org commits at source.squeak.org
Sat Apr 18 14:43:31 UTC 2020


Christoph Thiede uploaded a new version of Monticello to project The Inbox:
http://source.squeak.org/inbox/Monticello-ct.717.mcz

==================== Summary ====================

Name: Monticello-ct.717
Author: ct
Time: 18 April 2020, 4:43:29.411949 pm
UUID: c83665a7-dbba-654c-9f87-a43916ed24a6
Ancestors: Monticello-nice.716

Fixes regression in the dependency sorter that was introduced via Monticello-ct.715. Restore the original semantics of #orderedItems, meaning to return all items that were added to the sorter. Rename (and reorder) instance variable to avoid confusion with the changed behavior of #orderedItems. Note that #orderedItems is no quick getter any more. Add some documentation. Note that I did not document the instvars 'required' and 'provided' coz I don't have an appropriate overview of them at the moment.

Thanks to Jakob (jr) for the help! :-)

=============== Diff against Monticello-nice.716 ===============

Item was changed:
  ----- Method: MCDefinition>>wantsToBeOutermost (in category 'testing') -----
  wantsToBeOutermost
+ 	"Outermost definitions are installed after all other definitions. In particular, this hook is crucial for the correct behavior of removal preambles. See MCDependencySorter >> #addDeferred:."
  
  	^ false!

Item was changed:
  Object subclass: #MCDependencySorter
+ 	instanceVariableNames: 'nondeferred deferred required provided'
- 	instanceVariableNames: 'required provided deferred orderedItems'
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'Monticello-Loading'!
+ 
+ !MCDependencySorter commentStamp: 'ct 4/18/2020 16:38' prior: 0!
+ I sort a set of passed MCDefinitions, resolving all dependency conflicts automatically.
+ 
+ To use me, first add some items to me using the building protocol or my class-side #items: selector. After that, send #orderedItems to me and I will tell you all items in a loadable order.
+ 
+ Instance Variables
+ 	nondeferred:	<SequenceableCollection>
+ 		Usual items that do not require special sorting mechanics.
+ 	deferred:		<SequenceableCollection>
+ 		Items that are added after all nondeferred items. See MCDefinition >> #wantsToBeOutermost.
+ 	required:		<Set>
+ 	provided:		<Set>!

Item was changed:
  ----- Method: MCDependencySorter class>>sortItems: (in category 'utility') -----
  sortItems: aCollection
  	| sorter |
  	sorter := self items: aCollection.
  	sorter externalRequirements do: [:req  | sorter addProvision: req].
+ 	^ sorter orderedItems!
- 	^ sorter orderedItems.!

Item was removed:
- ----- Method: MCDependencySorter>>addDeferred (in category 'building') -----
- addDeferred
- 	deferred do: [:ea |
- 		self addToOrder: ea].!

Item was changed:
  ----- Method: MCDependencySorter>>addDeferred: (in category 'private') -----
  addDeferred: anItem
+ 	"Add an item to the derred list. Deferred items will be appended to #orderedItems after all nondeferred items. See #wantsToBeOutermost."
+ 
  	^ deferred add: anItem!

Item was changed:
  ----- Method: MCDependencySorter>>addToOrder: (in category 'private') -----
  addToOrder: anItem
+ 	nondeferred add: anItem.
- 	orderedItems add: anItem.
  	anItem provisions do: [:ea | self addProvision: ea].!

Item was changed:
  ----- Method: MCDependencySorter>>initialize (in category 'initialize-release') -----
  initialize
  	provided := Set new.
  	required := Dictionary new.
+ 	nondeferred := OrderedCollection new.
- 	orderedItems := OrderedCollection new.
  	deferred := OrderedCollection new.!

Item was changed:
+ ----- Method: MCDependencySorter>>orderedItems (in category 'accessing') -----
- ----- Method: MCDependencySorter>>orderedItems (in category 'sorting') -----
  orderedItems
+ 	"Return all ordered items, first nondeferred items, second deferred (outermost) items."
+ 
+ 	^ nondeferred , deferred!
- 	^ orderedItems!

Item was changed:
  ----- Method: MCPackageLoader>>sorterForItems: (in category 'private') -----
  sorterForItems: aCollection
  	| sorter |
  	sorter := MCDependencySorter items: aCollection.
  	sorter addExternalProvisions: self provisions.
- 	sorter addDeferred.
  	^ sorter!



More information about the Squeak-dev mailing list