diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2014-09-26 09:24:50 +1000 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2016-08-18 11:18:47 +1000 |
commit | 036a9bbd0be2b71fc9d60954fd0b1b64c9a181af (patch) | |
tree | 714e23d5e4da45ae1fd6badb1f3d90a40dd426dd /test/files/neg/t8079a.scala | |
parent | 4e564efb04e508ccc0f479cf1a25331501927d88 (diff) | |
download | scala-036a9bbd0be2b71fc9d60954fd0b1b64c9a181af.tar.gz scala-036a9bbd0be2b71fc9d60954fd0b1b64c9a181af.tar.bz2 scala-036a9bbd0be2b71fc9d60954fd0b1b64c9a181af.zip |
SI-8079 Only expand local aliases during variance checks
We've been flip-flopping on this one through the years, right
now we issue an two errors for the enclosed test.
After this commit, variance validation only expands aliases that
are `{private,protected}[this]`. The rest need not be expanded,
as we have already variance validated the RHS of the alias.
It also removes a seemingly incorrect check in `isLocalOnly`.
This also means that we can use `@uncheckedVariance` to create
variant type aliases for Java interfaces.
However, if such a type alias is declared private local, it
*will* be expanded. That shouldn't be a problem, other than
for the fact that we run through an as-seen-from that strips
the `@uV` annotations in the type expansion. This has been
recorded in a pending test.
Diffstat (limited to 'test/files/neg/t8079a.scala')
-rw-r--r-- | test/files/neg/t8079a.scala | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/test/files/neg/t8079a.scala b/test/files/neg/t8079a.scala new file mode 100644 index 0000000000..4997ea282e --- /dev/null +++ b/test/files/neg/t8079a.scala @@ -0,0 +1,4 @@ +trait C[-I] { + private[this] type X = C[I] + def f2(b: X): Unit +} |