Many issues are localised to small domains of the compiler and are self-contained, here is a non-exhaustive list of such domains, and the files associated with them:
Objects in the compiler that inherit from Showable can be pretty printed. The pretty-printing of objects is used in many places, from debug output, to user-facing error messages and printing of trees after each phase.
You can find the definitions of most error messages in messages (with IDs defined in ErrorMessageID). If the message is not defined there, try the
-Ydebug-error compiler flag, which will print a stack trace leading to the production of the error, and the contents of the message.
If the issue lies in given instances provided by the compiler, such as
scala.reflect.Manifest, etc, look in Synthesizer, which provides factories for given instances.
Members can be generated for many classes, such as
hashCode for case classes and value classes, and
fromProduct for Mirrors. To change the implementation, see SyntheticMembers.
For suggestions to auto-complete method selections, see Completion.
See the quoted runtime package.
tryCompiletimeConstantFold in Types.