scala/scala — pull request #3516 by adriaanm (2014-02-12 18:31:42+00:00)
Title:  SI-8177 co-evolve more than just RefinedTypes 

[Rebase and improvement of #3482]

`asSeenFrom` produced a typeref of the shape `T'#A` where `A` referred to a symbol
defined in a `T` of times past.

More precisely, the `TypeRef` case of `TypeMap`'s `mapOver` correctly modified a prefix
from having an underlying type of `{ type A = AIn }` to `{ type A = Int }`,
with a new symbol for `A` (now with info `Int`), but the symbol in the outer
`TypeRef` wasn't co-evolved (so it still referred to the `A` in `{ type A = AIn }`
underlying the old prefix).

`coEvolveSym` used to only look at prefixes that were directly `RefinedType`s,
but this bug shows they could also be `SingleType`/`ThisType`s with an underlying `RefinedType`,
so we look for a prefix's for a refinement class for a type symbol instead.

Review by @paulp