summaryrefslogtreecommitdiff
path: root/src/reflect
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan.moors@typesafe.com>2013-11-25 14:43:17 -0800
committerAdriaan Moors <adriaan.moors@typesafe.com>2013-11-25 14:43:17 -0800
commit84c096762b0cd24184bea1567a033f07909f5cff (patch)
tree2575ef38a22ea129814f5514edce4708aa8ad2ad /src/reflect
parentd19954eb94afb27ca90b3bbcfb9eecec5e85428a (diff)
parent518635385ac1ba14aa230de3e431793331300546 (diff)
downloadscala-84c096762b0cd24184bea1567a033f07909f5cff.tar.gz
scala-84c096762b0cd24184bea1567a033f07909f5cff.tar.bz2
scala-84c096762b0cd24184bea1567a033f07909f5cff.zip
Merge pull request #3178 from retronym/ticket/7872
SI-7872 Plug a variance exploit in refinement types
Diffstat (limited to 'src/reflect')
-rw-r--r--src/reflect/scala/reflect/internal/Variances.scala10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/reflect/scala/reflect/internal/Variances.scala b/src/reflect/scala/reflect/internal/Variances.scala
index 5280467055..cd09e83cd3 100644
--- a/src/reflect/scala/reflect/internal/Variances.scala
+++ b/src/reflect/scala/reflect/internal/Variances.scala
@@ -162,6 +162,16 @@ trait Variances {
traverseTreess(vparamss)
case Template(_, _, _) =>
super.traverse(tree)
+ case CompoundTypeTree(templ) =>
+ super.traverse(tree)
+
+ // SI-7872 These two cases make sure we don't miss variance exploits
+ // in originals, e.g. in `foo[({type l[+a] = List[a]})#l]`
+ case tt @ TypeTree() if tt.original != null =>
+ super.traverse(tt.original)
+ case tt : TypTree =>
+ super.traverse(tt)
+
case _ =>
}
}