11. One or more non-transitory computer-readable storage media storing instructions that when executed by a computer cause the computer to perform a method, the method comprising: detecting an event that causes a compiler to generate diagnostic information; storing the diagnostic information for the event in a manner that preserves semantic information associated with the event; receiving diagnostic information at a particular development tool, wherein the diagnostic information was generated by the compiler while compiling source code for a program created using the development tool, wherein the diagnostic information has a structured representation that is configured to be plugged into at least one diagnostic formatter from a set of diagnostic formatters, which comprises: a raw diagnostic formatter that outputs diagnostic formatter that outputs diagnostic information using an internal format of the compiler for diagnostic information; a tunneling diagnostic formatter that encodes the diagnostic information into a structured XML document; a rich diagnostic formatter that performs the following modifications to the diagnostic information: localizing the diagnostic output; shortening a unique name in the diagnostic information while preserving the name's uniqueness; lengthening a clashing name in the diagnostic information to make the clashing name unique; and adding a where clause to the diagnostic information that provides additional type information for variables in the diagnostic information; selecting the raw diagnostic formatter from the set of diagnostic formatters based on a particular output context for the particular development tool; using the raw diagnostic formatter to modify at least a particular part of the diagnostic information before presenting the particular part of the diagnostic information to a user through the particular development tool; selecting the rich diagnostic formatter from the set of diagnostic formatters; tunneling the diagnostic information through one or more intermediate application layers to a subsequent development tool; using the rich diagnostic formatter to modify at least a subsequent part of the diagnostic information before presenting the subsequent part of the diagnostic information to the user through the subsequent development tool; comparing a modified particular part of the diagnostic information or a modified subsequent part of the diagnostic information to a reference diagnostic output generated by a reference compiler; and presenting the modified particular part of the diagnostic information to the user through the particular development tool, the modified subsequent part of the diagnostic information to the user through the subsequent development tool and results of the comparison to the reference diagnostic output.
13. The one or more non-transitory computer-readable storage media of claim 11 , wherein prior to receiving the diagnostic information at the particular development tool, the method further comprises generating the diagnostic information at the compiler by performing the following operations: while attempting to compile the source code at the compiler, detecting an event that causes the compiler to generate the diagnostic information; and storing the diagnostic information for the event in the structured representation in a manner that preserves semantic information associated with the event.