scala/scala — pull request #2319 by retronym (2013-03-26 14:11:06+00:00)
Title: SI-6793 Don't use super param accessors if inaccessible.

"Alias replacement" has been with us since 2005 (13c59adf9).

Given:

package a {
class C1(val v0: String)
class C2(v1: String) extends a.C1(v1) { v1 }
}

The reference to `v1` is rewritten as `C2.super.v0()`, and
no field is generated in `C2`.

(Oddly, this optimization doesn't seem to kick in if
these classes are in the empty package. That's probably
a distinct bug.)

However, this rewriting is done without consideration of
the accessibility of `v0` from `C2`.

This commit disables this optimization if there if `v0` is
not accessible.

Review by @paulp. The accessibility checking mechanism is a bit clunky, any better suggestions.