[squeak-dev] Monticello Bug? Preamble of removal is executed too late

Thiede, Christoph Christoph.Thiede at student.hpi.uni-potsdam.de
Wed Dec 18 10:00:09 UTC 2019


Hi all, I found a possible bug in Monticello scripts. Let me try to describe the issue:


Steps to reproduce

  1.  In Monticello Browser, create a new package named #Foo
  2.  In the System Browser, create a new class named #FooClass in the system category #Foo
  3.  On its class side, add a method named #bar - just declare it.
  4.  In Monticello Browser, edit the preambleOfRemoval for our #Foo Package and set it to:
FooClass bar
  5.  Save a version of our #Foo package
  6.  Still in Monticello Browser, unload the foo package via context menu.

Expected behavior
The package is unloaded without any errors. If Foo class >> bar has a real implementation, it will have run when the package is removed.

Actual behavior
In MCRemovalPreambleDefinition >> #evaluate: UndefinedObject does not understand #bar.

Reason
In MCPackageLoader >> #analyze, the MCDependencySorter for removals does not return the removal preamble definition as the last item, but the class definition of FooClass. This happens somewhere in #addExternalProvisions:, because FooClass depends on Object and thus is moved to the end (?).

Questions
Am I right that this is a bug? I think we really want to execute the removal preamble *before* unloading any code definitions?
How could one solve this issue? Is it necessary to treat preambles/postambles separated so that they can't be messed up by dependencies? Or would know an easier way?
I'm not familiar at all with this domain, so if we want a fast solution, maybe someone others could have a look at it. Otherwise, I'd be happy to hear your opinions.

Best,
Christoph
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20191218/def23fdf/attachment.html>


More information about the Squeak-dev mailing list