summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2011-05-14 16:54:59 +0000
committerPaul Phillips <paulp@improving.org>2011-05-14 16:54:59 +0000
commit11ebee09918841b5b4175b60399af4e04fade833 (patch)
tree254ecd7fac828185ea4f13e45b524653d562e600 /src
parentc989273edb4302762ac41cb799862cd2f4c8fcc8 (diff)
downloadscala-11ebee09918841b5b4175b60399af4e04fade833.tar.gz
scala-11ebee09918841b5b4175b60399af4e04fade833.tar.bz2
scala-11ebee09918841b5b4175b60399af4e04fade833.zip
Added flatten to Option so Some(Some(x)).flatte...
Added flatten to Option so Some(Some(x)).flatten returns Option[Int] and not Iterable[Int]. No review.
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/nsc/backend/opt/Inliners.scala2
-rw-r--r--src/library/scala/Option.scala3
2 files changed, 4 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/backend/opt/Inliners.scala b/src/compiler/scala/tools/nsc/backend/opt/Inliners.scala
index 4ac4864d43..debd33a986 100644
--- a/src/compiler/scala/tools/nsc/backend/opt/Inliners.scala
+++ b/src/compiler/scala/tools/nsc/backend/opt/Inliners.scala
@@ -644,7 +644,7 @@ abstract class Inliners extends SubComponent {
def lookupIMethod(meth: Symbol, receiver: Symbol): Option[IMethod] = {
def tryParent(sym: Symbol) = icodes icode sym flatMap (_ lookupMethod meth)
- receiver.info.baseClasses.iterator map tryParent find (_.isDefined) getOrElse None
+ receiver.info.baseClasses.iterator map tryParent find (_.isDefined) flatten
}
} /* class Inliner */
} /* class Inliners */
diff --git a/src/library/scala/Option.scala b/src/library/scala/Option.scala
index bab3a1c759..dfd647d649 100644
--- a/src/library/scala/Option.scala
+++ b/src/library/scala/Option.scala
@@ -146,6 +146,9 @@ sealed abstract class Option[+A] extends Product with Serializable {
def flatMap[B](f: A => Option[B]): Option[B] =
if (isEmpty) None else f(this.get)
+ def flatten[B](implicit ev: A <:< Option[B]): Option[B] =
+ if (isEmpty) None else ev(this.get)
+
/** Returns this $option if it is nonempty '''and''' applying the predicate $p to
* this $option's value returns true. Otherwise, return $none.
*