I've been trying out the refactoring tools with a specific 2 subclasses of a common class example - and I didn't get this problem either - I could push up methods and pull up instance variables of my two common subclasses. The only point I would note - it seems inconsistent that you "pull up" instance variables but "push up" methods (I recall it was a naming act of history, but it would be nice to call it "push up" everywhere.) Tim On 7 Aug 2010, at 21:39, Lukas Renggli wrote:
I cannot reproduce. If you look at the code you should see that what you describe should not happen:
transform class allSubclasses do: [:each | (each directlyDefinesInstanceVariable: variableName) ifTrue: [each removeInstanceVariable: variableName]]. class addInstanceVariable: variableName
Maybe your class hierarchy is broken?
Lukas
On 7 August 2010 22:18, Niko Schwarz <niko.schwarz@googlemail.com> wrote:
Here's a funny way to crash your image. Works in:
Pharo-1.1-11367-Beta Latest update: #11367
Make a class named AbstractBla, with two subclasses: SubA, SubB. Then, add to both SubA and SubB the identically named instance variable: instVar. Now, use the "pull up" refactoring in OmniBrowser on SubA to pull up instVar into the superclass. As you correctly guess, that breaks SubB, because now both its superclass and SubB have an instance variable named instVar. But, instead of refusing to refactor, OmniBrowser dutifully refactors and takes the image with it.
I hope that was understandable.
Cheers,
Niko
-- http://scg.unibe.ch/staff/Schwarz twitter.com/nes1983 Tel: +41 076 235 8683
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
-- Lukas Renggli www.lukas-renggli.ch
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project