diff options
author | Martin Odersky <odersky@gmail.com> | 2016-08-22 16:18:49 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2016-08-26 11:13:16 +0200 |
commit | d84805299a42cb8d2c756aff5a117af24dbeaaf4 (patch) | |
tree | 924136f2161289e25bd1ecad388e88b13be248fc /tests/pos/matthias4.scala | |
parent | 8f5bd779903d5c9f29bc3750391ffacbf3cf869e (diff) | |
download | dotty-d84805299a42cb8d2c756aff5a117af24dbeaaf4.tar.gz dotty-d84805299a42cb8d2c756aff5a117af24dbeaaf4.tar.bz2 dotty-d84805299a42cb8d2c756aff5a117af24dbeaaf4.zip |
Recategorize tests
Passing tests from pending/pos go in pos. Some others
go in diabled/not-testable. These are tests that require
a compilation order which we cannot yet do with our unit
testing framework. Compiling them alltogether (as is now
doen in junit) does not work either for them because they
contain a duplicate class.
Diffstat (limited to 'tests/pos/matthias4.scala')
-rw-r--r-- | tests/pos/matthias4.scala | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/tests/pos/matthias4.scala b/tests/pos/matthias4.scala new file mode 100644 index 000000000..18599ae71 --- /dev/null +++ b/tests/pos/matthias4.scala @@ -0,0 +1,84 @@ +/* +object A requires B { + B.X getX() { + return B.getX(); + } + void setX(B.X x) {} +} +object B { + class X {} + X getX() { + return new X(); + } + void setX(X x) {} +} +object C requires B { + object A; + void test() { + A.setX(B.getX()); + } +} +*/ + +trait _a extends AnyRef with _b { + val a: _a; + val A: A; + type A <: a.AObject; + trait AObject { + def getX(): B.X; + def setX(x: B.X): Unit; + } +} +trait a123 extends AnyRef with _a with _b { + val a: this.type = this; + val A: A = new A(); + class A() extends AObject { + def getX(): B.X = B.getX(); + def setX(x: B.X) = B.setX(x); + } +} + +trait _b { + val b: _b; + val B: B; + type B <: b.BObject; + trait BObject { + type X; + def getX(): X; + def setX(x: X): Unit; + } +} +abstract class b() extends AnyRef with _b { + val b: this.type = this; + val B: B = new B(); + class B() extends BObject { + class X() {} + def getX(): X = new X(); + def setX(x: X) = (); + } +} + +trait _m { + val m: _m; + val M: M; + type M <: m.MObject; + trait MObject {} +} +abstract class m() extends AnyRef with _m with _b { + val m: this.type = this; + val M: M = new M(); + class M() extends MObject with a123 with Linker { + def test() = { + val x: B.X = B.getX(); + A.setX(x); + } + } + trait Linker { + val b: m.this.b.type = m.this.b; + val B: m.this.B.type = m.this.B; + type B = m.this.B; + val m: m.this.m.type = m.this.m; + val M: m.this.M.type = m.this.M; + type M = m.this.M; + } +} |