summaryrefslogtreecommitdiff
path: root/test/files/run
diff options
context:
space:
mode:
authorAleksandar Prokopec <axel22@gmail.com>2012-03-21 15:21:00 +0100
committerAleksandar Prokopec <axel22@gmail.com>2012-03-21 15:21:00 +0100
commit0321df7292018d1e7408ef9ad193c8fc7bf4765d (patch)
tree6152d94c2b614bb823f75d864c2a729e8221248a /test/files/run
parent13a325b126ac6f2f5d2e7d1fc2c008d012367430 (diff)
parentf6c050e8cfa5bd1ee4bbb3434086d2ae2d35e5f7 (diff)
downloadscala-0321df7292018d1e7408ef9ad193c8fc7bf4765d.tar.gz
scala-0321df7292018d1e7408ef9ad193c8fc7bf4765d.tar.bz2
scala-0321df7292018d1e7408ef9ad193c8fc7bf4765d.zip
Merge branch 'master' into feature/pc-execution-contexts
Diffstat (limited to 'test/files/run')
-rw-r--r--test/files/run/Meter.check21
-rw-r--r--test/files/run/Meter.scala102
-rw-r--r--test/files/run/MeterCaseClass.check21
-rw-r--r--test/files/run/MeterCaseClass.scala99
-rw-r--r--test/files/run/color.check693
-rw-r--r--test/files/run/color.scala33
-rw-r--r--test/files/run/compiler-asSeenFrom.check323
-rw-r--r--test/files/run/compiler-asSeenFrom.scala122
-rw-r--r--test/files/run/ctries/concmap.scala24
-rw-r--r--test/files/run/ctries/iterator.scala20
-rw-r--r--test/files/run/ctries/lnode.scala14
-rw-r--r--test/files/run/ctries/snapshot.scala26
-rw-r--r--test/files/run/existentials-in-compiler.scala2
-rw-r--r--test/files/run/existentials3.check44
-rw-r--r--test/files/run/genericValueClass.check2
-rw-r--r--test/files/run/genericValueClass.scala17
-rw-r--r--test/files/run/matchonseq.check2
-rw-r--r--test/files/run/matchonseq.scala8
-rw-r--r--test/files/run/primitive-sigs-2.check2
-rw-r--r--test/files/run/programmatic-main.check42
-rw-r--r--test/files/run/reify_ann1a.check4
-rw-r--r--test/files/run/reify_ann1b.check4
-rw-r--r--test/files/run/reify_classfileann_a.check4
-rw-r--r--test/files/run/repl-parens.check2
-rwxr-xr-x[-rw-r--r--]test/files/run/t0663.check2
-rw-r--r--test/files/run/t1195.check12
-rwxr-xr-x[-rw-r--r--]test/files/run/t1620.check4
-rwxr-xr-x[-rw-r--r--]test/files/run/t2124.check2
-rwxr-xr-x[-rw-r--r--]test/files/run/t2125.check2
-rw-r--r--test/files/run/t4172.check2
-rw-r--r--test/files/run/t4891.check1
-rw-r--r--test/files/run/t5224.check2
-rw-r--r--test/files/run/t5271_1.check2
-rw-r--r--test/files/run/t5271_2.check2
-rw-r--r--test/files/run/t5271_3.check4
-rw-r--r--test/files/run/t5527.check14
-rw-r--r--test/files/run/valueclasses-constr.check2
-rw-r--r--test/files/run/valueclasses-constr.scala25
-rw-r--r--test/files/run/xml-attribute.check24
39 files changed, 1601 insertions, 130 deletions
diff --git a/test/files/run/Meter.check b/test/files/run/Meter.check
new file mode 100644
index 0000000000..7562f9a1bf
--- /dev/null
+++ b/test/files/run/Meter.check
@@ -0,0 +1,21 @@
+2.0
+4.0m
+false
+x.isInstanceOf[Meter]: true
+x.hashCode: 1072693248
+x == 1: false
+x == y: true
+a == b: true
+testing native arrays
+Array(1.0m, 2.0m)
+1.0m
+>>>1.0m<<< 1.0m
+>>>2.0m<<< 2.0m
+testing wrapped arrays
+FlatArray(1.0m, 2.0m)
+1.0m
+>>>1.0m<<< 1.0m
+>>>2.0m<<< 2.0m
+FlatArray(2.0m, 3.0m)
+ArrayBuffer(1.0, 2.0)
+FlatArray(0.3048ft, 0.6096ft)
diff --git a/test/files/run/Meter.scala b/test/files/run/Meter.scala
new file mode 100644
index 0000000000..515e46de24
--- /dev/null
+++ b/test/files/run/Meter.scala
@@ -0,0 +1,102 @@
+package a {
+ class Meter(val underlying: Double) extends AnyVal with _root_.b.Printable {
+ def + (other: Meter): Meter =
+ new Meter(this.underlying + other.underlying)
+ def / (other: Meter): Double = this.underlying / other.underlying
+ def / (factor: Double): Meter = new Meter(this.underlying / factor)
+ def < (other: Meter): Boolean = this.underlying < other.underlying
+ def toFoot: Foot = new Foot(this.underlying * 0.3048)
+ override def print = { Console.print(">>>"); super.print; proprint }
+ override def toString: String = underlying.toString+"m"
+ }
+
+ object Meter extends (Double => Meter) {
+
+ def apply(x: Double): Meter = new Meter(x)
+
+ implicit val boxings = new BoxingConversions[Meter, Double] {
+ def box(x: Double) = new Meter(x)
+ def unbox(m: Meter) = m.underlying
+ }
+ }
+
+ class Foot(val unbox: Double) extends AnyVal {
+ def + (other: Foot): Foot =
+ new Foot(this.unbox + other.unbox)
+ override def toString = unbox.toString+"ft"
+ }
+ object Foot {
+ implicit val boxings = new BoxingConversions[Foot, Double] {
+ def box(x: Double) = new Foot(x)
+ def unbox(m: Foot) = m.unbox
+ }
+ }
+
+}
+package b {
+ trait Printable extends Any {
+ def print: Unit = Console.print(this)
+ protected def proprint = Console.print("<<<")
+ }
+}
+import a._
+import _root_.b._
+object Test extends App {
+
+ {
+ val x: Meter = new Meter(1)
+ val a: Object = x.asInstanceOf[Object]
+ val y: Meter = a.asInstanceOf[Meter]
+
+ val u: Double = 1
+ val b: Object = u.asInstanceOf[Object]
+ val v: Double = b.asInstanceOf[Double]
+ }
+
+ val x = new Meter(1)
+ val y = x
+ println((x + x) / x)
+ println((x + x) / 0.5)
+ println((x < x).toString)
+ println("x.isInstanceOf[Meter]: "+x.isInstanceOf[Meter])
+
+
+ println("x.hashCode: "+x.hashCode)
+ println("x == 1: "+(x == 1))
+ println("x == y: "+(x == y))
+ assert(x.hashCode == (1.0).hashCode)
+
+ val a: Any = x
+ val b: Any = y
+ println("a == b: "+(a == b))
+
+ { println("testing native arrays")
+ val arr = Array(x, y + x)
+ println(arr.deep)
+ def foo[T <: Printable](x: Array[T]) {
+ for (i <- 0 until x.length) { x(i).print; println(" "+x(i)) }
+ }
+ val m = arr(0)
+ println(m)
+ foo(arr)
+ }
+
+ { println("testing wrapped arrays")
+ import collection.mutable.FlatArray
+ val arr = FlatArray(x, y + x)
+ println(arr)
+ def foo(x: FlatArray[Meter]) {
+ for (i <- 0 until x.length) { x(i).print; println(" "+x(i)) }
+ }
+ val m = arr(0)
+ println(m)
+ foo(arr)
+ val ys: Seq[Meter] = arr map (_ + new Meter(1))
+ println(ys)
+ val zs = arr map (_ / Meter(1))
+ println(zs)
+ val fs = arr map (_.toFoot)
+ println(fs)
+ }
+
+}
diff --git a/test/files/run/MeterCaseClass.check b/test/files/run/MeterCaseClass.check
new file mode 100644
index 0000000000..08370d2097
--- /dev/null
+++ b/test/files/run/MeterCaseClass.check
@@ -0,0 +1,21 @@
+2.0
+Meter(4.0)
+false
+x.isInstanceOf[Meter]: true
+x.hashCode: 1072693248
+x == 1: false
+x == y: true
+a == b: true
+testing native arrays
+Array(Meter(1.0), Meter(2.0))
+Meter(1.0)
+>>>Meter(1.0)<<< Meter(1.0)
+>>>Meter(2.0)<<< Meter(2.0)
+testing wrapped arrays
+FlatArray(Meter(1.0), Meter(2.0))
+Meter(1.0)
+>>>Meter(1.0)<<< Meter(1.0)
+>>>Meter(2.0)<<< Meter(2.0)
+FlatArray(Meter(2.0), Meter(3.0))
+ArrayBuffer(1.0, 2.0)
+FlatArray(0.3048ft, 0.6096ft)
diff --git a/test/files/run/MeterCaseClass.scala b/test/files/run/MeterCaseClass.scala
new file mode 100644
index 0000000000..8459163f31
--- /dev/null
+++ b/test/files/run/MeterCaseClass.scala
@@ -0,0 +1,99 @@
+package a {
+ case class Meter(underlying: Double) extends AnyVal with _root_.b.Printable {
+ def + (other: Meter): Meter =
+ new Meter(this.underlying + other.underlying)
+ def / (other: Meter): Double = this.underlying / other.underlying
+ def / (factor: Double): Meter = new Meter(this.underlying / factor)
+ def < (other: Meter): Boolean = this.underlying < other.underlying
+ def toFoot: Foot = new Foot(this.underlying * 0.3048)
+ override def print = { Console.print(">>>"); super.print; proprint }
+ }
+
+ object Meter extends (Double => Meter) {
+
+ implicit val boxings = new BoxingConversions[Meter, Double] {
+ def box(x: Double) = new Meter(x)
+ def unbox(m: Meter) = m.underlying
+ }
+ }
+
+ class Foot(val unbox: Double) extends AnyVal {
+ def + (other: Foot): Foot =
+ new Foot(this.unbox + other.unbox)
+ override def toString = unbox.toString+"ft"
+ }
+ object Foot {
+ implicit val boxings = new BoxingConversions[Foot, Double] {
+ def box(x: Double) = new Foot(x)
+ def unbox(m: Foot) = m.unbox
+ }
+ }
+
+}
+package b {
+ trait Printable extends Any {
+ def print: Unit = Console.print(this)
+ protected def proprint = Console.print("<<<")
+ }
+}
+import a._
+import _root_.b._
+object Test extends App {
+
+ {
+ val x: Meter = new Meter(1)
+ val a: Object = x.asInstanceOf[Object]
+ val y: Meter = a.asInstanceOf[Meter]
+
+ val u: Double = 1
+ val b: Object = u.asInstanceOf[Object]
+ val v: Double = b.asInstanceOf[Double]
+ }
+
+ val x = new Meter(1)
+ val y = x
+ println((x + x) / x)
+ println((x + x) / 0.5)
+ println((x < x).toString)
+ println("x.isInstanceOf[Meter]: "+x.isInstanceOf[Meter])
+
+
+ println("x.hashCode: "+x.hashCode)
+ println("x == 1: "+(x == 1))
+ println("x == y: "+(x == y))
+ assert(x.hashCode == (1.0).hashCode)
+
+ val a: Any = x
+ val b: Any = y
+ println("a == b: "+(a == b))
+
+ { println("testing native arrays")
+ val arr = Array(x, y + x)
+ println(arr.deep)
+ def foo[T <: Printable](x: Array[T]) {
+ for (i <- 0 until x.length) { x(i).print; println(" "+x(i)) }
+ }
+ val m = arr(0)
+ println(m)
+ foo(arr)
+ }
+
+ { println("testing wrapped arrays")
+ import collection.mutable.FlatArray
+ val arr = FlatArray(x, y + x)
+ println(arr)
+ def foo(x: FlatArray[Meter]) {
+ for (i <- 0 until x.length) { x(i).print; println(" "+x(i)) }
+ }
+ val m = arr(0)
+ println(m)
+ foo(arr)
+ val ys: Seq[Meter] = arr map (_ + new Meter(1))
+ println(ys)
+ val zs = arr map (_ / Meter(1))
+ println(zs)
+ val fs = arr map (_.toFoot)
+ println(fs)
+ }
+
+}
diff --git a/test/files/run/color.check b/test/files/run/color.check
new file mode 100644
index 0000000000..598cc145f0
--- /dev/null
+++ b/test/files/run/color.check
@@ -0,0 +1,693 @@
+
+1 color
+the quick brown fox Black
+the quick brown fox Red
+the quick brown fox Green
+the quick brown fox Yellow
+the quick brown fox Blue
+the quick brown fox Magenta
+the quick brown fox Cyan
+the quick brown fox White
+
+1 effect
+the quick brown fox Reset
+the quick brown fox Bright
+the quick brown fox Faint
+the quick brown fox Italic
+the quick brown fox Underline
+the quick brown fox Blink
+the quick brown fox Inverse
+the quick brown fox Hidden
+the quick brown fox Strikethrough
+
+1 color 1 effect
+the quick brown fox Bright Black
+the quick brown fox Underline Black
+the quick brown fox Inverse Black
+the quick brown fox Bright Red
+the quick brown fox Underline Red
+the quick brown fox Inverse Red
+the quick brown fox Bright Green
+the quick brown fox Underline Green
+the quick brown fox Inverse Green
+the quick brown fox Bright Yellow
+the quick brown fox Underline Yellow
+the quick brown fox Inverse Yellow
+the quick brown fox Bright Blue
+the quick brown fox Underline Blue
+the quick brown fox Inverse Blue
+the quick brown fox Bright Magenta
+the quick brown fox Underline Magenta
+the quick brown fox Inverse Magenta
+the quick brown fox Bright Cyan
+the quick brown fox Underline Cyan
+the quick brown fox Inverse Cyan
+the quick brown fox Bright White
+the quick brown fox Underline White
+the quick brown fox Inverse White
+
+2 colors 0 effects
+the quick brown fox Black (on Black background)
+the quick brown fox Red (on Black background)
+the quick brown fox Green (on Black background)
+the quick brown fox Yellow (on Black background)
+the quick brown fox Blue (on Black background)
+the quick brown fox Magenta (on Black background)
+the quick brown fox Cyan (on Black background)
+the quick brown fox White (on Black background)
+the quick brown fox Black (on Red background)
+the quick brown fox Red (on Red background)
+the quick brown fox Green (on Red background)
+the quick brown fox Yellow (on Red background)
+the quick brown fox Blue (on Red background)
+the quick brown fox Magenta (on Red background)
+the quick brown fox Cyan (on Red background)
+the quick brown fox White (on Red background)
+the quick brown fox Black (on Green background)
+the quick brown fox Red (on Green background)
+the quick brown fox Green (on Green background)
+the quick brown fox Yellow (on Green background)
+the quick brown fox Blue (on Green background)
+the quick brown fox Magenta (on Green background)
+the quick brown fox Cyan (on Green background)
+the quick brown fox White (on Green background)
+the quick brown fox Black (on Yellow background)
+the quick brown fox Red (on Yellow background)
+the quick brown fox Green (on Yellow background)
+the quick brown fox Yellow (on Yellow background)
+the quick brown fox Blue (on Yellow background)
+the quick brown fox Magenta (on Yellow background)
+the quick brown fox Cyan (on Yellow background)
+the quick brown fox White (on Yellow background)
+the quick brown fox Black (on Blue background)
+the quick brown fox Red (on Blue background)
+the quick brown fox Green (on Blue background)
+the quick brown fox Yellow (on Blue background)
+the quick brown fox Blue (on Blue background)
+the quick brown fox Magenta (on Blue background)
+the quick brown fox Cyan (on Blue background)
+the quick brown fox White (on Blue background)
+the quick brown fox Black (on Magenta background)
+the quick brown fox Red (on Magenta background)
+the quick brown fox Green (on Magenta background)
+the quick brown fox Yellow (on Magenta background)
+the quick brown fox Blue (on Magenta background)
+the quick brown fox Magenta (on Magenta background)
+the quick brown fox Cyan (on Magenta background)
+the quick brown fox White (on Magenta background)
+the quick brown fox Black (on Cyan background)
+the quick brown fox Red (on Cyan background)
+the quick brown fox Green (on Cyan background)
+the quick brown fox Yellow (on Cyan background)
+the quick brown fox Blue (on Cyan background)
+the quick brown fox Magenta (on Cyan background)
+the quick brown fox Cyan (on Cyan background)
+the quick brown fox White (on Cyan background)
+the quick brown fox Black (on White background)
+the quick brown fox Red (on White background)
+the quick brown fox Green (on White background)
+the quick brown fox Yellow (on White background)
+the quick brown fox Blue (on White background)
+the quick brown fox Magenta (on White background)
+the quick brown fox Cyan (on White background)
+the quick brown fox White (on White background)
+
+2 colors 1 effect
+the quick brown fox Bright Black (on Black background)
+the quick brown fox Underline Black (on Black background)
+the quick brown fox Inverse Black (on Black background)
+the quick brown fox Bright Red (on Black background)
+the quick brown fox Underline Red (on Black background)
+the quick brown fox Inverse Red (on Black background)
+the quick brown fox Bright Green (on Black background)
+the quick brown fox Underline Green (on Black background)
+the quick brown fox Inverse Green (on Black background)
+the quick brown fox Bright Yellow (on Black background)
+the quick brown fox Underline Yellow (on Black background)
+the quick brown fox Inverse Yellow (on Black background)
+the quick brown fox Bright Blue (on Black background)
+the quick brown fox Underline Blue (on Black background)
+the quick brown fox Inverse Blue (on Black background)
+the quick brown fox Bright Magenta (on Black background)
+the quick brown fox Underline Magenta (on Black background)
+the quick brown fox Inverse Magenta (on Black background)
+the quick brown fox Bright Cyan (on Black background)
+the quick brown fox Underline Cyan (on Black background)
+the quick brown fox Inverse Cyan (on Black background)
+the quick brown fox Bright White (on Black background)
+the quick brown fox Underline White (on Black background)
+the quick brown fox Inverse White (on Black background)
+the quick brown fox Bright Black (on Red background)
+the quick brown fox Underline Black (on Red background)
+the quick brown fox Inverse Black (on Red background)
+the quick brown fox Bright Red (on Red background)
+the quick brown fox Underline Red (on Red background)
+the quick brown fox Inverse Red (on Red background)
+the quick brown fox Bright Green (on Red background)
+the quick brown fox Underline Green (on Red background)
+the quick brown fox Inverse Green (on Red background)
+the quick brown fox Bright Yellow (on Red background)
+the quick brown fox Underline Yellow (on Red background)
+the quick brown fox Inverse Yellow (on Red background)
+the quick brown fox Bright Blue (on Red background)
+the quick brown fox Underline Blue (on Red background)
+the quick brown fox Inverse Blue (on Red background)
+the quick brown fox Bright Magenta (on Red background)
+the quick brown fox Underline Magenta (on Red background)
+the quick brown fox Inverse Magenta (on Red background)
+the quick brown fox Bright Cyan (on Red background)
+the quick brown fox Underline Cyan (on Red background)
+the quick brown fox Inverse Cyan (on Red background)
+the quick brown fox Bright White (on Red background)
+the quick brown fox Underline White (on Red background)
+the quick brown fox Inverse White (on Red background)
+the quick brown fox Bright Black (on Green background)
+the quick brown fox Underline Black (on Green background)
+the quick brown fox Inverse Black (on Green background)
+the quick brown fox Bright Red (on Green background)
+the quick brown fox Underline Red (on Green background)
+the quick brown fox Inverse Red (on Green background)
+the quick brown fox Bright Green (on Green background)
+the quick brown fox Underline Green (on Green background)
+the quick brown fox Inverse Green (on Green background)
+the quick brown fox Bright Yellow (on Green background)
+the quick brown fox Underline Yellow (on Green background)
+the quick brown fox Inverse Yellow (on Green background)
+the quick brown fox Bright Blue (on Green background)
+the quick brown fox Underline Blue (on Green background)
+the quick brown fox Inverse Blue (on Green background)
+the quick brown fox Bright Magenta (on Green background)
+the quick brown fox Underline Magenta (on Green background)
+the quick brown fox Inverse Magenta (on Green background)
+the quick brown fox Bright Cyan (on Green background)
+the quick brown fox Underline Cyan (on Green background)
+the quick brown fox Inverse Cyan (on Green background)
+the quick brown fox Bright White (on Green background)
+the quick brown fox Underline White (on Green background)
+the quick brown fox Inverse White (on Green background)
+the quick brown fox Bright Black (on Yellow background)
+the quick brown fox Underline Black (on Yellow background)
+the quick brown fox Inverse Black (on Yellow background)
+the quick brown fox Bright Red (on Yellow background)
+the quick brown fox Underline Red (on Yellow background)
+the quick brown fox Inverse Red (on Yellow background)
+the quick brown fox Bright Green (on Yellow background)
+the quick brown fox Underline Green (on Yellow background)
+the quick brown fox Inverse Green (on Yellow background)
+the quick brown fox Bright Yellow (on Yellow background)
+the quick brown fox Underline Yellow (on Yellow background)
+the quick brown fox Inverse Yellow (on Yellow background)
+the quick brown fox Bright Blue (on Yellow background)
+the quick brown fox Underline Blue (on Yellow background)
+the quick brown fox Inverse Blue (on Yellow background)
+the quick brown fox Bright Magenta (on Yellow background)
+the quick brown fox Underline Magenta (on Yellow background)
+the quick brown fox Inverse Magenta (on Yellow background)
+the quick brown fox Bright Cyan (on Yellow background)
+the quick brown fox Underline Cyan (on Yellow background)
+the quick brown fox Inverse Cyan (on Yellow background)
+the quick brown fox Bright White (on Yellow background)
+the quick brown fox Underline White (on Yellow background)
+the quick brown fox Inverse White (on Yellow background)
+the quick brown fox Bright Black (on Blue background)
+the quick brown fox Underline Black (on Blue background)
+the quick brown fox Inverse Black (on Blue background)
+the quick brown fox Bright Red (on Blue background)
+the quick brown fox Underline Red (on Blue background)
+the quick brown fox Inverse Red (on Blue background)
+the quick brown fox Bright Green (on Blue background)
+the quick brown fox Underline Green (on Blue background)
+the quick brown fox Inverse Green (on Blue background)
+the quick brown fox Bright Yellow (on Blue background)
+the quick brown fox Underline Yellow (on Blue background)
+the quick brown fox Inverse Yellow (on Blue background)
+the quick brown fox Bright Blue (on Blue background)
+the quick brown fox Underline Blue (on Blue background)
+the quick brown fox Inverse Blue (on Blue background)
+the quick brown fox Bright Magenta (on Blue background)
+the quick brown fox Underline Magenta (on Blue background)
+the quick brown fox Inverse Magenta (on Blue background)
+the quick brown fox Bright Cyan (on Blue background)
+the quick brown fox Underline Cyan (on Blue background)
+the quick brown fox Inverse Cyan (on Blue background)
+the quick brown fox Bright White (on Blue background)
+the quick brown fox Underline White (on Blue background)
+the quick brown fox Inverse White (on Blue background)
+the quick brown fox Bright Black (on Magenta background)
+the quick brown fox Underline Black (on Magenta background)
+the quick brown fox Inverse Black (on Magenta background)
+the quick brown fox Bright Red (on Magenta background)
+the quick brown fox Underline Red (on Magenta background)
+the quick brown fox Inverse Red (on Magenta background)
+the quick brown fox Bright Green (on Magenta background)
+the quick brown fox Underline Green (on Magenta background)
+the quick brown fox Inverse Green (on Magenta background)
+the quick brown fox Bright Yellow (on Magenta background)
+the quick brown fox Underline Yellow (on Magenta background)
+the quick brown fox Inverse Yellow (on Magenta background)
+the quick brown fox Bright Blue (on Magenta background)
+the quick brown fox Underline Blue (on Magenta background)
+the quick brown fox Inverse Blue (on Magenta background)
+the quick brown fox Bright Magenta (on Magenta background)
+the quick brown fox Underline Magenta (on Magenta background)
+the quick brown fox Inverse Magenta (on Magenta background)
+the quick brown fox Bright Cyan (on Magenta background)
+the quick brown fox Underline Cyan (on Magenta background)
+the quick brown fox Inverse Cyan (on Magenta background)
+the quick brown fox Bright White (on Magenta background)
+the quick brown fox Underline White (on Magenta background)
+the quick brown fox Inverse White (on Magenta background)
+the quick brown fox Bright Black (on Cyan background)
+the quick brown fox Underline Black (on Cyan background)
+the quick brown fox Inverse Black (on Cyan background)
+the quick brown fox Bright Red (on Cyan background)
+the quick brown fox Underline Red (on Cyan background)
+the quick brown fox Inverse Red (on Cyan background)
+the quick brown fox Bright Green (on Cyan background)
+the quick brown fox Underline Green (on Cyan background)
+the quick brown fox Inverse Green (on Cyan background)
+the quick brown fox Bright Yellow (on Cyan background)
+the quick brown fox Underline Yellow (on Cyan background)
+the quick brown fox Inverse Yellow (on Cyan background)
+the quick brown fox Bright Blue (on Cyan background)
+the quick brown fox Underline Blue (on Cyan background)
+the quick brown fox Inverse Blue (on Cyan background)
+the quick brown fox Bright Magenta (on Cyan background)
+the quick brown fox Underline Magenta (on Cyan background)
+the quick brown fox Inverse Magenta (on Cyan background)
+the quick brown fox Bright Cyan (on Cyan background)
+the quick brown fox Underline Cyan (on Cyan background)
+the quick brown fox Inverse Cyan (on Cyan background)
+the quick brown fox Bright White (on Cyan background)
+the quick brown fox Underline White (on Cyan background)
+the quick brown fox Inverse White (on Cyan background)
+the quick brown fox Bright Black (on White background)
+the quick brown fox Underline Black (on White background)
+the quick brown fox Inverse Black (on White background)
+the quick brown fox Bright Red (on White background)
+the quick brown fox Underline Red (on White background)
+the quick brown fox Inverse Red (on White background)
+the quick brown fox Bright Green (on White background)
+the quick brown fox Underline Green (on White background)
+the quick brown fox Inverse Green (on White background)
+the quick brown fox Bright Yellow (on White background)
+the quick brown fox Underline Yellow (on White background)
+the quick brown fox Inverse Yellow (on White background)
+the quick brown fox Bright Blue (on White background)
+the quick brown fox Underline Blue (on White background)
+the quick brown fox Inverse Blue (on White background)
+the quick brown fox Bright Magenta (on White background)
+the quick brown fox Underline Magenta (on White background)
+the quick brown fox Inverse Magenta (on White background)
+the quick brown fox Bright Cyan (on White background)
+the quick brown fox Underline Cyan (on White background)
+the quick brown fox Inverse Cyan (on White background)
+the quick brown fox Bright White (on White background)
+the quick brown fox Underline White (on White background)
+the quick brown fox Inverse White (on White background)
+
+2 colors 2 effects
+the quick brown fox Bright Underline Black (on Black background)
+the quick brown fox Bright Inverse Black (on Black background)
+the quick brown fox Underline Bright Black (on Black background)
+the quick brown fox Underline Inverse Black (on Black background)
+the quick brown fox Inverse Bright Black (on Black background)
+the quick brown fox Inverse Underline Black (on Black background)
+the quick brown fox Bright Underline Red (on Black background)
+the quick brown fox Bright Inverse Red (on Black background)
+the quick brown fox Underline Bright Red (on Black background)
+the quick brown fox Underline Inverse Red (on Black background)
+the quick brown fox Inverse Bright Red (on Black background)
+the quick brown fox Inverse Underline Red (on Black background)
+the quick brown fox Bright Underline Green (on Black background)
+the quick brown fox Bright Inverse Green (on Black background)
+the quick brown fox Underline Bright Green (on Black background)
+the quick brown fox Underline Inverse Green (on Black background)
+the quick brown fox Inverse Bright Green (on Black background)
+the quick brown fox Inverse Underline Green (on Black background)
+the quick brown fox Bright Underline Yellow (on Black background)
+the quick brown fox Bright Inverse Yellow (on Black background)
+the quick brown fox Underline Bright Yellow (on Black background)
+the quick brown fox Underline Inverse Yellow (on Black background)
+the quick brown fox Inverse Bright Yellow (on Black background)
+the quick brown fox Inverse Underline Yellow (on Black background)
+the quick brown fox Bright Underline Blue (on Black background)
+the quick brown fox Bright Inverse Blue (on Black background)
+the quick brown fox Underline Bright Blue (on Black background)
+the quick brown fox Underline Inverse Blue (on Black background)
+the quick brown fox Inverse Bright Blue (on Black background)
+the quick brown fox Inverse Underline Blue (on Black background)
+the quick brown fox Bright Underline Magenta (on Black background)
+the quick brown fox Bright Inverse Magenta (on Black background)
+the quick brown fox Underline Bright Magenta (on Black background)
+the quick brown fox Underline Inverse Magenta (on Black background)
+the quick brown fox Inverse Bright Magenta (on Black background)
+the quick brown fox Inverse Underline Magenta (on Black background)
+the quick brown fox Bright Underline Cyan (on Black background)
+the quick brown fox Bright Inverse Cyan (on Black background)
+the quick brown fox Underline Bright Cyan (on Black background)
+the quick brown fox Underline Inverse Cyan (on Black background)
+the quick brown fox Inverse Bright Cyan (on Black background)
+the quick brown fox Inverse Underline Cyan (on Black background)
+the quick brown fox Bright Underline White (on Black background)
+the quick brown fox Bright Inverse White (on Black background)
+the quick brown fox Underline Bright White (on Black background)
+the quick brown fox Underline Inverse White (on Black background)
+the quick brown fox Inverse Bright White (on Black background)
+the quick brown fox Inverse Underline White (on Black background)
+the quick brown fox Bright Underline Black (on Red background)
+the quick brown fox Bright Inverse Black (on Red background)
+the quick brown fox Underline Bright Black (on Red background)
+the quick brown fox Underline Inverse Black (on Red background)
+the quick brown fox Inverse Bright Black (on Red background)
+the quick brown fox Inverse Underline Black (on Red background)
+the quick brown fox Bright Underline Red (on Red background)
+the quick brown fox Bright Inverse Red (on Red background)
+the quick brown fox Underline Bright Red (on Red background)
+the quick brown fox Underline Inverse Red (on Red background)
+the quick brown fox Inverse Bright Red (on Red background)
+the quick brown fox Inverse Underline Red (on Red background)
+the quick brown fox Bright Underline Green (on Red background)
+the quick brown fox Bright Inverse Green (on Red background)
+the quick brown fox Underline Bright Green (on Red background)
+the quick brown fox Underline Inverse Green (on Red background)
+the quick brown fox Inverse Bright Green (on Red background)
+the quick brown fox Inverse Underline Green (on Red background)
+the quick brown fox Bright Underline Yellow (on Red background)
+the quick brown fox Bright Inverse Yellow (on Red background)
+the quick brown fox Underline Bright Yellow (on Red background)
+the quick brown fox Underline Inverse Yellow (on Red background)
+the quick brown fox Inverse Bright Yellow (on Red background)
+the quick brown fox Inverse Underline Yellow (on Red background)
+the quick brown fox Bright Underline Blue (on Red background)
+the quick brown fox Bright Inverse Blue (on Red background)
+the quick brown fox Underline Bright Blue (on Red background)
+the quick brown fox Underline Inverse Blue (on Red background)
+the quick brown fox Inverse Bright Blue (on Red background)
+the quick brown fox Inverse Underline Blue (on Red background)
+the quick brown fox Bright Underline Magenta (on Red background)
+the quick brown fox Bright Inverse Magenta (on Red background)
+the quick brown fox Underline Bright Magenta (on Red background)
+the quick brown fox Underline Inverse Magenta (on Red background)
+the quick brown fox Inverse Bright Magenta (on Red background)
+the quick brown fox Inverse Underline Magenta (on Red background)
+the quick brown fox Bright Underline Cyan (on Red background)
+the quick brown fox Bright Inverse Cyan (on Red background)
+the quick brown fox Underline Bright Cyan (on Red background)
+the quick brown fox Underline Inverse Cyan (on Red background)
+the quick brown fox Inverse Bright Cyan (on Red background)
+the quick brown fox Inverse Underline Cyan (on Red background)
+the quick brown fox Bright Underline White (on Red background)
+the quick brown fox Bright Inverse White (on Red background)
+the quick brown fox Underline Bright White (on Red background)
+the quick brown fox Underline Inverse White (on Red background)
+the quick brown fox Inverse Bright White (on Red background)
+the quick brown fox Inverse Underline White (on Red background)
+the quick brown fox Bright Underline Black (on Green background)
+the quick brown fox Bright Inverse Black (on Green background)
+the quick brown fox Underline Bright Black (on Green background)
+the quick brown fox Underline Inverse Black (on Green background)
+the quick brown fox Inverse Bright Black (on Green background)
+the quick brown fox Inverse Underline Black (on Green background)
+the quick brown fox Bright Underline Red (on Green background)
+the quick brown fox Bright Inverse Red (on Green background)
+the quick brown fox Underline Bright Red (on Green background)
+the quick brown fox Underline Inverse Red (on Green background)
+the quick brown fox Inverse Bright Red (on Green background)
+the quick brown fox Inverse Underline Red (on Green background)
+the quick brown fox Bright Underline Green (on Green background)
+the quick brown fox Bright Inverse Green (on Green background)
+the quick brown fox Underline Bright Green (on Green background)
+the quick brown fox Underline Inverse Green (on Green background)
+the quick brown fox Inverse Bright Green (on Green background)
+the quick brown fox Inverse Underline Green (on Green background)
+the quick brown fox Bright Underline Yellow (on Green background)
+the quick brown fox Bright Inverse Yellow (on Green background)
+the quick brown fox Underline Bright Yellow (on Green background)
+the quick brown fox Underline Inverse Yellow (on Green background)
+the quick brown fox Inverse Bright Yellow (on Green background)
+the quick brown fox Inverse Underline Yellow (on Green background)
+the quick brown fox Bright Underline Blue (on Green background)
+the quick brown fox Bright Inverse Blue (on Green background)
+the quick brown fox Underline Bright Blue (on Green background)
+the quick brown fox Underline Inverse Blue (on Green background)
+the quick brown fox Inverse Bright Blue (on Green background)
+the quick brown fox Inverse Underline Blue (on Green background)
+the quick brown fox Bright Underline Magenta (on Green background)
+the quick brown fox Bright Inverse Magenta (on Green background)
+the quick brown fox Underline Bright Magenta (on Green background)
+the quick brown fox Underline Inverse Magenta (on Green background)
+the quick brown fox Inverse Bright Magenta (on Green background)
+the quick brown fox Inverse Underline Magenta (on Green background)
+the quick brown fox Bright Underline Cyan (on Green background)
+the quick brown fox Bright Inverse Cyan (on Green background)
+the quick brown fox Underline Bright Cyan (on Green background)
+the quick brown fox Underline Inverse Cyan (on Green background)
+the quick brown fox Inverse Bright Cyan (on Green background)
+the quick brown fox Inverse Underline Cyan (on Green background)
+the quick brown fox Bright Underline White (on Green background)
+the quick brown fox Bright Inverse White (on Green background)
+the quick brown fox Underline Bright White (on Green background)
+the quick brown fox Underline Inverse White (on Green background)
+the quick brown fox Inverse Bright White (on Green background)
+the quick brown fox Inverse Underline White (on Green background)
+the quick brown fox Bright Underline Black (on Yellow background)
+the quick brown fox Bright Inverse Black (on Yellow background)
+the quick brown fox Underline Bright Black (on Yellow background)
+the quick brown fox Underline Inverse Black (on Yellow background)
+the quick brown fox Inverse Bright Black (on Yellow background)
+the quick brown fox Inverse Underline Black (on Yellow background)
+the quick brown fox Bright Underline Red (on Yellow background)
+the quick brown fox Bright Inverse Red (on Yellow background)
+the quick brown fox Underline Bright Red (on Yellow background)
+the quick brown fox Underline Inverse Red (on Yellow background)
+the quick brown fox Inverse Bright Red (on Yellow background)
+the quick brown fox Inverse Underline Red (on Yellow background)
+the quick brown fox Bright Underline Green (on Yellow background)
+the quick brown fox Bright Inverse Green (on Yellow background)
+the quick brown fox Underline Bright Green (on Yellow background)
+the quick brown fox Underline Inverse Green (on Yellow background)
+the quick brown fox Inverse Bright Green (on Yellow background)
+the quick brown fox Inverse Underline Green (on Yellow background)
+the quick brown fox Bright Underline Yellow (on Yellow background)
+the quick brown fox Bright Inverse Yellow (on Yellow background)
+the quick brown fox Underline Bright Yellow (on Yellow background)
+the quick brown fox Underline Inverse Yellow (on Yellow background)
+the quick brown fox Inverse Bright Yellow (on Yellow background)
+the quick brown fox Inverse Underline Yellow (on Yellow background)
+the quick brown fox Bright Underline Blue (on Yellow background)
+the quick brown fox Bright Inverse Blue (on Yellow background)
+the quick brown fox Underline Bright Blue (on Yellow background)
+the quick brown fox Underline Inverse Blue (on Yellow background)
+the quick brown fox Inverse Bright Blue (on Yellow background)
+the quick brown fox Inverse Underline Blue (on Yellow background)
+the quick brown fox Bright Underline Magenta (on Yellow background)
+the quick brown fox Bright Inverse Magenta (on Yellow background)
+the quick brown fox Underline Bright Magenta (on Yellow background)
+the quick brown fox Underline Inverse Magenta (on Yellow background)
+the quick brown fox Inverse Bright Magenta (on Yellow background)
+the quick brown fox Inverse Underline Magenta (on Yellow background)
+the quick brown fox Bright Underline Cyan (on Yellow background)
+the quick brown fox Bright Inverse Cyan (on Yellow background)
+the quick brown fox Underline Bright Cyan (on Yellow background)
+the quick brown fox Underline Inverse Cyan (on Yellow background)
+the quick brown fox Inverse Bright Cyan (on Yellow background)
+the quick brown fox Inverse Underline Cyan (on Yellow background)
+the quick brown fox Bright Underline White (on Yellow background)
+the quick brown fox Bright Inverse White (on Yellow background)
+the quick brown fox Underline Bright White (on Yellow background)
+the quick brown fox Underline Inverse White (on Yellow background)
+the quick brown fox Inverse Bright White (on Yellow background)
+the quick brown fox Inverse Underline White (on Yellow background)
+the quick brown fox Bright Underline Black (on Blue background)
+the quick brown fox Bright Inverse Black (on Blue background)
+the quick brown fox Underline Bright Black (on Blue background)
+the quick brown fox Underline Inverse Black (on Blue background)
+the quick brown fox Inverse Bright Black (on Blue background)
+the quick brown fox Inverse Underline Black (on Blue background)
+the quick brown fox Bright Underline Red (on Blue background)
+the quick brown fox Bright Inverse Red (on Blue background)
+the quick brown fox Underline Bright Red (on Blue background)
+the quick brown fox Underline Inverse Red (on Blue background)
+the quick brown fox Inverse Bright Red (on Blue background)
+the quick brown fox Inverse Underline Red (on Blue background)
+the quick brown fox Bright Underline Green (on Blue background)
+the quick brown fox Bright Inverse Green (on Blue background)
+the quick brown fox Underline Bright Green (on Blue background)
+the quick brown fox Underline Inverse Green (on Blue background)
+the quick brown fox Inverse Bright Green (on Blue background)
+the quick brown fox Inverse Underline Green (on Blue background)
+the quick brown fox Bright Underline Yellow (on Blue background)
+the quick brown fox Bright Inverse Yellow (on Blue background)
+the quick brown fox Underline Bright Yellow (on Blue background)
+the quick brown fox Underline Inverse Yellow (on Blue background)
+the quick brown fox Inverse Bright Yellow (on Blue background)
+the quick brown fox Inverse Underline Yellow (on Blue background)
+the quick brown fox Bright Underline Blue (on Blue background)
+the quick brown fox Bright Inverse Blue (on Blue background)
+the quick brown fox Underline Bright Blue (on Blue background)
+the quick brown fox Underline Inverse Blue (on Blue background)
+the quick brown fox Inverse Bright Blue (on Blue background)
+the quick brown fox Inverse Underline Blue (on Blue background)
+the quick brown fox Bright Underline Magenta (on Blue background)
+the quick brown fox Bright Inverse Magenta (on Blue background)
+the quick brown fox Underline Bright Magenta (on Blue background)
+the quick brown fox Underline Inverse Magenta (on Blue background)
+the quick brown fox Inverse Bright Magenta (on Blue background)
+the quick brown fox Inverse Underline Magenta (on Blue background)
+the quick brown fox Bright Underline Cyan (on Blue background)
+the quick brown fox Bright Inverse Cyan (on Blue background)
+the quick brown fox Underline Bright Cyan (on Blue background)
+the quick brown fox Underline Inverse Cyan (on Blue background)
+the quick brown fox Inverse Bright Cyan (on Blue background)
+the quick brown fox Inverse Underline Cyan (on Blue background)
+the quick brown fox Bright Underline White (on Blue background)
+the quick brown fox Bright Inverse White (on Blue background)
+the quick brown fox Underline Bright White (on Blue background)
+the quick brown fox Underline Inverse White (on Blue background)
+the quick brown fox Inverse Bright White (on Blue background)
+the quick brown fox Inverse Underline White (on Blue background)
+the quick brown fox Bright Underline Black (on Magenta background)
+the quick brown fox Bright Inverse Black (on Magenta background)
+the quick brown fox Underline Bright Black (on Magenta background)
+the quick brown fox Underline Inverse Black (on Magenta background)
+the quick brown fox Inverse Bright Black (on Magenta background)
+the quick brown fox Inverse Underline Black (on Magenta background)
+the quick brown fox Bright Underline Red (on Magenta background)
+the quick brown fox Bright Inverse Red (on Magenta background)
+the quick brown fox Underline Bright Red (on Magenta background)
+the quick brown fox Underline Inverse Red (on Magenta background)
+the quick brown fox Inverse Bright Red (on Magenta background)
+the quick brown fox Inverse Underline Red (on Magenta background)
+the quick brown fox Bright Underline Green (on Magenta background)
+the quick brown fox Bright Inverse Green (on Magenta background)
+the quick brown fox Underline Bright Green (on Magenta background)
+the quick brown fox Underline Inverse Green (on Magenta background)
+the quick brown fox Inverse Bright Green (on Magenta background)
+the quick brown fox Inverse Underline Green (on Magenta background)
+the quick brown fox Bright Underline Yellow (on Magenta background)
+the quick brown fox Bright Inverse Yellow (on Magenta background)
+the quick brown fox Underline Bright Yellow (on Magenta background)
+the quick brown fox Underline Inverse Yellow (on Magenta background)
+the quick brown fox Inverse Bright Yellow (on Magenta background)
+the quick brown fox Inverse Underline Yellow (on Magenta background)
+the quick brown fox Bright Underline Blue (on Magenta background)
+the quick brown fox Bright Inverse Blue (on Magenta background)
+the quick brown fox Underline Bright Blue (on Magenta background)
+the quick brown fox Underline Inverse Blue (on Magenta background)
+the quick brown fox Inverse Bright Blue (on Magenta background)
+the quick brown fox Inverse Underline Blue (on Magenta background)
+the quick brown fox Bright Underline Magenta (on Magenta background)
+the quick brown fox Bright Inverse Magenta (on Magenta background)
+the quick brown fox Underline Bright Magenta (on Magenta background)
+the quick brown fox Underline Inverse Magenta (on Magenta background)
+the quick brown fox Inverse Bright Magenta (on Magenta background)
+the quick brown fox Inverse Underline Magenta (on Magenta background)
+the quick brown fox Bright Underline Cyan (on Magenta background)
+the quick brown fox Bright Inverse Cyan (on Magenta background)
+the quick brown fox Underline Bright Cyan (on Magenta background)
+the quick brown fox Underline Inverse Cyan (on Magenta background)
+the quick brown fox Inverse Bright Cyan (on Magenta background)
+the quick brown fox Inverse Underline Cyan (on Magenta background)
+the quick brown fox Bright Underline White (on Magenta background)
+the quick brown fox Bright Inverse White (on Magenta background)
+the quick brown fox Underline Bright White (on Magenta background)
+the quick brown fox Underline Inverse White (on Magenta background)
+the quick brown fox Inverse Bright White (on Magenta background)
+the quick brown fox Inverse Underline White (on Magenta background)
+the quick brown fox Bright Underline Black (on Cyan background)
+the quick brown fox Bright Inverse Black (on Cyan background)
+the quick brown fox Underline Bright Black (on Cyan background)
+the quick brown fox Underline Inverse Black (on Cyan background)
+the quick brown fox Inverse Bright Black (on Cyan background)
+the quick brown fox Inverse Underline Black (on Cyan background)
+the quick brown fox Bright Underline Red (on Cyan background)
+the quick brown fox Bright Inverse Red (on Cyan background)
+the quick brown fox Underline Bright Red (on Cyan background)
+the quick brown fox Underline Inverse Red (on Cyan background)
+the quick brown fox Inverse Bright Red (on Cyan background)
+the quick brown fox Inverse Underline Red (on Cyan background)
+the quick brown fox Bright Underline Green (on Cyan background)
+the quick brown fox Bright Inverse Green (on Cyan background)
+the quick brown fox Underline Bright Green (on Cyan background)
+the quick brown fox Underline Inverse Green (on Cyan background)
+the quick brown fox Inverse Bright Green (on Cyan background)
+the quick brown fox Inverse Underline Green (on Cyan background)
+the quick brown fox Bright Underline Yellow (on Cyan background)
+the quick brown fox Bright Inverse Yellow (on Cyan background)
+the quick brown fox Underline Bright Yellow (on Cyan background)
+the quick brown fox Underline Inverse Yellow (on Cyan background)
+the quick brown fox Inverse Bright Yellow (on Cyan background)
+the quick brown fox Inverse Underline Yellow (on Cyan background)
+the quick brown fox Bright Underline Blue (on Cyan background)
+the quick brown fox Bright Inverse Blue (on Cyan background)
+the quick brown fox Underline Bright Blue (on Cyan background)
+the quick brown fox Underline Inverse Blue (on Cyan background)
+the quick brown fox Inverse Bright Blue (on Cyan background)
+the quick brown fox Inverse Underline Blue (on Cyan background)
+the quick brown fox Bright Underline Magenta (on Cyan background)
+the quick brown fox Bright Inverse Magenta (on Cyan background)
+the quick brown fox Underline Bright Magenta (on Cyan background)
+the quick brown fox Underline Inverse Magenta (on Cyan background)
+the quick brown fox Inverse Bright Magenta (on Cyan background)
+the quick brown fox Inverse Underline Magenta (on Cyan background)
+the quick brown fox Bright Underline Cyan (on Cyan background)
+the quick brown fox Bright Inverse Cyan (on Cyan background)
+the quick brown fox Underline Bright Cyan (on Cyan background)
+the quick brown fox Underline Inverse Cyan (on Cyan background)
+the quick brown fox Inverse Bright Cyan (on Cyan background)
+the quick brown fox Inverse Underline Cyan (on Cyan background)
+the quick brown fox Bright Underline White (on Cyan background)
+the quick brown fox Bright Inverse White (on Cyan background)
+the quick brown fox Underline Bright White (on Cyan background)
+the quick brown fox Underline Inverse White (on Cyan background)
+the quick brown fox Inverse Bright White (on Cyan background)
+the quick brown fox Inverse Underline White (on Cyan background)
+the quick brown fox Bright Underline Black (on White background)
+the quick brown fox Bright Inverse Black (on White background)
+the quick brown fox Underline Bright Black (on White background)
+the quick brown fox Underline Inverse Black (on White background)
+the quick brown fox Inverse Bright Black (on White background)
+the quick brown fox Inverse Underline Black (on White background)
+the quick brown fox Bright Underline Red (on White background)
+the quick brown fox Bright Inverse Red (on White background)
+the quick brown fox Underline Bright Red (on White background)
+the quick brown fox Underline Inverse Red (on White background)
+the quick brown fox Inverse Bright Red (on White background)
+the quick brown fox Inverse Underline Red (on White background)
+the quick brown fox Bright Underline Green (on White background)
+the quick brown fox Bright Inverse Green (on White background)
+the quick brown fox Underline Bright Green (on White background)
+the quick brown fox Underline Inverse Green (on White background)
+the quick brown fox Inverse Bright Green (on White background)
+the quick brown fox Inverse Underline Green (on White background)
+the quick brown fox Bright Underline Yellow (on White background)
+the quick brown fox Bright Inverse Yellow (on White background)
+the quick brown fox Underline Bright Yellow (on White background)
+the quick brown fox Underline Inverse Yellow (on White background)
+the quick brown fox Inverse Bright Yellow (on White background)
+the quick brown fox Inverse Underline Yellow (on White background)
+the quick brown fox Bright Underline Blue (on White background)
+the quick brown fox Bright Inverse Blue (on White background)
+the quick brown fox Underline Bright Blue (on White background)
+the quick brown fox Underline Inverse Blue (on White background)
+the quick brown fox Inverse Bright Blue (on White background)
+the quick brown fox Inverse Underline Blue (on White background)
+the quick brown fox Bright Underline Magenta (on White background)
+the quick brown fox Bright Inverse Magenta (on White background)
+the quick brown fox Underline Bright Magenta (on White background)
+the quick brown fox Underline Inverse Magenta (on White background)
+the quick brown fox Inverse Bright Magenta (on White background)
+the quick brown fox Inverse Underline Magenta (on White background)
+the quick brown fox Bright Underline Cyan (on White background)
+the quick brown fox Bright Inverse Cyan (on White background)
+the quick brown fox Underline Bright Cyan (on White background)
+the quick brown fox Underline Inverse Cyan (on White background)
+the quick brown fox Inverse Bright Cyan (on White background)
+the quick brown fox Inverse Underline Cyan (on White background)
+the quick brown fox Bright Underline White (on White background)
+the quick brown fox Bright Inverse White (on White background)
+the quick brown fox Underline Bright White (on White background)
+the quick brown fox Underline Inverse White (on White background)
+the quick brown fox Inverse Bright White (on White background)
+the quick brown fox Inverse Underline White (on White background)
diff --git a/test/files/run/color.scala b/test/files/run/color.scala
new file mode 100644
index 0000000000..a0af8477e7
--- /dev/null
+++ b/test/files/run/color.scala
@@ -0,0 +1,33 @@
+import scala.tools.util.color._
+
+object Test {
+ // The ones which are somewhat widely supported.
+ def effects = List(Bright, Underline, Inverse)
+
+ def demo(text: String) = {
+ def to_s(esc: Ansi): String = esc.atoms map {
+ case x: AnsiBackground => "" + x
+ case x => "%-10s" format x
+ } mkString " "
+
+ def show(esc: Ansi) = println("%s %s".format(text in esc, to_s(esc)))
+
+ println("\n1 color")
+ for (c <- Ansi.colors) show(c)
+ println("\n1 effect")
+ for (e <- Ansi.effects) show(e)
+ println("\n1 color 1 effect")
+ for (c <- Ansi.colors; e <- effects) show(c / e)
+ println("\n2 colors 0 effects")
+ for (c1 <- Ansi.colors ; c2 <- Ansi.colors) show(c2 on c1)
+ println("\n2 colors 1 effect")
+ for (c1 <- Ansi.colors ; c2 <- Ansi.colors ; e1 <- effects) show((c2 on c1) / e1)
+ println("\n2 colors 2 effects")
+ for (c1 <- Ansi.colors ; c2 <- Ansi.colors ; e1 <- effects ; e2 <- effects ; if e1 != e2) show((c2 on c1) / e1 / e2)
+ }
+
+ def main(args: Array[String]): Unit = {
+ val str = if (args.size > 1) args mkString " " else "the quick brown fox"
+ demo(str)
+ }
+}
diff --git a/test/files/run/compiler-asSeenFrom.check b/test/files/run/compiler-asSeenFrom.check
new file mode 100644
index 0000000000..f198e61072
--- /dev/null
+++ b/test/files/run/compiler-asSeenFrom.check
@@ -0,0 +1,323 @@
+class C {
+ type seen from prefix is
+ ---- ---------------- --
+ C[List[T3]]#I[T1] D[A1] C[List[T3]]#I[A1]
+ C[List[T3]]#I[T1] D[T3] C[List[T3]]#I[T3]
+ C[List[T3]]#J[T1] D[A1] C[List[T3]]#J[A1]
+ C[List[T3]]#J[T1] D[T3] C[List[T3]]#J[T3]
+ C[T1]#I[Int] C[List[T3]] C[List[T3]]#I[Int]
+ C[T1]#I[Int] D[A1] C[A1]#I[Int]
+ C[T1]#I[Int] D[T3] C[T3]#I[Int]
+ C[T1]#I[List[Int]] C[List[T3]] C[List[T3]]#I[List[Int]]
+ C[T1]#I[List[Int]] D[A1] C[A1]#I[List[Int]]
+ C[T1]#I[List[Int]] D[T3] C[T3]#I[List[Int]]
+ C[T1]#I[T1] C[List[T3]] C[List[T3]]#I[List[T3]]
+ C[T1]#I[T1] D[A1] C[A1]#I[A1]
+ C[T1]#I[T1] D[T3] C[T3]#I[T3]
+ C[T1]#I[T2] C[List[T3]] C[List[T3]]#I[T2]
+ C[T1]#I[T2] D[A1] C[A1]#I[T2]
+ C[T1]#I[T2] D[T3] C[T3]#I[T2]
+ C[T1]#I[T3] C[List[T3]] C[List[T3]]#I[T3]
+ C[T1]#I[T3] D[A1] C[A1]#I[T3]
+ C[T1]#I[T3] D[T3] C[T3]#I[T3]
+ C[T1]#I[T4] C[List[T3]] C[List[T3]]#I[T4]
+ C[T1]#I[T4] D[A1] C[A1]#I[T4]
+ C[T1]#I[T4] D[T3] C[T3]#I[T4]
+ C[T1]#J[Int] C[List[T3]] C[List[T3]]#J[Int]
+ C[T1]#J[Int] D[A1] C[A1]#J[Int]
+ C[T1]#J[Int] D[T3] C[T3]#J[Int]
+ C[T1]#J[List[Int]] C[List[T3]] C[List[T3]]#J[List[Int]]
+ C[T1]#J[List[Int]] D[A1] C[A1]#J[List[Int]]
+ C[T1]#J[List[Int]] D[T3] C[T3]#J[List[Int]]
+ C[T1]#J[T1] C[List[T3]] C[List[T3]]#J[List[T3]]
+ C[T1]#J[T1] D[A1] C[A1]#J[A1]
+ C[T1]#J[T1] D[T3] C[T3]#J[T3]
+ C[T1]#J[T2] C[List[T3]] C[List[T3]]#J[T2]
+ C[T1]#J[T2] D[A1] C[A1]#J[T2]
+ C[T1]#J[T2] D[T3] C[T3]#J[T2]
+ C[T1]#J[T3] C[List[T3]] C[List[T3]]#J[T3]
+ C[T1]#J[T3] D[A1] C[A1]#J[T3]
+ C[T1]#J[T3] D[T3] C[T3]#J[T3]
+ C[T1]#J[T4] C[List[T3]] C[List[T3]]#J[T4]
+ C[T1]#J[T4] D[A1] C[A1]#J[T4]
+ C[T1]#J[T4] D[T3] C[T3]#J[T4]
+ D[T3]#J[T1] C[List[T3]] D[T3]#J[List[T3]]
+ D[T3]#J[T1] D[A1] D[T3]#J[A1]
+ D[A1]#J[T1] C[List[T3]] D[A1]#J[List[T3]]
+ D[A1]#J[T1] D[T3] D[A1]#J[T3]
+}
+class D {
+ type seen from prefix is
+ ---- ---------------- --
+ C[List[T3]]#I[Int] D[A1] C[List[A1]]#I[Int]
+ C[List[T3]]#I[List[Int]] D[A1] C[List[A1]]#I[List[Int]]
+ C[List[T3]]#I[T1] D[A1] C[List[A1]]#I[T1]
+ C[List[T3]]#I[T2] D[A1] C[List[A1]]#I[T2]
+ C[List[T3]]#I[T3] D[A1] C[List[A1]]#I[A1]
+ C[List[T3]]#I[T4] D[A1] C[List[A1]]#I[T4]
+ C[List[T3]]#J[Int] D[A1] C[List[A1]]#J[Int]
+ C[List[T3]]#J[List[Int]] D[A1] C[List[A1]]#J[List[Int]]
+ C[List[T3]]#J[T1] D[A1] C[List[A1]]#J[T1]
+ C[List[T3]]#J[T2] D[A1] C[List[A1]]#J[T2]
+ C[List[T3]]#J[T3] D[A1] C[List[A1]]#J[A1]
+ C[List[T3]]#J[T4] D[A1] C[List[A1]]#J[T4]
+ C[T1]#I[T3] D[A1] C[T1]#I[A1]
+ C[T1]#J[T3] D[A1] C[T1]#J[A1]
+ D[T3]#J[Int] D[A1] D[A1]#J[Int]
+ D[T3]#J[List[Int]] D[A1] D[A1]#J[List[Int]]
+ D[T3]#J[T1] D[A1] D[A1]#J[T1]
+ D[T3]#J[T2] D[A1] D[A1]#J[T2]
+ D[T3]#J[T3] D[A1] D[A1]#J[A1]
+ D[T3]#J[T4] D[A1] D[A1]#J[T4]
+}
+class I {
+ type seen from prefix is
+ ---- ---------------- --
+ C[List[T3]]#I[T1] D.this.J[T4] C[List[T3]]#I[List[T3]]
+ C[List[T3]]#I[T1] Z.dZ.J[A2] C[List[T3]]#I[List[A1]]
+ C[List[T3]]#I[T1] Z.dZ.J[P] C[List[T3]]#I[List[A1]]
+ C[List[T3]]#I[T2] D.this.J[T4] C[List[T3]]#I[T4]
+ C[List[T3]]#I[T2] Z.dZ.J[A2] C[List[T3]]#I[A2]
+ C[List[T3]]#I[T2] Z.dZ.J[P] C[List[T3]]#I[P]
+ C[List[T3]]#J[T1] D.this.J[T4] C[List[T3]]#J[List[T3]]
+ C[List[T3]]#J[T1] Z.dZ.J[A2] C[List[T3]]#J[List[A1]]
+ C[List[T3]]#J[T1] Z.dZ.J[P] C[List[T3]]#J[List[A1]]
+ C[List[T3]]#J[T2] D.this.J[T4] C[List[T3]]#J[T4]
+ C[List[T3]]#J[T2] Z.dZ.J[A2] C[List[T3]]#J[A2]
+ C[List[T3]]#J[T2] Z.dZ.J[P] C[List[T3]]#J[P]
+ C[T1]#I[Int] D.this.J[T4] C[List[T3]]#I[Int]
+ C[T1]#I[Int] Z.dZ.J[A2] C[List[A1]]#I[Int]
+ C[T1]#I[Int] Z.dZ.J[P] C[List[A1]]#I[Int]
+ C[T1]#I[List[Int]] D.this.J[T4] C[List[T3]]#I[List[Int]]
+ C[T1]#I[List[Int]] Z.dZ.J[A2] C[List[A1]]#I[List[Int]]
+ C[T1]#I[List[Int]] Z.dZ.J[P] C[List[A1]]#I[List[Int]]
+ C[T1]#I[T1] D.this.J[T4] C[List[T3]]#I[List[T3]]
+ C[T1]#I[T1] Z.dZ.J[A2] C[List[A1]]#I[List[A1]]
+ C[T1]#I[T1] Z.dZ.J[P] C[List[A1]]#I[List[A1]]
+ C[T1]#I[T2] D.this.J[T4] C[List[T3]]#I[T4]
+ C[T1]#I[T2] Z.dZ.J[A2] C[List[A1]]#I[A2]
+ C[T1]#I[T2] Z.dZ.J[P] C[List[A1]]#I[P]
+ C[T1]#I[T3] D.this.J[T4] C[List[T3]]#I[T3]
+ C[T1]#I[T3] Z.dZ.J[A2] C[List[A1]]#I[T3]
+ C[T1]#I[T3] Z.dZ.J[P] C[List[A1]]#I[T3]
+ C[T1]#I[T4] D.this.J[T4] C[List[T3]]#I[T4]
+ C[T1]#I[T4] Z.dZ.J[A2] C[List[A1]]#I[T4]
+ C[T1]#I[T4] Z.dZ.J[P] C[List[A1]]#I[T4]
+ C[T1]#J[Int] D.this.J[T4] C[List[T3]]#J[Int]
+ C[T1]#J[Int] Z.dZ.J[A2] C[List[A1]]#J[Int]
+ C[T1]#J[Int] Z.dZ.J[P] C[List[A1]]#J[Int]
+ C[T1]#J[List[Int]] D.this.J[T4] C[List[T3]]#J[List[Int]]
+ C[T1]#J[List[Int]] Z.dZ.J[A2] C[List[A1]]#J[List[Int]]
+ C[T1]#J[List[Int]] Z.dZ.J[P] C[List[A1]]#J[List[Int]]
+ C[T1]#J[T1] D.this.J[T4] C[List[T3]]#J[List[T3]]
+ C[T1]#J[T1] Z.dZ.J[A2] C[List[A1]]#J[List[A1]]
+ C[T1]#J[T1] Z.dZ.J[P] C[List[A1]]#J[List[A1]]
+ C[T1]#J[T2] D.this.J[T4] C[List[T3]]#J[T4]
+ C[T1]#J[T2] Z.dZ.J[A2] C[List[A1]]#J[A2]
+ C[T1]#J[T2] Z.dZ.J[P] C[List[A1]]#J[P]
+ C[T1]#J[T3] D.this.J[T4] C[List[T3]]#J[T3]
+ C[T1]#J[T3] Z.dZ.J[A2] C[List[A1]]#J[T3]
+ C[T1]#J[T3] Z.dZ.J[P] C[List[A1]]#J[T3]
+ C[T1]#J[T4] D.this.J[T4] C[List[T3]]#J[T4]
+ C[T1]#J[T4] Z.dZ.J[A2] C[List[A1]]#J[T4]
+ C[T1]#J[T4] Z.dZ.J[P] C[List[A1]]#J[T4]
+ D[T3]#J[T1] D.this.J[T4] D[T3]#J[List[T3]]
+ D[T3]#J[T1] Z.dZ.J[A2] D[T3]#J[List[A1]]
+ D[T3]#J[T1] Z.dZ.J[P] D[T3]#J[List[A1]]
+ D[T3]#J[T2] D.this.J[T4] D[T3]#J[T4]
+ D[T3]#J[T2] Z.dZ.J[A2] D[T3]#J[A2]
+ D[T3]#J[T2] Z.dZ.J[P] D[T3]#J[P]
+ D[A1]#J[T1] D.this.J[T4] D[A1]#J[List[T3]]
+ D[A1]#J[T1] Z.dZ.J[A2] D[A1]#J[List[A1]]
+ D[A1]#J[T1] Z.dZ.J[P] D[A1]#J[List[A1]]
+ D[A1]#J[T2] D.this.J[T4] D[A1]#J[T4]
+ D[A1]#J[T2] Z.dZ.J[A2] D[A1]#J[A2]
+ D[A1]#J[T2] Z.dZ.J[P] D[A1]#J[P]
+}
+class J {
+ type seen from prefix is
+ ---- ---------------- --
+ C[List[T3]]#I[Int] Z.dZ.J[A2] C[List[A1]]#I[Int]
+ C[List[T3]]#I[Int] Z.dZ.J[P] C[List[A1]]#I[Int]
+ C[List[T3]]#I[List[Int]] Z.dZ.J[A2] C[List[A1]]#I[List[Int]]
+ C[List[T3]]#I[List[Int]] Z.dZ.J[P] C[List[A1]]#I[List[Int]]
+ C[List[T3]]#I[T1] Z.dZ.J[A2] C[List[A1]]#I[T1]
+ C[List[T3]]#I[T1] Z.dZ.J[P] C[List[A1]]#I[T1]
+ C[List[T3]]#I[T2] Z.dZ.J[A2] C[List[A1]]#I[T2]
+ C[List[T3]]#I[T2] Z.dZ.J[P] C[List[A1]]#I[T2]
+ C[List[T3]]#I[T3] Z.dZ.J[A2] C[List[A1]]#I[A1]
+ C[List[T3]]#I[T3] Z.dZ.J[P] C[List[A1]]#I[A1]
+ C[List[T3]]#I[T4] Z.dZ.J[A2] C[List[A1]]#I[A2]
+ C[List[T3]]#I[T4] Z.dZ.J[P] C[List[A1]]#I[P]
+ C[List[T3]]#J[Int] Z.dZ.J[A2] C[List[A1]]#J[Int]
+ C[List[T3]]#J[Int] Z.dZ.J[P] C[List[A1]]#J[Int]
+ C[List[T3]]#J[List[Int]] Z.dZ.J[A2] C[List[A1]]#J[List[Int]]
+ C[List[T3]]#J[List[Int]] Z.dZ.J[P] C[List[A1]]#J[List[Int]]
+ C[List[T3]]#J[T1] Z.dZ.J[A2] C[List[A1]]#J[T1]
+ C[List[T3]]#J[T1] Z.dZ.J[P] C[List[A1]]#J[T1]
+ C[List[T3]]#J[T2] Z.dZ.J[A2] C[List[A1]]#J[T2]
+ C[List[T3]]#J[T2] Z.dZ.J[P] C[List[A1]]#J[T2]
+ C[List[T3]]#J[T3] Z.dZ.J[A2] C[List[A1]]#J[A1]
+ C[List[T3]]#J[T3] Z.dZ.J[P] C[List[A1]]#J[A1]
+ C[List[T3]]#J[T4] Z.dZ.J[A2] C[List[A1]]#J[A2]
+ C[List[T3]]#J[T4] Z.dZ.J[P] C[List[A1]]#J[P]
+ C[T1]#I[T3] Z.dZ.J[A2] C[T1]#I[A1]
+ C[T1]#I[T3] Z.dZ.J[P] C[T1]#I[A1]
+ C[T1]#I[T4] Z.dZ.J[A2] C[T1]#I[A2]
+ C[T1]#I[T4] Z.dZ.J[P] C[T1]#I[P]
+ C[T1]#J[T3] Z.dZ.J[A2] C[T1]#J[A1]
+ C[T1]#J[T3] Z.dZ.J[P] C[T1]#J[A1]
+ C[T1]#J[T4] Z.dZ.J[A2] C[T1]#J[A2]
+ C[T1]#J[T4] Z.dZ.J[P] C[T1]#J[P]
+ D[T3]#J[Int] Z.dZ.J[A2] D[A1]#J[Int]
+ D[T3]#J[Int] Z.dZ.J[P] D[A1]#J[Int]
+ D[T3]#J[List[Int]] Z.dZ.J[A2] D[A1]#J[List[Int]]
+ D[T3]#J[List[Int]] Z.dZ.J[P] D[A1]#J[List[Int]]
+ D[T3]#J[T1] Z.dZ.J[A2] D[A1]#J[T1]
+ D[T3]#J[T1] Z.dZ.J[P] D[A1]#J[T1]
+ D[T3]#J[T2] Z.dZ.J[A2] D[A1]#J[T2]
+ D[T3]#J[T2] Z.dZ.J[P] D[A1]#J[T2]
+ D[T3]#J[T3] Z.dZ.J[A2] D[A1]#J[A1]
+ D[T3]#J[T3] Z.dZ.J[P] D[A1]#J[A1]
+ D[T3]#J[T4] Z.dZ.J[A2] D[A1]#J[A2]
+ D[T3]#J[T4] Z.dZ.J[P] D[A1]#J[P]
+ D[A1]#J[T3] Z.dZ.J[A2] D[A1]#J[A1]
+ D[A1]#J[T3] Z.dZ.J[P] D[A1]#J[A1]
+ D[A1]#J[T4] Z.dZ.J[A2] D[A1]#J[A2]
+ D[A1]#J[T4] Z.dZ.J[P] D[A1]#J[P]
+}
+class D { // after parser
+ private val cD: ll.C[List[T3]]
+ val cD: ll.C[List[T3]]
+}
+
+class D { // after uncurry
+ private val cD: ll.C[List[T3]]
+ val cD(): ll.C[List[T3]]
+}
+
+class D { // after erasure
+ private val cD: ll.C
+ val cD(): ll.C
+}
+
+object Z { // after parser
+ def kz[P <: ll.Z.dZ.J[ll.A2]]: ll.Z.dZ.J[P]
+ private val jZ: ll.Z.dZ.J[ll.A2]
+ val jZ: ll.Z.dZ.J[ll.A2]
+ private val dZ: ll.D[ll.A1]
+ val dZ: ll.D[ll.A1]
+}
+
+object Z { // after uncurry
+ def kz[P <: ll.Z.dZ.J[ll.A2]](): ll.Z.dZ.J[P]
+ private val jZ: ll.Z.dZ.J[ll.A2]
+ val jZ(): ll.Z.dZ.J[ll.A2]
+ private val dZ: ll.D[ll.A1]
+ val dZ(): ll.D[ll.A1]
+}
+
+object Z { // after erasure
+ def kz(): ll.D#J
+ private val jZ: ll.D#J
+ val jZ(): ll.D#J
+ private val dZ: ll.D
+ val dZ(): ll.D
+}
+
+object Z { // after flatten
+ def kz(): ll.D#D$J
+ private val jZ: ll.D#D$J
+ val jZ(): ll.D#D$J
+ private val dZ: ll.D
+ val dZ(): ll.D
+}
+
+value dZ { // after parser
+ private val cD: ll.C[List[T3]]
+ val cD: ll.C[List[T3]]
+}
+
+value dZ { // after parser
+ private val cD: ll.C[List[T3]]
+ val cD: ll.C[List[T3]]
+}
+
+value dZ { // after uncurry
+ private val cD: ll.C[List[T3]]
+ val cD(): ll.C[List[T3]]
+}
+
+value dZ { // after erasure
+ private val cD: ll.C
+ val cD(): ll.C
+}
+
+value jZ { // after parser
+ def thisI(): I.this.type
+ def thisC(): C.this.type
+ def t2(): T2
+ def t1(): T1
+}
+
+value jZ { // after parser
+ def thisI(): I.this.type
+ def thisC(): C.this.type
+ def t2(): T2
+ def t1(): T1
+}
+
+value jZ { // after explicitouter
+ protected val $outer: D.this.type
+ val ll$D$J$$$outer(): D.this.type
+ val ll$C$I$$$outer(): C.this.type
+ def thisI(): I.this.type
+ def thisC(): C.this.type
+ def t2(): T2
+ def t1(): T1
+}
+
+value jZ { // after erasure
+ protected val $outer: ll.D
+ val ll$D$J$$$outer(): ll.D
+ protected val $outer: ll.C
+ val ll$C$I$$$outer(): ll.C
+ def thisI(): ll.C#I
+ def thisC(): ll.C
+ def t2(): Object
+ def t1(): Object
+}
+
+value jZ { // after flatten
+ protected val $outer: ll.D
+ val ll$D$J$$$outer(): ll.D
+ protected val $outer: ll.C
+ val ll$C$I$$$outer(): ll.C
+ def thisI(): ll.C#C$I
+ def thisC(): ll.C
+ def t2(): Object
+ def t1(): Object
+}
+
+method kz { // after parser
+ def thisI(): I.this.type
+ def thisC(): C.this.type
+ def t2(): T2
+ def t1(): T1
+}
+
+value $outer { // after parser
+ private val cD: ll.C[List[T3]]
+ val cD: ll.C[List[T3]]
+}
+
+value $outer { // after uncurry
+ private val cD: ll.C[List[T3]]
+ val cD(): ll.C[List[T3]]
+}
+
+value $outer { // after erasure
+ private val cD: ll.C
+ val cD(): ll.C
+}
+
diff --git a/test/files/run/compiler-asSeenFrom.scala b/test/files/run/compiler-asSeenFrom.scala
new file mode 100644
index 0000000000..1fc3a5ee71
--- /dev/null
+++ b/test/files/run/compiler-asSeenFrom.scala
@@ -0,0 +1,122 @@
+import scala.tools.nsc._
+import scala.tools.partest.CompilerTest
+import scala.collection.{ mutable, immutable, generic }
+
+/** It's too messy but it's better than not having it.
+ */
+object Test extends CompilerTest {
+ import global._
+ import definitions._
+
+ override def sources = List(lambdaLift)
+ def lambdaLift = """
+package ll {
+ class A1
+ class A2
+ class X
+ class C[T1]() {
+ class I[T2]() {
+ def t1(): T1 = ???
+ def t2(): T2 = ???
+ def thisC(): C.this.type = ???
+ def thisI(): I.this.type = ???
+ }
+ }
+ class D[T3]() extends C[T3]() {
+ val cD: C[List[T3]] = ???
+ class J[T4]() extends cD.I[T4]()
+ }
+ object Z {
+ val dZ: D[A1] = ???
+ val jZ: dZ.J[A2] = ???
+
+ def kz[P <: dZ.J[A2]]: dZ.J[P] = ???
+ }
+}
+"""
+
+ object syms extends SymsInPackage("ll") {
+ def isPossibleEnclosure(encl: Symbol, sym: Symbol) = sym.enclClassChain drop 1 exists (_ isSubClass encl)
+ def isInterestingPrefix(pre: Type) = pre.typeConstructor.typeParams.nonEmpty && pre.members.exists(_.isType)
+
+ def asSeenPrefixes = tpes map (_.finalResultType) distinct
+ def typeRefPrefixes = asSeenPrefixes filter isInterestingPrefix
+
+ def nestsIn(outer: Symbol) = classes filter (c => c.enclClassChain drop 1 exists(_ isSubClass outer))
+ def typeRefs(targs: List[Type]) = (
+ for (p <- typeRefPrefixes ; c <- classes filter (isPossibleEnclosure(p.typeSymbol, _)) ; a <- targs) yield
+ typeRef(p, c, List(a))
+ )
+
+ val wfmt = "%-" + 25 + "s"
+ def to_s(x: Any): String = wfmt.format(x.toString.replaceAll("""\bll\.""", ""))
+
+ def fmt(args: Any*): String = {
+ (args map to_s mkString " ").replaceAll("""\s+$""", "")
+ }
+ def fname(sym: Symbol) = {
+ val p = "" + sym.owner.name
+ val x = if (sym.owner.isPackageClass || sym.owner.isModuleClass || sym.owner.isTerm) "." else "#"
+ sym.kindString + " " + p + x + sym.name
+ }
+
+ def permuteAsSeenFrom(targs: List[Type]) = (
+ for {
+ tp <- typeRefs(targs filterNot (_ eq NoType))
+ prefix <- asSeenPrefixes
+ if tp.prefix != prefix
+ site <- classes
+ seen = tp.asSeenFrom(prefix, site)
+ if tp != seen
+ if !seen.isInstanceOf[ExistentialType]
+ }
+ yield ((site, tp, prefix, seen))
+ )
+
+ def block(label: Any)(lines: List[String]): List[String] = {
+ val first = "" + label + " {"
+ val last = "}"
+
+ first +: lines.map(" " + _) :+ last
+ }
+
+ def permute(targs: List[Type]): List[String] = {
+ permuteAsSeenFrom(targs).groupBy(_._1).toList.sortBy(_._1.toString) flatMap {
+ case (site, xs) =>
+ block(fmt(site)) {
+ fmt("type", "seen from prefix", "is") ::
+ fmt("----", "----------------", "--") :: {
+ xs.groupBy(_._2).toList.sortBy(_._1.toString) flatMap {
+ case (tp, ys) =>
+ (ys map { case (_, _, prefix, seen) => fmt(tp, prefix, seen) }).sorted.distinct
+ }
+ }
+ }
+ }
+ }
+ }
+
+ def pretty(xs: List[_]) = if (xs.isEmpty) "" else xs.mkString("\n ", "\n ", "\n")
+
+ def signaturesIn(info: Type): List[String] = (
+ info.members
+ filterNot (s => s.isType || s.owner == ObjectClass || s.owner == AnyClass || s.isConstructor)
+ map (_.defString)
+ )
+
+ def check(source: String, unit: global.CompilationUnit) = {
+ import syms._
+
+ afterTyper {
+ val typeArgs = List[Type](IntClass.tpe, ListClass[Int]) ++ tparams.map(_.tpe)
+ permute(typeArgs) foreach println
+ }
+ for (x <- classes ++ terms) {
+ afterEachPhase(signaturesIn(x.tpe)) collect {
+ case (ph, sigs) if sigs.nonEmpty =>
+ println(sigs.mkString(x + " { // after " + ph + "\n ", "\n ", "\n}\n"))
+ }
+ }
+ true
+ }
+}
diff --git a/test/files/run/ctries/concmap.scala b/test/files/run/ctries/concmap.scala
index d73e33182a..bf8cc9d12f 100644
--- a/test/files/run/ctries/concmap.scala
+++ b/test/files/run/ctries/concmap.scala
@@ -1,7 +1,7 @@
-import collection.mutable.Ctrie
+import collection.mutable.ConcurrentTrieMap
object ConcurrentMapSpec extends Spec {
@@ -11,13 +11,13 @@ object ConcurrentMapSpec extends Spec {
def test() {
"support put" in {
- val ct = new Ctrie[Wrap, Int]
+ val ct = new ConcurrentTrieMap[Wrap, Int]
for (i <- 0 until initsz) assert(ct.put(new Wrap(i), i) == None)
for (i <- 0 until initsz) assert(ct.put(new Wrap(i), -i) == Some(i))
}
"support put if absent" in {
- val ct = new Ctrie[Wrap, Int]
+ val ct = new ConcurrentTrieMap[Wrap, Int]
for (i <- 0 until initsz) ct.update(new Wrap(i), i)
for (i <- 0 until initsz) assert(ct.putIfAbsent(new Wrap(i), -i) == Some(i))
for (i <- 0 until initsz) assert(ct.putIfAbsent(new Wrap(i), -i) == Some(i))
@@ -26,7 +26,7 @@ object ConcurrentMapSpec extends Spec {
}
"support remove if mapped to a specific value" in {
- val ct = new Ctrie[Wrap, Int]
+ val ct = new ConcurrentTrieMap[Wrap, Int]
for (i <- 0 until initsz) ct.update(new Wrap(i), i)
for (i <- 0 until initsz) assert(ct.remove(new Wrap(i), -i - 1) == false)
for (i <- 0 until initsz) assert(ct.remove(new Wrap(i), i) == true)
@@ -34,7 +34,7 @@ object ConcurrentMapSpec extends Spec {
}
"support replace if mapped to a specific value" in {
- val ct = new Ctrie[Wrap, Int]
+ val ct = new ConcurrentTrieMap[Wrap, Int]
for (i <- 0 until initsz) ct.update(new Wrap(i), i)
for (i <- 0 until initsz) assert(ct.replace(new Wrap(i), -i - 1, -i - 2) == false)
for (i <- 0 until initsz) assert(ct.replace(new Wrap(i), i, -i - 2) == true)
@@ -43,7 +43,7 @@ object ConcurrentMapSpec extends Spec {
}
"support replace if present" in {
- val ct = new Ctrie[Wrap, Int]
+ val ct = new ConcurrentTrieMap[Wrap, Int]
for (i <- 0 until initsz) ct.update(new Wrap(i), i)
for (i <- 0 until initsz) assert(ct.replace(new Wrap(i), -i) == Some(i))
for (i <- 0 until initsz) assert(ct.replace(new Wrap(i), i) == Some(-i))
@@ -56,7 +56,7 @@ object ConcurrentMapSpec extends Spec {
}
"support replace if mapped to a specific value, using several threads" in {
- val ct = new Ctrie[Wrap, Int]
+ val ct = new ConcurrentTrieMap[Wrap, Int]
val sz = 55000
for (i <- 0 until sz) ct.update(new Wrap(i), i)
@@ -89,7 +89,7 @@ object ConcurrentMapSpec extends Spec {
}
"support put if absent, several threads" in {
- val ct = new Ctrie[Wrap, Int]
+ val ct = new ConcurrentTrieMap[Wrap, Int]
val sz = 110000
class Updater(offs: Int) extends Thread {
@@ -110,7 +110,7 @@ object ConcurrentMapSpec extends Spec {
}
"support remove if mapped to a specific value, several threads" in {
- val ct = new Ctrie[Wrap, Int]
+ val ct = new ConcurrentTrieMap[Wrap, Int]
val sz = 55000
for (i <- 0 until sz) ct.update(new Wrap(i), i)
@@ -132,7 +132,7 @@ object ConcurrentMapSpec extends Spec {
}
"have all or none of the elements depending on the oddity" in {
- val ct = new Ctrie[Wrap, Int]
+ val ct = new ConcurrentTrieMap[Wrap, Int]
val sz = 65000
for (i <- 0 until sz) ct(new Wrap(i)) = i
@@ -165,7 +165,7 @@ object ConcurrentMapSpec extends Spec {
}
"compute size correctly" in {
- val ct = new Ctrie[Wrap, Int]
+ val ct = new ConcurrentTrieMap[Wrap, Int]
val sz = 36450
for (i <- 0 until sz) ct(new Wrap(i)) = i
@@ -174,7 +174,7 @@ object ConcurrentMapSpec extends Spec {
}
"compute size correctly in parallel" in {
- val ct = new Ctrie[Wrap, Int]
+ val ct = new ConcurrentTrieMap[Wrap, Int]
val sz = 36450
for (i <- 0 until sz) ct(new Wrap(i)) = i
val pct = ct.par
diff --git a/test/files/run/ctries/iterator.scala b/test/files/run/ctries/iterator.scala
index 85a6ab7623..dbfab6b8a9 100644
--- a/test/files/run/ctries/iterator.scala
+++ b/test/files/run/ctries/iterator.scala
@@ -3,7 +3,7 @@
import collection._
-import collection.mutable.Ctrie
+import collection.mutable.ConcurrentTrieMap
@@ -11,7 +11,7 @@ object IteratorSpec extends Spec {
def test() {
"work for an empty trie" in {
- val ct = new Ctrie
+ val ct = new ConcurrentTrieMap
val it = ct.iterator
it.hasNext shouldEqual (false)
@@ -19,7 +19,7 @@ object IteratorSpec extends Spec {
}
def nonEmptyIteratorCheck(sz: Int) {
- val ct = new Ctrie[Wrap, Int]
+ val ct = new ConcurrentTrieMap[Wrap, Int]
for (i <- 0 until sz) ct.put(new Wrap(i), i)
val it = ct.iterator
@@ -84,7 +84,7 @@ object IteratorSpec extends Spec {
}
def nonEmptyCollideCheck(sz: Int) {
- val ct = new Ctrie[DumbHash, Int]
+ val ct = new ConcurrentTrieMap[DumbHash, Int]
for (i <- 0 until sz) ct.put(new DumbHash(i), i)
val it = ct.iterator
@@ -144,7 +144,7 @@ object IteratorSpec extends Spec {
val W = 15
val S = 5
val checks = 5
- val ct = new Ctrie[Wrap, Int]
+ val ct = new ConcurrentTrieMap[Wrap, Int]
for (i <- 0 until sz) ct.put(new Wrap(i), i)
class Modifier extends Thread {
@@ -156,7 +156,7 @@ object IteratorSpec extends Spec {
}
}
- def consistentIteration(ct: Ctrie[Wrap, Int], checks: Int) {
+ def consistentIteration(ct: ConcurrentTrieMap[Wrap, Int], checks: Int) {
class Iter extends Thread {
override def run() {
val snap = ct.readOnlySnapshot()
@@ -185,7 +185,7 @@ object IteratorSpec extends Spec {
val sgroupsize = 10
val sgroupnum = 5
val removerslowdown = 50
- val ct = new Ctrie[Wrap, Int]
+ val ct = new ConcurrentTrieMap[Wrap, Int]
for (i <- 0 until sz) ct.put(new Wrap(i), i)
class Remover extends Thread {
@@ -227,7 +227,7 @@ object IteratorSpec extends Spec {
val sgroupsize = 10
val sgroupnum = 10
val inserterslowdown = 50
- val ct = new Ctrie[Wrap, Int]
+ val ct = new ConcurrentTrieMap[Wrap, Int]
class Inserter extends Thread {
override def run() {
@@ -265,7 +265,7 @@ object IteratorSpec extends Spec {
"work on a yet unevaluated snapshot" in {
val sz = 50000
- val ct = new Ctrie[Wrap, Int]
+ val ct = new ConcurrentTrieMap[Wrap, Int]
for (i <- 0 until sz) ct.update(new Wrap(i), i)
val snap = ct.snapshot()
@@ -276,7 +276,7 @@ object IteratorSpec extends Spec {
"be duplicated" in {
val sz = 50
- val ct = collection.parallel.mutable.ParCtrie((0 until sz) zip (0 until sz): _*)
+ val ct = collection.parallel.mutable.ParConcurrentTrieMap((0 until sz) zip (0 until sz): _*)
val it = ct.splitter
for (_ <- 0 until (sz / 2)) it.next()
val dupit = it.dup
diff --git a/test/files/run/ctries/lnode.scala b/test/files/run/ctries/lnode.scala
index 88cbeed1f6..e480795956 100644
--- a/test/files/run/ctries/lnode.scala
+++ b/test/files/run/ctries/lnode.scala
@@ -1,7 +1,7 @@
-import collection.mutable.Ctrie
+import collection.mutable.ConcurrentTrieMap
object LNodeSpec extends Spec {
@@ -11,19 +11,19 @@ object LNodeSpec extends Spec {
def test() {
"accept elements with the same hash codes" in {
- val ct = new Ctrie[DumbHash, Int]
+ val ct = new ConcurrentTrieMap[DumbHash, Int]
for (i <- 0 until initsz) ct.update(new DumbHash(i), i)
}
"lookup elements with the same hash codes" in {
- val ct = new Ctrie[DumbHash, Int]
+ val ct = new ConcurrentTrieMap[DumbHash, Int]
for (i <- 0 until initsz) ct.update(new DumbHash(i), i)
for (i <- 0 until initsz) assert(ct.get(new DumbHash(i)) == Some(i))
for (i <- initsz until secondsz) assert(ct.get(new DumbHash(i)) == None)
}
"remove elements with the same hash codes" in {
- val ct = new Ctrie[DumbHash, Int]
+ val ct = new ConcurrentTrieMap[DumbHash, Int]
for (i <- 0 until initsz) ct.update(new DumbHash(i), i)
for (i <- 0 until initsz) {
val remelem = ct.remove(new DumbHash(i))
@@ -33,7 +33,7 @@ object LNodeSpec extends Spec {
}
"put elements with the same hash codes if absent" in {
- val ct = new Ctrie[DumbHash, Int]
+ val ct = new ConcurrentTrieMap[DumbHash, Int]
for (i <- 0 until initsz) ct.put(new DumbHash(i), i)
for (i <- 0 until initsz) assert(ct.lookup(new DumbHash(i)) == i)
for (i <- 0 until initsz) assert(ct.putIfAbsent(new DumbHash(i), i) == Some(i))
@@ -42,7 +42,7 @@ object LNodeSpec extends Spec {
}
"replace elements with the same hash codes" in {
- val ct = new Ctrie[DumbHash, Int]
+ val ct = new ConcurrentTrieMap[DumbHash, Int]
for (i <- 0 until initsz) assert(ct.put(new DumbHash(i), i) == None)
for (i <- 0 until initsz) assert(ct.lookup(new DumbHash(i)) == i)
for (i <- 0 until initsz) assert(ct.replace(new DumbHash(i), -i) == Some(i))
@@ -51,7 +51,7 @@ object LNodeSpec extends Spec {
}
"remove elements with the same hash codes if mapped to a specific value" in {
- val ct = new Ctrie[DumbHash, Int]
+ val ct = new ConcurrentTrieMap[DumbHash, Int]
for (i <- 0 until initsz) assert(ct.put(new DumbHash(i), i) == None)
for (i <- 0 until initsz) assert(ct.remove(new DumbHash(i), i) == true)
}
diff --git a/test/files/run/ctries/snapshot.scala b/test/files/run/ctries/snapshot.scala
index 69073d3f06..3c816130b3 100644
--- a/test/files/run/ctries/snapshot.scala
+++ b/test/files/run/ctries/snapshot.scala
@@ -3,7 +3,7 @@
import collection._
-import collection.mutable.Ctrie
+import collection.mutable.ConcurrentTrieMap
@@ -11,11 +11,11 @@ object SnapshotSpec extends Spec {
def test() {
"support snapshots" in {
- val ctn = new Ctrie
+ val ctn = new ConcurrentTrieMap
ctn.snapshot()
ctn.readOnlySnapshot()
- val ct = new Ctrie[Int, Int]
+ val ct = new ConcurrentTrieMap[Int, Int]
for (i <- 0 until 100) ct.put(i, i)
ct.snapshot()
ct.readOnlySnapshot()
@@ -24,7 +24,7 @@ object SnapshotSpec extends Spec {
"empty 2 quiescent snapshots in isolation" in {
val sz = 4000
- class Worker(trie: Ctrie[Wrap, Int]) extends Thread {
+ class Worker(trie: ConcurrentTrieMap[Wrap, Int]) extends Thread {
override def run() {
for (i <- 0 until sz) {
assert(trie.remove(new Wrap(i)) == Some(i))
@@ -35,7 +35,7 @@ object SnapshotSpec extends Spec {
}
}
- val ct = new Ctrie[Wrap, Int]
+ val ct = new ConcurrentTrieMap[Wrap, Int]
for (i <- 0 until sz) ct.put(new Wrap(i), i)
val snapt = ct.snapshot()
@@ -96,7 +96,7 @@ object SnapshotSpec extends Spec {
}
// traverses the trie `rep` times and modifies each entry
- class Modifier(trie: Ctrie[Wrap, Int], index: Int, rep: Int, sz: Int) extends Thread {
+ class Modifier(trie: ConcurrentTrieMap[Wrap, Int], index: Int, rep: Int, sz: Int) extends Thread {
setName("Modifier %d".format(index))
override def run() {
@@ -110,7 +110,7 @@ object SnapshotSpec extends Spec {
}
// removes all the elements from the trie
- class Remover(trie: Ctrie[Wrap, Int], index: Int, totremovers: Int, sz: Int) extends Thread {
+ class Remover(trie: ConcurrentTrieMap[Wrap, Int], index: Int, totremovers: Int, sz: Int) extends Thread {
setName("Remover %d".format(index))
override def run() {
@@ -123,7 +123,7 @@ object SnapshotSpec extends Spec {
val N = 100
val W = 10
- val ct = new Ctrie[Wrap, Int]
+ val ct = new ConcurrentTrieMap[Wrap, Int]
for (i <- 0 until sz) ct(new Wrap(i)) = i
val readonly = ct.readOnlySnapshot()
val threads = for (i <- 0 until W) yield new Modifier(ct, i, N, sz)
@@ -141,7 +141,7 @@ object SnapshotSpec extends Spec {
val W = 100
val S = 5000
- val ct = new Ctrie[Wrap, Int]
+ val ct = new ConcurrentTrieMap[Wrap, Int]
for (i <- 0 until sz) ct(new Wrap(i)) = i
val threads = for (i <- 0 until W) yield new Remover(ct, i, W, sz)
@@ -156,7 +156,7 @@ object SnapshotSpec extends Spec {
val W = 10
val S = 7000
- val ct = new Ctrie[Wrap, Int]
+ val ct = new ConcurrentTrieMap[Wrap, Int]
for (i <- 0 until sz) ct(new Wrap(i)) = i
val threads = for (i <- 0 until W) yield new Modifier(ct, i, N, sz)
@@ -165,7 +165,7 @@ object SnapshotSpec extends Spec {
threads.foreach(_.join())
}
- def consistentNonReadOnly(name: String, trie: Ctrie[Wrap, Int], sz: Int, N: Int) {
+ def consistentNonReadOnly(name: String, trie: ConcurrentTrieMap[Wrap, Int], sz: Int, N: Int) {
@volatile var e: Exception = null
// reads possible entries once and stores them
@@ -223,7 +223,7 @@ object SnapshotSpec extends Spec {
val W = 10
val S = 400
- val ct = new Ctrie[Wrap, Int]
+ val ct = new ConcurrentTrieMap[Wrap, Int]
for (i <- 0 until sz) ct(new Wrap(i)) = i
val threads = for (i <- 0 until W) yield new Modifier(ct, i, N, sz)
@@ -241,7 +241,7 @@ object SnapshotSpec extends Spec {
val S = 10
val modifytimes = 1200
val snaptimes = 600
- val ct = new Ctrie[Wrap, Int]
+ val ct = new ConcurrentTrieMap[Wrap, Int]
for (i <- 0 until sz) ct(new Wrap(i)) = i
class Snapshooter extends Thread {
diff --git a/test/files/run/existentials-in-compiler.scala b/test/files/run/existentials-in-compiler.scala
index e4f6920145..8c04e4782c 100644
--- a/test/files/run/existentials-in-compiler.scala
+++ b/test/files/run/existentials-in-compiler.scala
@@ -6,7 +6,7 @@ object Test extends CompilerTest {
import global._
import definitions._
- def code = """
+ override def code = """
package extest {
trait Bippy[A <: AnyRef, B] { } // wildcards
trait BippyLike[A <: AnyRef, B <: List[A], This <: BippyLike[A, B, This] with Bippy[A, B]] // no wildcards
diff --git a/test/files/run/existentials3.check b/test/files/run/existentials3.check
index 41dc1f767c..36a458dacc 100644
--- a/test/files/run/existentials3.check
+++ b/test/files/run/existentials3.check
@@ -1,22 +1,22 @@
-_ <: scala.runtime.AbstractFunction0[_ <: Object with Test$ToS with scala.ScalaObject with scala.Product with scala.Serializable] with scala.ScalaObject with scala.Serializable with java.lang.Object
-_ <: Object with Test$ToS with scala.ScalaObject with scala.Product with scala.Serializable
-Object with Test$ToS with scala.ScalaObject
-Object with Test$ToS with scala.ScalaObject
-Object with Test$ToS with scala.ScalaObject
-scala.Function0[Object with Test$ToS with scala.ScalaObject]
-scala.Function0[Object with Test$ToS with scala.ScalaObject]
-_ <: Object with _ <: Object with Object with Test$ToS with scala.ScalaObject
-_ <: Object with _ <: Object with _ <: Object with Test$ToS with scala.ScalaObject
-scala.collection.immutable.List[Object with scala.collection.Seq[Int] with scala.ScalaObject]
-scala.collection.immutable.List[Object with scala.collection.Seq[_ <: Int] with scala.ScalaObject]
-_ <: scala.runtime.AbstractFunction0[_ <: Object with Test$ToS with scala.ScalaObject with scala.Product with scala.Serializable] with scala.ScalaObject with scala.Serializable with java.lang.Object
-_ <: Object with Test$ToS with scala.ScalaObject with scala.Product with scala.Serializable
-Object with Test$ToS with scala.ScalaObject
-Object with Test$ToS with scala.ScalaObject
-Object with Test$ToS with scala.ScalaObject
-scala.Function0[Object with Test$ToS with scala.ScalaObject]
-scala.Function0[Object with Test$ToS with scala.ScalaObject]
-_ <: Object with _ <: Object with Object with Test$ToS with scala.ScalaObject
-_ <: Object with _ <: Object with _ <: Object with Test$ToS with scala.ScalaObject
-scala.collection.immutable.List[Object with scala.collection.Seq[Int] with scala.ScalaObject]
-scala.collection.immutable.List[Object with scala.collection.Seq[_ <: Int] with scala.ScalaObject]
+_ <: scala.runtime.AbstractFunction0[_ <: Object with Test$ToS with scala.Product with scala.Serializable] with scala.Serializable with java.lang.Object
+_ <: Object with Test$ToS with scala.Product with scala.Serializable
+Object with Test$ToS
+Object with Test$ToS
+Object with Test$ToS
+scala.Function0[Object with Test$ToS]
+scala.Function0[Object with Test$ToS]
+_ <: Object with _ <: Object with Object with Test$ToS
+_ <: Object with _ <: Object with _ <: Object with Test$ToS
+scala.collection.immutable.List[Object with scala.collection.Seq[Int]]
+scala.collection.immutable.List[Object with scala.collection.Seq[_ <: Int]]
+_ <: scala.runtime.AbstractFunction0[_ <: Object with Test$ToS with scala.Product with scala.Serializable] with scala.Serializable with java.lang.Object
+_ <: Object with Test$ToS with scala.Product with scala.Serializable
+Object with Test$ToS
+Object with Test$ToS
+Object with Test$ToS
+scala.Function0[Object with Test$ToS]
+scala.Function0[Object with Test$ToS]
+_ <: Object with _ <: Object with Object with Test$ToS
+_ <: Object with _ <: Object with _ <: Object with Test$ToS
+scala.collection.immutable.List[Object with scala.collection.Seq[Int]]
+scala.collection.immutable.List[Object with scala.collection.Seq[_ <: Int]]
diff --git a/test/files/run/genericValueClass.check b/test/files/run/genericValueClass.check
new file mode 100644
index 0000000000..ec3a41a6a9
--- /dev/null
+++ b/test/files/run/genericValueClass.check
@@ -0,0 +1,2 @@
+(1,abc)
+(2,def)
diff --git a/test/files/run/genericValueClass.scala b/test/files/run/genericValueClass.scala
new file mode 100644
index 0000000000..68162bb685
--- /dev/null
+++ b/test/files/run/genericValueClass.scala
@@ -0,0 +1,17 @@
+final class ArrowAssoc[A](val __leftOfArrow: A) extends AnyVal {
+ @inline def -> [B](y: B): Tuple2[A, B] = Tuple2(__leftOfArrow, y)
+ def →[B](y: B): Tuple2[A, B] = ->(y)
+}
+
+object Test extends App {
+ {
+ @inline implicit def any2ArrowAssoc[A](x: A): ArrowAssoc[A] = new ArrowAssoc(x)
+ val x = 1 -> "abc"
+ println(x)
+ }
+
+ {
+ val y = 2 -> "def"
+ println(y)
+ }
+}
diff --git a/test/files/run/matchonseq.check b/test/files/run/matchonseq.check
new file mode 100644
index 0000000000..3fe554095a
--- /dev/null
+++ b/test/files/run/matchonseq.check
@@ -0,0 +1,2 @@
+It worked! head=1
+It worked! last=3
diff --git a/test/files/run/matchonseq.scala b/test/files/run/matchonseq.scala
new file mode 100644
index 0000000000..49b406a6ec
--- /dev/null
+++ b/test/files/run/matchonseq.scala
@@ -0,0 +1,8 @@
+object Test extends App{
+ Vector(1,2,3) match {
+ case head +: tail => println("It worked! head=" + head)
+ }
+ Vector(1,2,3) match {
+ case init :+ last => println("It worked! last=" + last)
+ }
+}
diff --git a/test/files/run/primitive-sigs-2.check b/test/files/run/primitive-sigs-2.check
index c69d1b54a6..feb0619525 100644
--- a/test/files/run/primitive-sigs-2.check
+++ b/test/files/run/primitive-sigs-2.check
@@ -1,4 +1,4 @@
-T<java.lang.Object> interface scala.ScalaObject
+T<java.lang.Object>
List(A, char, class java.lang.Object)
a
public <T> java.lang.Object Arr.arr4(java.lang.Object[],scala.reflect.Manifest<T>)
diff --git a/test/files/run/programmatic-main.check b/test/files/run/programmatic-main.check
index 6f253f5de1..d16e2c5178 100644
--- a/test/files/run/programmatic-main.check
+++ b/test/files/run/programmatic-main.check
@@ -5,24 +5,26 @@
packageobjects 3 load package objects
typer 4 the meat and potatoes: type the trees
superaccessors 5 add super accessors in traits and nested classes
- pickler 6 serialize symbol tables
- refchecks 7 reference/override checking, translate nested objects
- uncurry 8 uncurry, translate function values to anonymous classes
- tailcalls 9 replace tail calls by jumps
- specialize 10 @specialized-driven class and method specialization
- explicitouter 11 this refs to outer pointers, translate patterns
- erasure 12 erase types, add interfaces for traits
- lazyvals 13 allocate bitmaps, translate lazy vals into lazified defs
- lambdalift 14 move nested functions to top level
- constructors 15 move field definitions into constructors
- flatten 16 eliminate inner classes
- mixin 17 mixin composition
- cleanup 18 platform-specific cleanups, generate reflective calls
- icode 19 generate portable intermediate code
- inliner 20 optimization: do inlining
-inlineExceptionHandlers 21 optimization: inline exception handlers
- closelim 22 optimization: eliminate uncalled closures
- dce 23 optimization: eliminate dead code
- jvm 24 generate JVM bytecode
- terminal 25 The last phase in the compiler chain
+ extmethods 6 add extension methods for inline classes
+ pickler 7 serialize symbol tables
+ refchecks 8 reference/override checking, translate nested objects
+ uncurry 9 uncurry, translate function values to anonymous classes
+ tailcalls 10 replace tail calls by jumps
+ specialize 11 @specialized-driven class and method specialization
+ explicitouter 12 this refs to outer pointers, translate patterns
+ erasure 13 erase types, add interfaces for traits
+ posterasure 14 clean up erased inline classes
+ lazyvals 15 allocate bitmaps, translate lazy vals into lazified defs
+ lambdalift 16 move nested functions to top level
+ constructors 17 move field definitions into constructors
+ flatten 18 eliminate inner classes
+ mixin 19 mixin composition
+ cleanup 20 platform-specific cleanups, generate reflective calls
+ icode 21 generate portable intermediate code
+ inliner 22 optimization: do inlining
+inlineExceptionHandlers 23 optimization: inline exception handlers
+ closelim 24 optimization: eliminate uncalled closures
+ dce 25 optimization: eliminate dead code
+ jvm 26 generate JVM bytecode
+ terminal 27 The last phase in the compiler chain
diff --git a/test/files/run/reify_ann1a.check b/test/files/run/reify_ann1a.check
index 2822238706..97d4848a49 100644
--- a/test/files/run/reify_ann1a.check
+++ b/test/files/run/reify_ann1a.check
@@ -1,5 +1,5 @@
{
- @new ann(immutable.this.List.apply[String]("1a")) @new ann(immutable.this.List.apply[String]("1b")) class C[@new ann(immutable.this.List.apply[String]("2a")) @new ann(immutable.this.List.apply[String]("2b")) T>: Nothing <: Any] extends Object with ScalaObject {
+ @new ann(immutable.this.List.apply[String]("1a")) @new ann(immutable.this.List.apply[String]("1b")) class C[@new ann(immutable.this.List.apply[String]("2a")) @new ann(immutable.this.List.apply[String]("2b")) T>: Nothing <: Any] extends scala.AnyRef {
@new ann(immutable.this.List.apply[String]("3a")) @new ann(immutable.this.List.apply[String]("3b")) <paramaccessor> private[this] val x: T @ann(immutable.this.List.apply[String]("4a")) @ann(immutable.this.List.apply[String]("4b")) = _;
def <init>(@new ann(immutable.this.List.apply[String]("3a")) @new ann(immutable.this.List.apply[String]("3b")) x: T @ann(immutable.this.List.apply[String]("4a")) @ann(immutable.this.List.apply[String]("4b"))) = {
super.<init>();
@@ -14,7 +14,7 @@
()
}
{
- @ann(immutable.this.List.apply[String]("1a")) @ann(immutable.this.List.apply[String]("1b")) class C[@ann(immutable.this.List.apply[String]("2a")) @ann(immutable.this.List.apply[String]("2b")) T>: Nothing <: Any] extends Object with ScalaObject {
+ @ann(immutable.this.List.apply[String]("1a")) @ann(immutable.this.List.apply[String]("1b")) class C[@ann(immutable.this.List.apply[String]("2a")) @ann(immutable.this.List.apply[String]("2b")) T>: Nothing <: Any] extends scala.AnyRef {
@ann(immutable.this.List.apply[String]("3a")) @ann(immutable.this.List.apply[String]("3b")) <paramaccessor> private[this] val x: T @ann(immutable.this.List.apply[String]("4b")) @ann(immutable.this.List.apply[String]("4a")) = _;
def <init>(@ann(immutable.this.List.apply[String]("3a")) @ann(immutable.this.List.apply[String]("3b")) x: T @ann(immutable.this.List.apply[String]("4b")) @ann(immutable.this.List.apply[String]("4a"))): C[T] = {
C.super.<init>();
diff --git a/test/files/run/reify_ann1b.check b/test/files/run/reify_ann1b.check
index e240e1e0ce..ceebc0e2ed 100644
--- a/test/files/run/reify_ann1b.check
+++ b/test/files/run/reify_ann1b.check
@@ -1,5 +1,5 @@
{
- @new ann(bar = "1a") @new ann(bar = "1b") class C[@new ann(bar = "2a") @new ann(bar = "2b") T>: Nothing <: Any] extends Object with ScalaObject {
+ @new ann(bar = "1a") @new ann(bar = "1b") class C[@new ann(bar = "2a") @new ann(bar = "2b") T>: Nothing <: Any] extends scala.AnyRef {
@new ann(bar = "3a") @new ann(bar = "3b") <paramaccessor> private[this] val x: T @ann(bar = "4a") @ann(bar = "4b") = _;
def <init>(@new ann(bar = "3a") @new ann(bar = "3b") x: T @ann(bar = "4a") @ann(bar = "4b")) = {
super.<init>();
@@ -14,7 +14,7 @@
()
}
{
- @ann(bar = "1a") @ann(bar = "1b") class C[@ann(bar = "2a") @ann(bar = "2b") T>: Nothing <: Any] extends Object with ScalaObject {
+ @ann(bar = "1a") @ann(bar = "1b") class C[@ann(bar = "2a") @ann(bar = "2b") T>: Nothing <: Any] extends scala.AnyRef {
@ann(bar = "3a") @ann(bar = "3b") <paramaccessor> private[this] val x: T @ann(bar = "4b") @ann(bar = "4a") = _;
def <init>(@ann(bar = "3a") @ann(bar = "3b") x: T @ann(bar = "4b") @ann(bar = "4a")): C[T] = {
C.super.<init>();
diff --git a/test/files/run/reify_classfileann_a.check b/test/files/run/reify_classfileann_a.check
index 1773263a94..419d916907 100644
--- a/test/files/run/reify_classfileann_a.check
+++ b/test/files/run/reify_classfileann_a.check
@@ -1,5 +1,5 @@
{
- @new ann(bar = "1", quux = Array("2", "3"), baz = new ann(bar = "4")) class C extends Object with ScalaObject {
+ @new ann(bar = "1", quux = Array("2", "3"), baz = new ann(bar = "4")) class C extends scala.AnyRef {
def <init>() = {
super.<init>();
()
@@ -8,7 +8,7 @@
()
}
{
- @ann(bar = "1", quux = ["2", "3"], baz = ann(bar = "4")) class C extends Object with ScalaObject {
+ @ann(bar = "1", quux = ["2", "3"], baz = ann(bar = "4")) class C extends scala.AnyRef {
def <init>(): C = {
C.super.<init>();
()
diff --git a/test/files/run/repl-parens.check b/test/files/run/repl-parens.check
index 944846541f..69f0a9ce30 100644
--- a/test/files/run/repl-parens.check
+++ b/test/files/run/repl-parens.check
@@ -66,7 +66,7 @@ scala> 55 ; () => 5
res13: () => Int = <function0>
scala> () => { class X ; new X }
-res14: () => Object with ScalaObject = <function0>
+res14: () => Object = <function0>
scala>
diff --git a/test/files/run/t0663.check b/test/files/run/t0663.check
index 22b68b7f57..dd9be2af70 100644..100755
--- a/test/files/run/t0663.check
+++ b/test/files/run/t0663.check
@@ -1 +1 @@
-<feed></feed>
+<feed/>
diff --git a/test/files/run/t1195.check b/test/files/run/t1195.check
index dc521fb8ca..d023bc91f7 100644
--- a/test/files/run/t1195.check
+++ b/test/files/run/t1195.check
@@ -1,6 +1,6 @@
-_ <: scala.runtime.AbstractFunction1[Int, _ <: Object with scala.ScalaObject with scala.Product with scala.Serializable] with scala.ScalaObject with scala.Serializable with java.lang.Object
-_ <: Object with scala.ScalaObject with scala.Product with scala.Serializable
-Object with scala.ScalaObject with scala.Product with scala.Serializable
-_ <: scala.runtime.AbstractFunction1[Int, _ <: Object with scala.ScalaObject with scala.Product with scala.Serializable] with scala.ScalaObject with scala.Serializable with java.lang.Object
-_ <: Object with scala.ScalaObject with scala.Product with scala.Serializable
-Object with scala.ScalaObject with scala.Product with scala.Serializable
+_ <: scala.runtime.AbstractFunction1[Int, _ <: Object with scala.Product with scala.Serializable] with scala.Serializable with java.lang.Object
+_ <: Object with scala.Product with scala.Serializable
+Object with scala.Product with scala.Serializable
+_ <: scala.runtime.AbstractFunction1[Int, _ <: Object with scala.Product with scala.Serializable] with scala.Serializable with java.lang.Object
+_ <: Object with scala.Product with scala.Serializable
+Object with scala.Product with scala.Serializable
diff --git a/test/files/run/t1620.check b/test/files/run/t1620.check
index 979efc8227..afa1e6acd5 100644..100755
--- a/test/files/run/t1620.check
+++ b/test/files/run/t1620.check
@@ -1,6 +1,6 @@
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE foo PUBLIC "-//Foo Corp//DTD 1.0//EN" "foo.dtd">
-<foo></foo>
+<foo/>
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE foo PUBLIC "-//Foo Corp//DTD 1.0//EN">
-<foo></foo>
+<foo/>
diff --git a/test/files/run/t2124.check b/test/files/run/t2124.check
index 2b8840209f..51b40469aa 100644..100755
--- a/test/files/run/t2124.check
+++ b/test/files/run/t2124.check
@@ -1 +1 @@
-<p><lost></lost><q></q></p>
+<p><lost/><q/></p>
diff --git a/test/files/run/t2125.check b/test/files/run/t2125.check
index 2b8840209f..51b40469aa 100644..100755
--- a/test/files/run/t2125.check
+++ b/test/files/run/t2125.check
@@ -1 +1 @@
-<p><lost></lost><q></q></p>
+<p><lost/><q/></p>
diff --git a/test/files/run/t4172.check b/test/files/run/t4172.check
index 95e3eb950d..da467e27ea 100644
--- a/test/files/run/t4172.check
+++ b/test/files/run/t4172.check
@@ -4,7 +4,7 @@ Type :help for more information.
scala>
scala> val c = { class C { override def toString = "C" }; ((new C, new C { def f = 2 })) }
-c: (C, C{def f: Int}) forSome { type C <: Object with ScalaObject } = (C,C)
+c: (C, C{def f: Int}) forSome { type C <: Object } = (C,C)
scala>
diff --git a/test/files/run/t4891.check b/test/files/run/t4891.check
index 072f8df8d4..79fd7f6fbb 100644
--- a/test/files/run/t4891.check
+++ b/test/files/run/t4891.check
@@ -5,4 +5,3 @@ test.generic.C1
test.generic.C2
(m) public void test.generic.C1.m1()
null
-interface scala.ScalaObject
diff --git a/test/files/run/t5224.check b/test/files/run/t5224.check
index 5bead91b36..28bc75d4fd 100644
--- a/test/files/run/t5224.check
+++ b/test/files/run/t5224.check
@@ -1,5 +1,5 @@
{
- @new Foo(bar = "qwe") class C extends Object with ScalaObject {
+ @new Foo(bar = "qwe") class C extends scala.AnyRef {
def <init>() = {
super.<init>();
()
diff --git a/test/files/run/t5271_1.check b/test/files/run/t5271_1.check
index d4fd544e88..9b956da17a 100644
--- a/test/files/run/t5271_1.check
+++ b/test/files/run/t5271_1.check
@@ -1,5 +1,5 @@
{
- case class C extends Object with ScalaObject with Product with Serializable {
+ case class C extends Object with Product with Serializable {
<caseaccessor> <paramaccessor> val foo : Int = _;
<caseaccessor> <paramaccessor> val bar : Int = _;
def <init>(foo: Int, bar: Int) = {
diff --git a/test/files/run/t5271_2.check b/test/files/run/t5271_2.check
index 5a519f265f..27297febb6 100644
--- a/test/files/run/t5271_2.check
+++ b/test/files/run/t5271_2.check
@@ -1,5 +1,5 @@
{
- case class C extends Object with ScalaObject with Product with Serializable {
+ case class C extends Object with Product with Serializable {
<caseaccessor> <paramaccessor> val foo : Int = _;
<caseaccessor> <paramaccessor> val bar : Int = _;
def <init>(foo: Int, bar: Int) = {
diff --git a/test/files/run/t5271_3.check b/test/files/run/t5271_3.check
index be87696f02..9331c78959 100644
--- a/test/files/run/t5271_3.check
+++ b/test/files/run/t5271_3.check
@@ -1,12 +1,12 @@
{
- object C extends Object with ScalaObject with Serializable {
+ object C extends scala.AnyRef with Serializable {
def <init>() = {
super.<init>();
()
};
def qwe: Int = 4
};
- case class C extends Object with ScalaObject with Product with Serializable {
+ case class C extends Object with Product with Serializable {
<caseaccessor> <paramaccessor> val foo : Int = _;
<caseaccessor> <paramaccessor> val bar : Int = _;
def <init>(foo: Int, bar: Int) = {
diff --git a/test/files/run/t5527.check b/test/files/run/t5527.check
index 4a8a9ce602..bb13928fd8 100644
--- a/test/files/run/t5527.check
+++ b/test/files/run/t5527.check
@@ -1,13 +1,13 @@
[[syntax trees at end of parser]]// Scala source: newSource1
package <empty> {
- object UselessComments extends scala.ScalaObject {
+ object UselessComments extends scala.AnyRef {
def <init>() = {
super.<init>();
()
};
var z = 0;
def test1 = {
- object Maybe extends scala.ScalaObject {
+ object Maybe extends scala.AnyRef {
def <init>() = {
super.<init>();
()
@@ -42,13 +42,13 @@ package <empty> {
}
};
/** comments that we should keep */
- object UsefulComments extends scala.ScalaObject {
+ object UsefulComments extends scala.AnyRef {
def <init>() = {
super.<init>();
()
};
/** class A */
- class A extends scala.ScalaObject {
+ class A extends scala.AnyRef {
def <init>() = {
super.<init>();
()
@@ -61,7 +61,7 @@ package <empty> {
var u = 2
};
/** trait B */
- abstract trait B extends scala.ScalaObject {
+ abstract trait B extends scala.AnyRef {
def $init$() = {
()
};
@@ -75,7 +75,7 @@ package <empty> {
var u = 2
};
/** object C */
- object C extends scala.ScalaObject {
+ object C extends scala.AnyRef {
def <init>() = {
super.<init>();
()
@@ -88,7 +88,7 @@ package <empty> {
var u = 2
};
/** class D */
- @new deprecated("use ... instead", "2.10.0") class D extends scala.ScalaObject {
+ @new deprecated("use ... instead", "2.10.0") class D extends scala.AnyRef {
def <init>() = {
super.<init>();
()
diff --git a/test/files/run/valueclasses-constr.check b/test/files/run/valueclasses-constr.check
new file mode 100644
index 0000000000..df37fbc723
--- /dev/null
+++ b/test/files/run/valueclasses-constr.check
@@ -0,0 +1,2 @@
+0
+00:16:40
diff --git a/test/files/run/valueclasses-constr.scala b/test/files/run/valueclasses-constr.scala
new file mode 100644
index 0000000000..7a10299386
--- /dev/null
+++ b/test/files/run/valueclasses-constr.scala
@@ -0,0 +1,25 @@
+object TOD {
+ final val SecondsPerDay = 86400
+
+ def apply(seconds: Int) = {
+ val n = seconds % SecondsPerDay
+ new TOD(if (n >= 0) n else n + SecondsPerDay)
+ }
+}
+
+final class TOD (val secondsOfDay: Int) extends AnyVal {
+ def hours = secondsOfDay / 3600
+ def minutes = (secondsOfDay / 60) % 60
+ def seconds = secondsOfDay % 60
+
+ override def toString = "%02d:%02d:%02d".format(hours, minutes, seconds)
+}
+
+object Test extends App {
+
+ val y: TOD = new TOD(1000)
+ val x: TOD = TOD(1000)
+ println(x.hours)
+ println(x)
+}
+
diff --git a/test/files/run/xml-attribute.check b/test/files/run/xml-attribute.check
index 3ae2034684..3cfe3779fc 100644
--- a/test/files/run/xml-attribute.check
+++ b/test/files/run/xml-attribute.check
@@ -1,12 +1,12 @@
-<t></t>
-<t></t>
-<t></t>
-<t></t>
-<t></t>
-<t b="1" d="2"></t>
-<t b="1" d="2"></t>
-<t b="1" d="2"></t>
-<t a="1" d="2"></t>
-<t b="1" d="2"></t>
-<t a="1" b="2" c="3"></t>
-<t g="1" e="2" p:a="3" f:e="4" mgruhu:ji="5"></t> \ No newline at end of file
+<t/>
+<t/>
+<t/>
+<t/>
+<t/>
+<t b="1" d="2"/>
+<t b="1" d="2"/>
+<t b="1" d="2"/>
+<t a="1" d="2"/>
+<t b="1" d="2"/>
+<t a="1" b="2" c="3"/>
+<t g="1" e="2" p:a="3" f:e="4" mgruhu:ji="5"/>