summaryrefslogtreecommitdiff
path: root/test/files/run/array-charSeq.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2012-05-04 02:22:51 -0700
committerPaul Phillips <paulp@improving.org>2012-05-04 18:24:16 -0700
commitb5e9e4b9502f02c3de31d32b71f82ea1e6723f01 (patch)
treeb6e1d9f4b394b79951f21c5bb980ace12d4fc8f7 /test/files/run/array-charSeq.scala
parent0fb12fa0620c5f9999e309a4de7831549b283c24 (diff)
downloadscala-b5e9e4b9502f02c3de31d32b71f82ea1e6723f01.tar.gz
scala-b5e9e4b9502f02c3de31d32b71f82ea1e6723f01.tar.bz2
scala-b5e9e4b9502f02c3de31d32b71f82ea1e6723f01.zip
Have ArrayCharSequence reuse its Array.
Your know, for performance. Closes SI-5641.
Diffstat (limited to 'test/files/run/array-charSeq.scala')
-rw-r--r--test/files/run/array-charSeq.scala27
1 files changed, 27 insertions, 0 deletions
diff --git a/test/files/run/array-charSeq.scala b/test/files/run/array-charSeq.scala
new file mode 100644
index 0000000000..f7d0586f03
--- /dev/null
+++ b/test/files/run/array-charSeq.scala
@@ -0,0 +1,27 @@
+object Test {
+ val arr = Array[Char]('a' to 'i': _*)
+ var xs: CharSequence = arr
+ val hash = xs.hashCode
+
+ def check(chars: CharSequence) {
+ println("\n[check '" + chars + "'] len = " + chars.length)
+ chars match {
+ case x: runtime.ArrayCharSequence => assert(x.xs eq arr, ((x.xs, arr)))
+ case x => assert(false, x)
+ }
+
+ 0 until chars.length foreach { i =>
+ println("sub(%s, %s) == '%s'".format(i, chars.length, chars.subSequence(i, chars.length)))
+ println("sub(%s, %s) == '%s'".format(0, i, chars.subSequence(0, i)))
+ }
+ if (chars.length >= 2)
+ check(chars.subSequence(1, chars.length - 1))
+ }
+
+ def main(args: Array[String]): Unit = {
+ while (xs.length > 0) {
+ check(xs)
+ xs = xs.subSequence(0, xs.length - 1)
+ }
+ }
+}