We shipped Dart 3.0 last week with support for switch expressions and complex pattern matching in switches. We also managed to get in quite sophisticated exhaustiveness checking.
Whether you consider Dart a "mainstream" language is I guess an open question. :)