diff options
-rw-r--r-- | src/library/scala/Symbol.scala | 13 | ||||
-rwxr-xr-x | test/files/jvm/serialization.check | 5 | ||||
-rwxr-xr-x | test/files/jvm/serialization.scala | 15 |
3 files changed, 25 insertions, 8 deletions
diff --git a/src/library/scala/Symbol.scala b/src/library/scala/Symbol.scala index e9f5b08a56..5ab9ec680a 100644 --- a/src/library/scala/Symbol.scala +++ b/src/library/scala/Symbol.scala @@ -1,6 +1,6 @@ /* __ *\ ** ________ ___ / / ___ Scala API ** -** / __/ __// _ | / / / _ | (c) 2003-2007, LAMP/EPFL ** +** / __/ __// _ | / / / _ | (c) 2003-2008, LAMP/EPFL ** ** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ ** ** /____/\___/_/ |_/____/_/ | | ** ** |/ ** @@ -32,14 +32,19 @@ private[scala] object internedSymbols extends jcl.WeakHashMap[String, ref.WeakRe * @author Martin Odersky, Iulian Dragos * @version 1.8 */ +@serializable final class Symbol private (val name: String) { /** Converts this symbol to a string. */ - override def toString(): String = { - "'" + name - } + override def toString(): String = "'" + name + /** Compares this symbol with the specified value for equality. + */ + override def equals(that: Any): Boolean = that match { + case that: Symbol => this.name == that.name + case _ => false + } } object Symbol { diff --git a/test/files/jvm/serialization.check b/test/files/jvm/serialization.check index 144e31603f..813cf19594 100755 --- a/test/files/jvm/serialization.check +++ b/test/files/jvm/serialization.check @@ -14,6 +14,11 @@ x4 = <na> y4 = <na> x4(2): 4 - y4(2): 4 +x5 = 'hello +y5 = 'hello +x5 eq y5: false - y5 eq x5: false +x5 equals y5: true - y5 equals x5: true + x = List((buffers,20), (layers,2), (title,3)) y = List((buffers,20), (layers,2), (title,3)) x equals y: true - y equals x: true diff --git a/test/files/jvm/serialization.scala b/test/files/jvm/serialization.scala index 3e729ead82..57e42892ff 100755 --- a/test/files/jvm/serialization.scala +++ b/test/files/jvm/serialization.scala @@ -49,29 +49,36 @@ object Test1_scala { val x2 = None val x3 = Array(1, 2, 3) val x4 = { x: Int => 2 * x } + val x5 = 'hello try { val y1: List[Nothing] = Serialize.read(Serialize.write(x1)) val y2: Option[Nothing] = Serialize.read(Serialize.write(x2)) val y3: Array[Int] = Serialize.read(Serialize.write(x3)) val y4: Function[Int, Int] = Serialize.read(Serialize.write(x4)) + val y5: Symbol = Serialize.read(Serialize.write(x5)) println("x1 = " + x1) println("y1 = " + y1) println("x1 eq y1: " + (x1 eq y1) + " - y1 eq x1: " + (y1 eq x1)) - println + println() println("x2 = " + x2) println("y2 = " + y2) println("x2 eq y2: " + (x2 eq y2) + " - y2 eq x2: " + (y2 eq x2)) - println + println() println("x3 = " + arrayToString(x3)) println("y3 = " + arrayToString(y3)) println("arrayEquals(x3, y3): " + arrayEquals(x3, y3)) - println + println() println("x4 = <na>") println("y4 = <na>") println("x4(2): " + x4(2) + " - y4(2): " + y4(2)) - println + println() + println("x5 = " + x5) + println("y5 = " + y5) + println("x5 eq y5: " + (x5 eq y5) + " - y5 eq x5: " + (y5 eq x5)) + println("x5 equals y5: " + (x5 equals y5) + " - y5 equals x5: " + (y5 equals x5)) + println() } catch { case e: Exception => |