Refactoring Browser Fixes and Enhancements
To install any of the fixes files, simply retrieve them from archive
and file them into your image. You will need to install them in
order of their dates since some newer files might depend on older
ones.
These are the current released fixes files. You can click on a
file to see its description below. We try to release a set of
enhancements/fixes monthly so if you have a bug or enhancement
that you'll like to see included in the next fixes file, please
mail us
with your suggestion.
- Added tranformation rule to convert super sends to self sends if they
refer to the same method, rule to move assignments to same variable outside
ifTrue:ifFalse: blocks, rule to rewrite "(a < b) and: [a > c]" to use
between:and:, and rule for rewriting code such as "a < b ifTrue: [a]
ifFalse: [b]" to be "a min: b".
- Changed the ClassSelectionDialog to handle selectors instead of just
classes. This shouldn't affect the browser itself, but should affect some
of the other programs that use parts of the browser (e.g., the interaction diagram).
- Refactored the RefactoringBrowser and RefactoringManager classes by moving
some of its code into more appropriate classes (e.g., Navigator).
- Fixed bug with renaming temporary refactoring. If the
variable selected was only one character long, it wouldn't rename the variable.
- Added the rename class refactoring to the ENVY versions.
- Fixed the RewriteRuleEditor so that you could just send the open message.
Before you could only send the rewrite: message to open a rewrite rule.
- Refactored the BrowserTextTool so that it no-longer uses the
"continuousAccept: true" on its text editor. Whenever continuous accept mode
was true, the shortcut keys didn't always work as expected.
- Changed the out-of-date method to display in red text instead of a red
background (VisualWorks).
- Added the children to sibling refactoring. Use this
refactoring whenever you have a non-abstract superclass that has several
subclasses, and you want to convert it to have an abstract class. For example,
it will convert
to have the new abstract superclass, A':
Whenever this is run, it will push up the inherited methods and variables, and
write subclassResponsibility methods for those methods defined in all
subclasses.
- Removed the "self/super send not implemented" rule in Smalllint. This
has been incorporated with the "Sent not implemented" rule.
- Fixed bug in spawn hierarchy that was introduced in the previous changes.
One method was missing a return, which caused the spawn hierarchy to have
a doesNotUnderstand: error.
- Fix bug in parsing IBM numbers. If the end of a method had a number
such as "3r1" or "3e1" where there was only one digit after the "r" or "e", then
it would treat the number as "3 r1" (i.e., the rX or eX were treated as message
sends).
- Changed the spawn menu selections to spawn the selected items. For
example, spawn class will now spawn every selected class in one browser,
instead of spawning the primary selection.
- Made several performance improvements to Smalllint. These are mainly
noticiable when running IBM Smalltalk.
Comments or suggestions can be sent to brant@cs.uiuc.edu
and droberts@cs.uiuc.edu.
Last updated on 23-Jul-97.