summaryrefslogtreecommitdiff
path: root/test/files/pos/t7694.scala
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2013-08-10 09:31:30 +0200
committerAdriaan Moors <adriaan.moors@typesafe.com>2013-08-13 10:15:27 -0700
commite65321cb29758518573902041001d203d924c8bc (patch)
tree6feef65b2cd51daff0700cb0115361f77575faa1 /test/files/pos/t7694.scala
parent5724cae9efe168094f5f3d176f2606b9c43de6dc (diff)
downloadscala-e65321cb29758518573902041001d203d924c8bc.tar.gz
scala-e65321cb29758518573902041001d203d924c8bc.tar.bz2
scala-e65321cb29758518573902041001d203d924c8bc.zip
SI-7694 Add @uncheckedBounds to the library
Followup to the previous commit that added the compiler support for opting out of bounds checking. With both pieces, we can test that the temporaries introduced by the named/default arguments transform don't trigger bounds violations.
Diffstat (limited to 'test/files/pos/t7694.scala')
-rw-r--r--test/files/pos/t7694.scala40
1 files changed, 40 insertions, 0 deletions
diff --git a/test/files/pos/t7694.scala b/test/files/pos/t7694.scala
new file mode 100644
index 0000000000..9852d5ec79
--- /dev/null
+++ b/test/files/pos/t7694.scala
@@ -0,0 +1,40 @@
+trait A
+trait B
+
+trait L[A2, B2 <: A2] {
+ def bar(a: Any, b: Any) = 0
+}
+
+object Lub {
+ // use named args transforms to include TypeTree(<lub.tpe>) in the AST before refchecks.
+ def foo(a: L[_, _], b: Any) = 0
+
+ foo(b = 0, a = if (true) (null: L[A, A]) else (null: L[B, B]))
+
+ (if (true) (null: L[A, A]) else (null: L[B, B])).bar(b = 0, a = 0)
+}
+
+/*
+The LUB ends up as:
+
+TypeRef(
+ TypeSymbol(
+ abstract trait L#7038[A2#7039, B2#7040 <: A2#7039] extends AnyRef#2197
+
+ )
+ args = List(
+ AbstractTypeRef(
+ AbstractType(
+ type _1#13680 >: A#7036 with B#7037 <: Object#1752
+ )
+ )
+ AbstractTypeRef(
+ AbstractType(
+ type _2#13681 >: A#7036 with B#7037 <: Object#1752
+ )
+ )
+ )
+)
+
+Note that type _2#13681 is *not* bound by _1#13680
+*/