aboutsummaryrefslogtreecommitdiff
path: root/tests/pos/projections.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2014-06-12 12:46:57 +0200
committerMartin Odersky <odersky@gmail.com>2014-06-12 12:55:11 +0200
commit51563aee5478f90a0f86c29385f74d020b8995dd (patch)
tree05d317678ee3eda3c8d15af334e5a7e221722644 /tests/pos/projections.scala
parentc2175ec910165308e81c48bd8ca8910c50862be4 (diff)
downloaddotty-51563aee5478f90a0f86c29385f74d020b8995dd.tar.gz
dotty-51563aee5478f90a0f86c29385f74d020b8995dd.tar.bz2
dotty-51563aee5478f90a0f86c29385f74d020b8995dd.zip
Change definition of isLegalPrefix so that it allows projecting on an abstract type.
This is needed to make the encoding og higher-kinded types work. E.g. Rep[Int] would be represented as Rep { type Arg$0 = Int } # Apply where Apply is an abstract member of the base class Lambfa$I of Rep.
Diffstat (limited to 'tests/pos/projections.scala')
-rw-r--r--tests/pos/projections.scala14
1 files changed, 14 insertions, 0 deletions
diff --git a/tests/pos/projections.scala b/tests/pos/projections.scala
new file mode 100644
index 000000000..894a00bcf
--- /dev/null
+++ b/tests/pos/projections.scala
@@ -0,0 +1,14 @@
+class projections {
+
+ class Lambda { type Arg; type Apply }
+
+ var x: (Lambda { type Apply = Int; type Arg = String }) # Apply = _
+ var y: Int = _
+ x = y
+ y = x
+
+ var xx: (Lambda { type Apply = Arg } { type Arg = Int }) # Apply = _
+ xx = y
+ y = xx
+
+}