diff options
-rw-r--r-- | src/compiler/scala/tools/nsc/interpreter/package.scala | 3 | ||||
-rw-r--r-- | src/compiler/scala/tools/nsc/util/JavaStackFrame.scala | 7 | ||||
-rw-r--r-- | src/compiler/scala/tools/nsc/util/package.scala | 3 | ||||
-rw-r--r-- | src/fjbg/ch/epfl/lamp/fjbg/JMethodType.java | 12 | ||||
-rw-r--r-- | src/fjbg/ch/epfl/lamp/fjbg/JObjectType.java | 9 | ||||
-rwxr-xr-x | src/library/scala/reflect/generic/Constants.scala | 2 | ||||
-rw-r--r-- | test/files/run/Course-2002-05.scala | 6 | ||||
-rw-r--r-- | test/files/run/bug978.scala | 6 | ||||
-rw-r--r-- | test/files/run/enums.scala | 4 | ||||
-rw-r--r-- | test/files/run/fors.scala | 42 |
10 files changed, 61 insertions, 33 deletions
diff --git a/src/compiler/scala/tools/nsc/interpreter/package.scala b/src/compiler/scala/tools/nsc/interpreter/package.scala index 88e54abcde..9d131f4786 100644 --- a/src/compiler/scala/tools/nsc/interpreter/package.scala +++ b/src/compiler/scala/tools/nsc/interpreter/package.scala @@ -21,9 +21,6 @@ package object interpreter { x } - /** Frequency counter */ - def freq[T](seq: Seq[T]) = seq groupBy identity mapValues (_.length) - /** Heuristically strip interpreter wrapper prefixes * from an interpreter output string. */ diff --git a/src/compiler/scala/tools/nsc/util/JavaStackFrame.scala b/src/compiler/scala/tools/nsc/util/JavaStackFrame.scala index a08c9ed3b8..7b1caa1784 100644 --- a/src/compiler/scala/tools/nsc/util/JavaStackFrame.scala +++ b/src/compiler/scala/tools/nsc/util/JavaStackFrame.scala @@ -37,6 +37,11 @@ class FrameContext(frame: JavaStackFrame, codeSources: Sources) { else contextLines.mkString(tag + "\n", "", "") } +object FrameContext { + def apply(elem: StackTraceElement): FrameContext = apply(new JavaStackFrame(elem)) + def apply(frame: JavaStackFrame): FrameContext = new FrameContext(frame, Sources()) +} + class JavaStackFrame(val elem: StackTraceElement) { def className: String = elem.getClassName() def methodName: String = elem.getMethodName() @@ -51,6 +56,7 @@ class JavaStackFrame(val elem: StackTraceElement) { private def standardString(which: String) = "%s.%s(%s:%s)".format(which, methodName, fileName, line) + def locationString = fileName + ":" + line def javaString = standardString(className) def shortNameString = standardString(shortName) def tag = "[%s.%s]".format(shortName, methodName) @@ -59,6 +65,7 @@ class JavaStackFrame(val elem: StackTraceElement) { } object JavaStackFrame { + def apply(elem: StackTraceElement) = new JavaStackFrame(elem) def frames(xs: Array[StackTraceElement]): Array[JavaStackFrame] = xs map (x => new JavaStackFrame(x)) def frames(t: Throwable): Array[JavaStackFrame] = frames(Exceptional.unwrap(t).getStackTrace) } diff --git a/src/compiler/scala/tools/nsc/util/package.scala b/src/compiler/scala/tools/nsc/util/package.scala index b61f3751b9..2bede3c8ca 100644 --- a/src/compiler/scala/tools/nsc/util/package.scala +++ b/src/compiler/scala/tools/nsc/util/package.scala @@ -13,6 +13,9 @@ package object util { /** Apply a function and return the passed value */ def returning[T](x: T)(f: T => Unit): T = { f(x) ; x } + /** Frequency counter */ + def freq[T](xs: Traversable[T]): Map[T, Int] = xs groupBy identity mapValues (_.size) + /** Execute code and then wait for all Threads created during its * execution to complete. */ diff --git a/src/fjbg/ch/epfl/lamp/fjbg/JMethodType.java b/src/fjbg/ch/epfl/lamp/fjbg/JMethodType.java index 1d2952b84e..a0197de972 100644 --- a/src/fjbg/ch/epfl/lamp/fjbg/JMethodType.java +++ b/src/fjbg/ch/epfl/lamp/fjbg/JMethodType.java @@ -72,4 +72,16 @@ public class JMethodType extends JType { public boolean isCompatibleWith(JType other) { return false; } + public boolean equals(Object o) { + if (o instanceof JMethodType) + return ((JMethodType)o).getSignature().equals(this.getSignature()); + else + return false; + } + public int hashCode() { + if (signature == null) + return 0; + else + return signature.hashCode(); + } } diff --git a/src/fjbg/ch/epfl/lamp/fjbg/JObjectType.java b/src/fjbg/ch/epfl/lamp/fjbg/JObjectType.java index b8567e8d30..50ccae79c0 100644 --- a/src/fjbg/ch/epfl/lamp/fjbg/JObjectType.java +++ b/src/fjbg/ch/epfl/lamp/fjbg/JObjectType.java @@ -53,4 +53,13 @@ public class JObjectType extends JReferenceType { return other instanceof JObjectType || other == JType.REFERENCE; } + public boolean equals(Object o) { + if (o instanceof JObjectType) + return ((JObjectType)o).getSignature().equals(this.getSignature()); + else + return false; + } + public int hashCode() { + return name.hashCode(); + } } diff --git a/src/library/scala/reflect/generic/Constants.scala b/src/library/scala/reflect/generic/Constants.scala index f137fc43c9..1dadc55aae 100755 --- a/src/library/scala/reflect/generic/Constants.scala +++ b/src/library/scala/reflect/generic/Constants.scala @@ -227,7 +227,7 @@ trait Constants { case ClassTag => "classOf[" + signature(typeValue) + "]" case CharTag => escape("'" + escapedChar(charValue) + "'") case LongTag => longValue.toString() + "L" - case _ => "" + value + case _ => String.valueOf(value) } } def typeValue: Type = value.asInstanceOf[Type] diff --git a/test/files/run/Course-2002-05.scala b/test/files/run/Course-2002-05.scala index a1d71e2818..e6764b92c8 100644 --- a/test/files/run/Course-2002-05.scala +++ b/test/files/run/Course-2002-05.scala @@ -178,9 +178,9 @@ object M4 { isSafe(col, p.tail, delta + 1))); for ( - val placement <- placeQueens(row - 1); - val col <- columns; - isSafe(col, placement, 1) + placement <- placeQueens(row - 1); + col <- columns; + if isSafe(col, placement, 1) ) yield { col :: placement } diff --git a/test/files/run/bug978.scala b/test/files/run/bug978.scala index 72dfdbae0a..a2df87b0ed 100644 --- a/test/files/run/bug978.scala +++ b/test/files/run/bug978.scala @@ -13,14 +13,14 @@ object Test extends Application { // val set = new collection.jcl.HashSet[Foo] val max = 200 - for (val x <- 1 to max) + for (x <- 1 to max) set += new Foo(x) testRemove(2) testExists(2) def testRemove(m: Int) { - for (val x <- 1 to max; x % m == 0) { + for (x <- 1 to max; if x % m == 0) { val f = new Foo(x) set -= f assert(!(set contains f)) @@ -29,7 +29,7 @@ object Test extends Application { } def testExists(m: Int) { - for (val x <- 1 to max; x % m == 1) { + for (x <- 1 to max; if x % m == 1) { val f = new Foo(x) assert(set contains f, "For element: " + f + " set: " + set) } diff --git a/test/files/run/enums.scala b/test/files/run/enums.scala index fcca8d3438..6dda8cbc6e 100644 --- a/test/files/run/enums.scala +++ b/test/files/run/enums.scala @@ -29,7 +29,7 @@ object Test2 { } def run: Int = { - val it = for (val s <- ThreadState.values; s.id != 0) yield s; + val it = for (s <- ThreadState.values; if s.id != 0) yield s; it.toList.length } } @@ -41,7 +41,7 @@ object Test3 { } def run: Int = { - val it = for (val d <- Direction.values; d.toString() startsWith "N") yield d; + val it = for (d <- Direction.values; if d.toString() startsWith "N") yield d; it.toList.length } } diff --git a/test/files/run/fors.scala b/test/files/run/fors.scala index 868a05369b..2cd4cf135c 100644 --- a/test/files/run/fors.scala +++ b/test/files/run/fors.scala @@ -24,34 +24,34 @@ object Test extends Application { println("\ntestOld") // lists - for (val x <- xs) print(x + " "); println - for (val x <- xs; - x % 2 == 0) print(x + " "); println - for {val x <- xs - x % 2 == 0} print(x + " "); println + for (x <- xs) print(x + " "); println + for (x <- xs; + if x % 2 == 0) print(x + " "); println + for {x <- xs + if x % 2 == 0} print(x + " "); println var n = 0 - for (val _ <- xs) n += 1; println(n) - for (val (x, y) <- xs zip ys) print(x + " "); println - for (val p @ (x, y) <- xs zip ys) print(p._1 + " "); println + for (_ <- xs) n += 1; println(n) + for ((x, y) <- xs zip ys) print(x + " "); println + for (p @ (x, y) <- xs zip ys) print(p._1 + " "); println // iterators - for (val x <- it) print(x + " "); println - for (val x <- it; - x % 2 == 0) print(x + " "); println - for {val x <- it - x % 2 == 0} print(x + " "); println + for (x <- it) print(x + " "); println + for (x <- it; + if x % 2 == 0) print(x + " "); println + for {x <- it + if x % 2 == 0} print(x + " "); println // arrays - for (val x <- ar) print(x + " "); println - for (val x <- ar; - x.toInt > 97) print(x + " "); println - for {val x <- ar - x.toInt > 97} print(x + " "); println + for (x <- ar) print(x + " "); println + for (x <- ar; + if x.toInt > 97) print(x + " "); println + for {x <- ar + if x.toInt > 97} print(x + " "); println // sequences - for (val x <- xml.child) println(x) - for (val x <- xml.child; - x.label == "head") println(x) + for (x <- xml.child) println(x) + for (x <- xml.child; + if x.label == "head") println(x) } /////////////////// new syntax /////////////////// |