summaryrefslogtreecommitdiff
path: root/test/files/run/t657.scala
diff options
context:
space:
mode:
Diffstat (limited to 'test/files/run/t657.scala')
-rw-r--r--test/files/run/t657.scala51
1 files changed, 51 insertions, 0 deletions
diff --git a/test/files/run/t657.scala b/test/files/run/t657.scala
new file mode 100644
index 0000000000..a9726092e7
--- /dev/null
+++ b/test/files/run/t657.scala
@@ -0,0 +1,51 @@
+abstract class BaseList {
+ type Node <: NodeImpl;
+ implicit def convertNode(ni : NodeImpl) = ni.asInstanceOf[Node];
+ abstract class NodeImpl;
+}
+abstract class LinkedList extends BaseList {
+ type Node <: NodeImpl;
+ trait NodeImpl extends super.NodeImpl;
+}
+trait OffsetList extends LinkedList {
+ type Node <: NodeImpl;
+ trait NodeImpl extends super.NodeImpl;
+}
+
+trait PriorityTree extends BaseList {
+ type Node <: NodeImpl;
+ trait NodeImpl extends super.NodeImpl {
+ def chop : Node = this;
+ }
+}
+
+trait PrecedenceParser extends LinkedList with PriorityTree {
+ type Node <: NodeImpl;
+ trait NodeImpl extends super[LinkedList].NodeImpl with super[PriorityTree].NodeImpl;
+}
+
+trait Matcher extends PrecedenceParser {
+ type Node <: NodeImpl;
+ trait NodeImpl extends super.NodeImpl;
+
+ type Matchable <: Node with MatchableImpl;
+ implicit def convertMatchable(m : MatchableImpl) = m.asInstanceOf[Matchable];
+ trait MatchableImpl extends NodeImpl {
+ override def chop : Node = {
+ Console.println("passed"); super.chop;
+ }
+ }
+}
+
+class Test1 extends OffsetList with Matcher {
+ type Node = NodeImpl;
+ trait NodeImpl extends super[OffsetList].NodeImpl with super[Matcher].NodeImpl;
+ class MatchableImpl extends super.MatchableImpl with NodeImpl;
+ type Matchable = MatchableImpl;
+}
+
+object Test extends App {
+ val test = new Test1;
+ val m = new test.MatchableImpl;
+ m.chop;
+}