PackageDescription: AllowOverridesWithinBundles

Allow Overrides Within Bundles

Last published: November 22, 2002 by 'aknight'

Defines 0 Classes
Extends 2 Classes

This *experimental* package is intended to allow you to have bundles whose packages override each other, which is normally not allowed. So, for example, suppose you have a Bundle B, which contains Packages P1 and P2. P1 has class C which defines method #m. P2 overrides #m.

Normally when you load B (at least if you load differences), the method #m will be moved to P2, and not appear as an override. With this loaded, the override should (I hope, knock wood) be maintained properly.

The bad thing about this is that it may make loads less robust. In particular, if a method is moved within a bundle, it may be deleted and then later re-added. If the method is called during the loading process, this can be bad. So if you're loading versions of basic system bundles (e.g. StoreBase, Base VisualWorks) this is probably a bad idea. However, for most user code it's probably not a problem.

Warning: For some reason, methods may show up in red as if they were overrides temporarily after a move. If you select them, the "Overridden" tab doesn't show up and the red goes away. I assume something is getting cached and needs to be notified, but I don't know what.