aboutsummaryrefslogtreecommitdiff
path: root/tests/pending/pos/t5777.scala
diff options
context:
space:
mode:
authorSamuel Gruetter <samuel.gruetter@epfl.ch>2014-12-16 16:38:09 +0100
committerSamuel Gruetter <samuel.gruetter@epfl.ch>2014-12-16 16:38:09 +0100
commit42851ed2675015d42bb341b82a09bd0bef4a8ce4 (patch)
tree06806b4183cf74a43553e9a8a9acfeff84fdf712 /tests/pending/pos/t5777.scala
parent5be609fc4e04e3cca5e1435ee41b8cacac9b0513 (diff)
downloaddotty-42851ed2675015d42bb341b82a09bd0bef4a8ce4.tar.gz
dotty-42851ed2675015d42bb341b82a09bd0bef4a8ce4.tar.bz2
dotty-42851ed2675015d42bb341b82a09bd0bef4a8ce4.zip
move failing tests from tests/untried/pos to tests/pending/pos
Diffstat (limited to 'tests/pending/pos/t5777.scala')
-rw-r--r--tests/pending/pos/t5777.scala45
1 files changed, 45 insertions, 0 deletions
diff --git a/tests/pending/pos/t5777.scala b/tests/pending/pos/t5777.scala
new file mode 100644
index 000000000..24cea3616
--- /dev/null
+++ b/tests/pending/pos/t5777.scala
@@ -0,0 +1,45 @@
+// /scala/trac/5777/a.scala
+// Wed May 9 08:44:57 PDT 2012
+
+trait Ring {
+ trait E
+}
+
+class Poly[C <: Ring](val ring: C) extends Ring
+// This definition of Poly triggers the same failure on *both* versions
+// class Poly(val ring: Ring) extends Ring
+
+object BigInt extends Ring
+
+object MyApp {
+ val r = new Poly(BigInt)
+
+ implicitly[r.ring.E <:< BigInt.E]
+
+ // fail on 2.10, works on 2.9.2
+ (null.asInstanceOf[BigInt.E] : r.ring.E)
+
+ // works on both versions
+ val r1 = new Poly[BigInt.type](BigInt)
+ (null.asInstanceOf[BigInt.E] : r1.ring.E)
+
+ // Oddly, -Xprint:typer reports that r and r1 have the same inferred type.
+ //
+ // private[this] val r: Poly[BigInt.type] = new Poly[BigInt.type](BigInt);
+ // <stable> <accessor> def r: Poly[BigInt.type] = MyApp.this.r;
+ // (null.asInstanceOf[BigInt.E]: MyApp.r.ring.E);
+ // private[this] val r1: Poly[BigInt.type] = new Poly[BigInt.type](BigInt);
+ // <stable> <accessor> def r1: Poly[BigInt.type] = MyApp.this.r1;
+ // (null.asInstanceOf[BigInt.E]: MyApp.r1.ring.E)
+
+ // diff typer-2.9.2.txt typer-2.10.txt
+ // ...
+ // ---
+ // > object MyApp extends scala.AnyRef {
+ // > def <init>(): MyApp.type = {
+ // > MyApp.super.<init>();
+ // 30c30
+ // < scala.this.Predef.implicitly[<:<[BigInt.E,MyApp.r.ring.E]](scala.this.Predef.conforms[BigInt.E]);
+ // ---
+ // > scala.this.Predef.implicitly[<:<[BigInt.E,MyApp.r.ring.E]]();
+}