From bc5923e2a9a1322feaeb3d2d3c70c756ec206d6c Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Fri, 2 Dec 2005 09:40:14 +0000 Subject: *** empty log message *** --- newsources/scala/MatchError.scala | 40 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100755 newsources/scala/MatchError.scala (limited to 'newsources') diff --git a/newsources/scala/MatchError.scala b/newsources/scala/MatchError.scala new file mode 100755 index 0000000000..4979df8717 --- /dev/null +++ b/newsources/scala/MatchError.scala @@ -0,0 +1,40 @@ +/* __ *\ +** ________ ___ / / ___ Scala API ** +** / __/ __// _ | / / / _ | (c) 2002, LAMP/EPFL ** +** __\ \/ /__/ __ |/ /__/ __ | ** +** /____/\___/_/ |_/____/_/ | | ** +** |/ ** +** ** +** $Id$ +\* */ +package scala; + + +/** This class implements errors which are thrown whenever an + * object doesn't match any pattern of a pattern matching + * expression. + * + * @author Matthias Zenger + * @author Martin Odersky + * @version 1.1, 05/03/2004 + */ +object MatchError { + + // todo: change pattern matcher so that dummy type parameter T can be removed. + def fail[T](source: String, line: Int): All = throw new MatchError(source, line); + + def report(source: String, line: Int, obj: Any) = + try { + throw new MatchError(source, line, obj.toString()) + } catch { + case e: MatchError => throw e + case e: Throwable => throw new MatchError(source, line) + } +} + +final class MatchError(msg: String) extends Error(msg) { + def this(source: String, line: Int) = + this(" in '" + source + "' at line " + line); + def this(source: String, line: Int, obj: String) = + this("for object " + obj + " in '" + source + "' at line " + line); +} -- cgit v1.2.3