aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/neg/customArgs/overrideClass.scala3
-rw-r--r--tests/neg/i1750.scala12
-rw-r--r--tests/neg/i1750a.scala13
-rw-r--r--tests/neg/i1806.scala2
-rw-r--r--tests/neg/i1845.scala2
-rw-r--r--tests/neg/overrides.scala5
-rw-r--r--tests/neg/t7278.scala2
-rw-r--r--tests/pos-java-interop/innerClass/Outer.scala8
-rw-r--r--tests/pos-java-interop/innerClass/Test.java8
-rw-r--r--tests/pos/i1687.scala10
-rw-r--r--tests/pos/i1687b.scala19
-rw-r--r--tests/pos/i1867.scala3
-rw-r--r--tests/pos/i1891.scala11
-rw-r--r--tests/repl/vc.check5
-rw-r--r--tests/run/functionXXL.scala (renamed from tests/pos/functionXXL.scala)4
-rw-r--r--tests/run/mixin-primitive-on-generic-1.check2
-rw-r--r--tests/run/mixin-primitive-on-generic-1.scala19
-rw-r--r--tests/run/mixin-primitive-on-generic-2.check2
-rw-r--r--tests/run/mixin-primitive-on-generic-2.scala19
-rw-r--r--tests/run/mixin-primitive-on-generic-3.check2
-rw-r--r--tests/run/mixin-primitive-on-generic-3.scala21
-rw-r--r--tests/run/mixin-primitive-on-generic-4.check2
-rw-r--r--tests/run/mixin-primitive-on-generic-4.scala21
-rw-r--r--tests/run/mixin-primitive-on-generic-5.check2
-rw-r--r--tests/run/mixin-primitive-on-generic-5.scala21
25 files changed, 206 insertions, 12 deletions
diff --git a/tests/neg/customArgs/overrideClass.scala b/tests/neg/customArgs/overrideClass.scala
index 803d97dd9..431b846d9 100644
--- a/tests/neg/customArgs/overrideClass.scala
+++ b/tests/neg/customArgs/overrideClass.scala
@@ -8,8 +8,7 @@
}
trait FooB extends FooA {
type A <: Ax;
- trait Ax extends super.Ax { def xxx : Int; } // error: cyclic inheritance: trait Ax extends itself
- // (Note that inheriting a class of the same name is no longer allowed)
+ trait Ax extends super.Ax { def xxx : Int; } // error: cyclic inheritance: trait Ax extends itself) // error: class definitions cannot be overridden
abstract class InnerB extends InnerA {
// type B <: A;
val a : A = doB;
diff --git a/tests/neg/i1750.scala b/tests/neg/i1750.scala
new file mode 100644
index 000000000..a2ebe8f2b
--- /dev/null
+++ b/tests/neg/i1750.scala
@@ -0,0 +1,12 @@
+trait Lang1 {
+ trait Exp
+ trait Visitor { def f(left: Exp): Unit }
+ class Eval1 extends Visitor { self =>
+ def f(left: Exp) = ()
+ }
+}
+trait Lang2 extends Lang1 {
+ class Visitor extends Eval1 { Visitor => // error: classes cannot be overridden
+ }
+}
+
diff --git a/tests/neg/i1750a.scala b/tests/neg/i1750a.scala
new file mode 100644
index 000000000..cbb5bec95
--- /dev/null
+++ b/tests/neg/i1750a.scala
@@ -0,0 +1,13 @@
+trait Lang1 {
+ trait Exp
+ trait Visitor { def f(left: Exp): Unit }
+ class Eval1 extends Visitor { self =>
+ def f(left: Exp) = ()
+ }
+}
+trait Lang3 { self: Lang1 =>
+ class Visitor extends Eval1 { Visitor => // error: classes cannot be overridden
+ }
+}
+trait Lang4 extends Lang1 with Lang3
+
diff --git a/tests/neg/i1806.scala b/tests/neg/i1806.scala
index 7e5e132f2..199ab4791 100644
--- a/tests/neg/i1806.scala
+++ b/tests/neg/i1806.scala
@@ -2,6 +2,6 @@ trait A {
class Inner
}
trait B extends A {
- class Inner extends super.Inner // error
+ class Inner extends super.Inner // error // error
}
diff --git a/tests/neg/i1845.scala b/tests/neg/i1845.scala
index e3e5787e6..1ecffdc7d 100644
--- a/tests/neg/i1845.scala
+++ b/tests/neg/i1845.scala
@@ -1,3 +1,3 @@
object Test {
type X = FooBar22.this // error
-} // error
+}
diff --git a/tests/neg/overrides.scala b/tests/neg/overrides.scala
index 81a93a7a2..149220bd5 100644
--- a/tests/neg/overrides.scala
+++ b/tests/neg/overrides.scala
@@ -34,11 +34,6 @@ package p2 { // all being in the same package compiles fine
}
}
- abstract class T3 extends T2 {
- class A { // error: classes cannot be overridden
- bug()
- }
- }
}
class A[T] {
diff --git a/tests/neg/t7278.scala b/tests/neg/t7278.scala
index 643a3c858..7b13535f0 100644
--- a/tests/neg/t7278.scala
+++ b/tests/neg/t7278.scala
@@ -1,5 +1,5 @@
class A { class E }
-class B extends A { class E }
+class B extends A { class EB }
trait C { type E = Int }
trait D { type E = String }
trait EC { type E }
diff --git a/tests/pos-java-interop/innerClass/Outer.scala b/tests/pos-java-interop/innerClass/Outer.scala
new file mode 100644
index 000000000..b47d91cc1
--- /dev/null
+++ b/tests/pos-java-interop/innerClass/Outer.scala
@@ -0,0 +1,8 @@
+class Outer {
+ class InnerInClass
+
+ def inner() = new InnerInClass
+}
+object Outer {
+ class InnerInObject
+}
diff --git a/tests/pos-java-interop/innerClass/Test.java b/tests/pos-java-interop/innerClass/Test.java
new file mode 100644
index 000000000..5d053195d
--- /dev/null
+++ b/tests/pos-java-interop/innerClass/Test.java
@@ -0,0 +1,8 @@
+public class Test {
+ public static void test() {
+ Outer outer = new Outer();
+ Outer.InnerInClass innerInClass = outer.inner();
+
+ Outer.InnerInObject innerInObject = new Outer.InnerInObject();
+ }
+}
diff --git a/tests/pos/i1687.scala b/tests/pos/i1687.scala
new file mode 100644
index 000000000..d91c851e6
--- /dev/null
+++ b/tests/pos/i1687.scala
@@ -0,0 +1,10 @@
+object O {
+ def f: String = {
+ "1" + 1 + "1" + 1 +
+ "1" + 1 + "1" + 1 +
+ "1" + 1 + "1" + 1 +
+ "1" + 1 + "1" + 1 +
+ "1" + 1 + "1" + 1 +
+ "1" + 1 + "1" + 1
+ }
+}
diff --git a/tests/pos/i1687b.scala b/tests/pos/i1687b.scala
new file mode 100644
index 000000000..46bb6649c
--- /dev/null
+++ b/tests/pos/i1687b.scala
@@ -0,0 +1,19 @@
+object O {
+ def f: String = {
+ "1" + 1 + "1" + 1 +
+ "1" + 1 + "1" + 1 +
+ "1" + 1 + "1" + 1 +
+ "1" + 1 + "1" + 1 +
+ "1" + 1 + "1" + 1 +
+ "1" + 1 + "1" + 1 +
+ "1" + 1 + "1" + 1 +
+ "1" + 1 + "1" + 1 +
+ "1" + 1 + "1" + 1 +
+ "1" + 1 + "1" + 1 +
+ "1" + 1 + "1" + 1 +
+ "1" + 1 + "1" + 1 +
+ "1" + 1 + "1" + 1 +
+ "1" + 1 + "1" + 1 +
+ "1" + 1 + "1" + 1
+ }
+}
diff --git a/tests/pos/i1867.scala b/tests/pos/i1867.scala
new file mode 100644
index 000000000..b6377c4f0
--- /dev/null
+++ b/tests/pos/i1867.scala
@@ -0,0 +1,3 @@
+trait B {
+ def f1: {}
+}
diff --git a/tests/pos/i1891.scala b/tests/pos/i1891.scala
new file mode 100644
index 000000000..b178c256b
--- /dev/null
+++ b/tests/pos/i1891.scala
@@ -0,0 +1,11 @@
+object Test {
+ class CC2[A, B](a: A, b: B)
+
+ type T2[A, B] = CC2[A, B]
+
+ class ArrowAssoc[A](val self: A) {
+ @inline def f[B](y: B): CC2[A, B] = new CC2(self, y)
+ }
+
+ def foo = (new ArrowAssoc(1)).f(2)
+}
diff --git a/tests/repl/vc.check b/tests/repl/vc.check
new file mode 100644
index 000000000..e2c9b65fd
--- /dev/null
+++ b/tests/repl/vc.check
@@ -0,0 +1,5 @@
+scala> class Foo(x: Int) extends AnyVal { def hi: Int = 1 }
+defined class Foo
+scala> new Foo(1).hi
+val res0: Int = 1
+scala> :quit
diff --git a/tests/pos/functionXXL.scala b/tests/run/functionXXL.scala
index 1063e4170..de8c8e3fa 100644
--- a/tests/pos/functionXXL.scala
+++ b/tests/run/functionXXL.scala
@@ -59,12 +59,12 @@ object Test {
- println(f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
+ assert(42 == f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
21, 22, 23, 24, 25, 26))
- println(g(1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
+ assert(42 == g(1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
21, 22, 23, 24, 25, 26))
}
diff --git a/tests/run/mixin-primitive-on-generic-1.check b/tests/run/mixin-primitive-on-generic-1.check
new file mode 100644
index 000000000..bb101b641
--- /dev/null
+++ b/tests/run/mixin-primitive-on-generic-1.check
@@ -0,0 +1,2 @@
+true
+true
diff --git a/tests/run/mixin-primitive-on-generic-1.scala b/tests/run/mixin-primitive-on-generic-1.scala
new file mode 100644
index 000000000..470f543ce
--- /dev/null
+++ b/tests/run/mixin-primitive-on-generic-1.scala
@@ -0,0 +1,19 @@
+
+object Test {
+ def main(args: Array[String]): Unit = {
+ println((new Foo: Baz).value1)
+ println((new Foo: Baz).value2)
+ }
+}
+
+class Foo extends Bar[Boolean](true) with Baz
+
+class Bar[T](x: T) {
+ def value1: T = x
+ def value2(): T = x
+}
+
+trait Baz {
+ def value1: Boolean
+ def value2(): Boolean
+}
diff --git a/tests/run/mixin-primitive-on-generic-2.check b/tests/run/mixin-primitive-on-generic-2.check
new file mode 100644
index 000000000..bb101b641
--- /dev/null
+++ b/tests/run/mixin-primitive-on-generic-2.check
@@ -0,0 +1,2 @@
+true
+true
diff --git a/tests/run/mixin-primitive-on-generic-2.scala b/tests/run/mixin-primitive-on-generic-2.scala
new file mode 100644
index 000000000..37e3f6035
--- /dev/null
+++ b/tests/run/mixin-primitive-on-generic-2.scala
@@ -0,0 +1,19 @@
+
+object Test {
+ def main(args: Array[String]): Unit = {
+ println((new Foo: Bar[Boolean]).value1)
+ println((new Foo: Bar[Boolean]).value2)
+ }
+}
+
+class Foo extends Baz with Bar[Boolean]
+
+trait Bar[T] {
+ def value1: T
+ def value2(): T
+}
+
+class Baz {
+ def value1: Boolean = true
+ def value2(): Boolean = true
+}
diff --git a/tests/run/mixin-primitive-on-generic-3.check b/tests/run/mixin-primitive-on-generic-3.check
new file mode 100644
index 000000000..bb101b641
--- /dev/null
+++ b/tests/run/mixin-primitive-on-generic-3.check
@@ -0,0 +1,2 @@
+true
+true
diff --git a/tests/run/mixin-primitive-on-generic-3.scala b/tests/run/mixin-primitive-on-generic-3.scala
new file mode 100644
index 000000000..f6ff0b63e
--- /dev/null
+++ b/tests/run/mixin-primitive-on-generic-3.scala
@@ -0,0 +1,21 @@
+
+object Test {
+ def main(args: Array[String]): Unit = {
+ println((new Foo: Baz).value)
+ println((new Foo: Qux).value)
+ }
+}
+
+class Foo extends Bar[Boolean](true) with Baz with Qux
+
+class Bar[T](x: T) {
+ def value: T = x
+}
+
+trait Baz {
+ def value: Boolean
+}
+
+trait Qux {
+ def value: Boolean
+}
diff --git a/tests/run/mixin-primitive-on-generic-4.check b/tests/run/mixin-primitive-on-generic-4.check
new file mode 100644
index 000000000..bb101b641
--- /dev/null
+++ b/tests/run/mixin-primitive-on-generic-4.check
@@ -0,0 +1,2 @@
+true
+true
diff --git a/tests/run/mixin-primitive-on-generic-4.scala b/tests/run/mixin-primitive-on-generic-4.scala
new file mode 100644
index 000000000..ddf62b92f
--- /dev/null
+++ b/tests/run/mixin-primitive-on-generic-4.scala
@@ -0,0 +1,21 @@
+
+object Test {
+ def main(args: Array[String]): Unit = {
+ println((new Foo: Baz).value1.v)
+ println((new Foo: Baz).value2.v)
+ }
+}
+
+class Foo extends Bar[VBoolean](new VBoolean(true)) with Baz
+
+class Bar[T](x: T) {
+ def value1: T = x
+ def value2(): T = x
+}
+
+trait Baz {
+ def value1: VBoolean
+ def value2(): VBoolean
+}
+
+class VBoolean(val v: Boolean) extends AnyVal
diff --git a/tests/run/mixin-primitive-on-generic-5.check b/tests/run/mixin-primitive-on-generic-5.check
new file mode 100644
index 000000000..bb101b641
--- /dev/null
+++ b/tests/run/mixin-primitive-on-generic-5.check
@@ -0,0 +1,2 @@
+true
+true
diff --git a/tests/run/mixin-primitive-on-generic-5.scala b/tests/run/mixin-primitive-on-generic-5.scala
new file mode 100644
index 000000000..438c130de
--- /dev/null
+++ b/tests/run/mixin-primitive-on-generic-5.scala
@@ -0,0 +1,21 @@
+
+object Test {
+ def main(args: Array[String]): Unit = {
+ println((new Foo: Bar[VBoolean]).value1.v)
+ println((new Foo: Bar[VBoolean]).value2.v)
+ }
+}
+
+class Foo extends Baz with Bar[VBoolean]
+
+trait Bar[T] {
+ def value1: T
+ def value2(): T
+}
+
+class Baz {
+ def value1: VBoolean = new VBoolean(true)
+ def value2(): VBoolean = new VBoolean(true)
+}
+
+class VBoolean(val v: Boolean) extends AnyVal