scala/scala — pull request #3130 by retronym (2013-11-13 10:02:59+00:00)
Title: SI-7967 Account for type aliases in self-type checks

These eluded the check for "illegal inheritance; self-type does not
conform" as AliasTypeRef doesn't forward `typeOfThis`.

This commit dealiases before calling `typeOfThis`. That seems to be
the most localised change.

Without the dealias, we had:

parent.tpe = TypeRef(pre, sym = AliasTypeSymbol("CC"), Nil)
parent.tpe.typeOfThis = parent.tpe.transform(sym.typeOfThis) = CC

After:

parent.tpe.dealias = TypeRef(pre, sym = ClassSymbol("C"), Nil)
parent.tpe.dealias.typeOfThis = C with B

Review by @adriaanm