This is really neat: an online collection of programs that can pass the type checker but fail at runtime, in a bunch of languages (Java, Scala, OCaml, Haskell, Rust): https://counterexamples.org/runtime-misinformation.html
It also discusses the design tradeoffs that led to these behaviours.