summaryrefslogblamecommitdiff
path: root/src/library/scala/MatchError.scala
blob: a51504a73c45b742fccaa270fbbb050b425cab3b (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11

                                                                          
                                                                          


                                                                          
                                                                          



       
             
 
               










                                                             
                        
                                               
 
                                                          
                                                                                

                                                   


                                                   
                                                     



                                                             
          

 

                                                                   

                                                
 

                                                                      
  
 

                                
 
/*                     __                                               *\
**     ________ ___   / /  ___     Scala API                            **
**    / __/ __// _ | / /  / _ |    (c) 2002-2006, LAMP/EPFL             **
**  __\ \/ /__/ __ |/ /__/ __ |                                         **
** /____/\___/_/ |_/____/_/ | |                                         **
**                          |/                                          **
\*                                                                      */

// $Id$


package scala

import Predef._

/** 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 {

  def string(obj: Any) =
    if (null != obj) obj.toString() else "null"

/* //bq: pattern matcher doesn't use these methods anymore
  // todo: change pattern matcher so that dummy type parameter T can be removed.
  def fail[T](source: String, line: Int): Nothing =
    throw new MatchError(source, line)

  def report(source: String, line: Int, obj: Any) =
    try {
      throw new MatchError(source, line, string(obj))
    } catch {
      case e: MatchError => throw e
      case e: Throwable => throw new MatchError(source, line)
    }
	*/
}

final class MatchError(msg: String) extends RuntimeException(msg) {
/* //bq: pattern matcher doesn't use these constructors anymore
  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)
*/

  def this(obj: Any) =
    this(MatchError.string(obj))
}