diff options
author | Som Snytt <som.snytt@gmail.com> | 2013-12-03 16:38:55 -0800 |
---|---|---|
committer | Som Snytt <som.snytt@gmail.com> | 2013-12-03 16:56:18 -0800 |
commit | 30f779b4d9b699800e323eeba31cf04c16b4fbcd (patch) | |
tree | 128e704dd783731294062b76c832abb17c0c778d /src/reflect/scala/reflect/internal/util | |
parent | 6c63ab153651f7946ece5740d52e0f2b701e349d (diff) | |
download | scala-30f779b4d9b699800e323eeba31cf04c16b4fbcd.tar.gz scala-30f779b4d9b699800e323eeba31cf04c16b4fbcd.tar.bz2 scala-30f779b4d9b699800e323eeba31cf04c16b4fbcd.zip |
SI-8027 REPL double tab regression
Where did double tab go? "The shadow knows."
The regression was introduced by the last flurry
before we were left to wallow in whatever white
space remained.
Some xs put other xs under erasure.
It's clear that somebody's daughter walked into
the room and asked for a story, because, shockingly,
the case arrows don't line up.
We need a plug-in for Jenkins, or I guess Travis, to
fail the build if arrows and equals don't align,
because it clearly indicates a lapse of some kind.
Diffstat (limited to 'src/reflect/scala/reflect/internal/util')
-rw-r--r-- | src/reflect/scala/reflect/internal/util/StringOps.scala | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/reflect/scala/reflect/internal/util/StringOps.scala b/src/reflect/scala/reflect/internal/util/StringOps.scala index 14f349f502..efb8126ff0 100644 --- a/src/reflect/scala/reflect/internal/util/StringOps.scala +++ b/src/reflect/scala/reflect/internal/util/StringOps.scala @@ -23,12 +23,16 @@ trait StringOps { def oempty(xs: String*) = xs filterNot (x => x == null || x == "") def ojoin(xs: String*): String = oempty(xs: _*) mkString " " def longestCommonPrefix(xs: List[String]): String = xs match { - case Nil => "" - case xs if xs contains "" => "" - case x :: xs => - val ch = x charAt 0 - if (xs exists (_.head != ch)) "" - else "" + ch + longestCommonPrefix(xs map (_ substring 1)) + case Nil => "" + case w :: Nil => w + case _ => + def lcp(ss: List[String]): String = { + val w :: ws = ss + if (w == "") "" + else if (ws exists (s => s == "" || (s charAt 0) != (w charAt 0))) "" + else w.substring(0, 1) + lcp(ss map (_ substring 1)) + } + lcp(xs) } /** Like String#trim, but trailing whitespace only. */ |