Abstract:
Type constraints express subtype-relationships between the types of
program expressions that are required for type-correctness, and were
originally proposed as a convenient framework for solving type checking
and type inference problems. In this paper, we show how type constraints
can be used as the basis for practical refactoring tools. In our approach,
a set of type constraints is derived from a type-correct program P.
The main insight behind our work is the fact that P constitutes just one
solution to this constraint system, and that alternative solutions may
exist that correspond to refactored versions of P. We show how a number
of refactorings for manipulating types and class hierarchies can be
expressed naturally using type constraints. Several refactorings in the
standard distribution of Eclipse are based on our results.