backport of https://github.com/scala/scala/pull/3022