It appears that in the absence of a type parameter to the new Foo instantiation, the type inferencer looks to the expected type of foo to try to infer it. In the presence of the type refinement in the expected type, this crashes the compiler.
This doesn't crash in Scala 2.10.6 (although it doesn't compile), but does with every version from a random sample of 2.11.x releases.
I actually spotted one "non refactoring" amongst that patch when I originally reviewed it. The discussion seems to be lost in the ashes of paulp/scala, but I found this in my email:
With the current typer, they're the same thing. In some hypothetical future typer which doesn't mutate everything in place, only whereClauses1 is correct, because those are the trees which were just typed by typedStats. In principle they might not even be the same trees, although I don't think anyone is planning on a change like that.
I reverted that change and it doesn't fix the crash. So there must be another needle hidden in that haystack.