summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/library/scala/Symbol.scala13
-rwxr-xr-xtest/files/jvm/serialization.check5
-rwxr-xr-xtest/files/jvm/serialization.scala15
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 =>