Lessons from Writing a Compiler [HN] and Design of the Austral Compiler
Discussion on representing errors in a compiler, including GHC [Reddit]
Rust used to parse obsolete syntax, when not too difficult, and emit errors suggesting migrations to updated syntax.
The most kinds of unsupported syntax (36) were detected just before Rust 0.8 in 2013, after which they were gradually removed until the mechanism was finally deleted in 2018. (Only 2 kinds were detected in 1.0.0.)