scala/scala — pull request #2220 by retronym (2013-03-09 12:25:46+00:00)
Title: SI-7226 Fix inference regression caused by TypeVar equality.

TypeVars, being mutable creatures, mustn't have structural
equality/hashing, otherwise TypeRefs that differ only by
having distinct TypeVars as components get wrongly uniqued
together.

The reported bug showed the disaterous consequences: constraints
from the `C?[Int]` in the return type applied to the `?C[?A]` in
the parameter list.

This commit overrides `equals` and `hashCode` in `TypeVar`
to use reference equality. An alternative fix would be to drop
the `case`-ness of the class, as was the case before 0cde930b
when this regressed.

Review by @adriaanm . Do the other conversions to case classes in that commit look safe?

I consider this to be a serious enough regression to consider yet another RC for 2.10.1.