scala/scala — pull request #2609 by retronym (2013-05-30 08:42:56+00:00)
Title: SI-7507 Fix lookup of private[this] member in presence of self type.

In the following code:

trait Cake extends Slice

trait Slice { self: Cake => // must have self type that extends `Slice`
private[this] val bippy = () // must be private[this]
locally(bippy)
}

`ThisType()`.findMember(bippy)` excluded the private local member on
the grounds that the first class in the base type sequence, `Cake`, was
not contained in `Slice`.

scala> val thisType = typeOf[Slice].typeSymbol.thisType
thisType: $r.intp.global.Type = Slice.this.type

scala> thisType.baseClasses
res6: List[$r.intp.global.Symbol] = List(trait Cake, trait Slice, class Object, class Any)

This commit changes `findMember` to use the symbol of the `ThisType`, rather
than the first base class, as the location of the selection.

Review by @paulp