A Typed Intermediate Language for Compiling Multiple Inheritance

Juan Chen

ACM Symposium on Principles of Programming Languages (POPL 07) |

Published by Association for Computing Machinery, Inc.

Type-preserving compilation improves software reliability by generating code that can be verified independently of the compiler. Practical type-preserving compilation does not exist for languages with multiple inheritance. This paper presents EMI, the first typed intermediate language to support practical compilation of a programming language with fully general multiple inheritance. The paper demonstrates the practicality of EMI by showing that EMI can be used to faithfully model standard implementation strategies of multiple inheritance for C++, the most widely-used programming language with general multiple inheritance. The paper describes syntax, semantics, and properties of EMI as well as a type-preserving translation from a source language.