deComp

Path

Actions

Session

Login

RoelTyper

ESUGInnovationAwards1

Overview

RoelTyper is a fast type reconstructor for Smalltalk, based on heuristics. It type-checks instance variables of classes. Typing a complete VisualWorks Smalltalk image takes less than one minute and a half! For this speed you get the types for about 80% of instance variables in the system. The approach is quite similar to what the Refactoring Browser does, but somewhat more refined.

The type information can be used by various tools:

To try it out for yourself, load the bundle 'RoelTyperBundle' from the Cincom public Store, or, for Squeak, download it from within Squeak using Squeakmap or see the SqueakSource page.

RoelTyper uses the MIT license. The Squeak version is dual-licensed MIT + SqueakL.

Some screenshots

RoelTyperRBPane The Refactoring Browser features a new pane that shows the types for the instance variables of a selected class. The results shown are either extracted by RoelTyper, or edited manually. Right-clicking an entry allows to open up the Typing Results Explainer, or the Type Result Editor.

Big screenshot



TypeResultEditor The Type Result editor is the place for viewing and editing types. Initially the types shown are the ones extracted by RoelTyper. The results are sometimes too general (when lots of classes conform to the interface used by the variable). In that case you can manually edit the types, and save the results. Manually added types can be checked for conformance with the source code.

Big screenshot




TypeConflictsWindow Type Conflicts is a tool that can be opened from the VisualWorks launcher. When it is open, accepting methods can trigger type conflicts that are then shown in this window. Conflicts can be clicked, and then a Typing Conflict Resolver window will open, allowing to view the differences in detail.

Using the menu, the interactive type checking can be enabled, and the displaying of conflicts can be controlled.

Big screenshot



TypingConflictsResolver The Typing Conflict Resolver puts two conflicting typing results side by side, so that you can choose which one to accept.

Big screenshot







TypingResultsExplainer The Results Explainer shows the interface sent to this instance variable and assignments made to this variable (direct or through accessors).

RoelTyper Results Explainer







Children