Of all the object-oriented programming languages and systems to appear over the past decade, Smalltalk-80 has remained one of the more popular `pure' object-oriented languages. However Smalltalk-80 has suffered criticism due to its relatively poor run-time efficiency, together with the lack of compile-time feedback for the programmer. In the past, type systems have been nominated as potential solutions to both these criticisms. The aim of this thesis is to compare and contrast what a type inference system may offer a language like Smalltalk-80, with what is possible from an alternative form of code analysis, namely dataflow analysis. To this end, a type inference system and a dataflow analysis system are both formally defined for a Smalltalk-like language, and their relative properties examined. While both systems are revealed to be capable of detecting potential `does-not-understand' errors, the type inference system is shown to conflict with the semantics of the original untyped language. In contrast, the dataflow analysis system is shown to have no such problems. In addition, the dataflow analysis system is shown to be capable of extending the possibilities of analysing control structures beyond what is feasible with a type inference system.
Here's the PostScript source.