# HG changeset patch # User wenzelm # Date 1313142086 -7200 # Node ID fe6d1ae7a0658c54c865372db62d83b72dd8d787 # Parent a21d3e1e64fd0d6ee0af77da921a329da0527de1 clarified Exn.message; diff -r a21d3e1e64fd -r fe6d1ae7a065 src/Pure/General/exn.ML --- a/src/Pure/General/exn.ML Thu Aug 11 20:32:44 2011 +0200 +++ b/src/Pure/General/exn.ML Fri Aug 12 11:41:26 2011 +0200 @@ -30,7 +30,7 @@ structure Exn: EXN = struct -(* runtime exceptions as values *) +(* exceptions as values *) datatype 'a result = Res of 'a | diff -r a21d3e1e64fd -r fe6d1ae7a065 src/Pure/General/exn.scala --- a/src/Pure/General/exn.scala Thu Aug 11 20:32:44 2011 +0200 +++ b/src/Pure/General/exn.scala Fri Aug 12 11:41:26 2011 +0200 @@ -9,7 +9,7 @@ object Exn { - /* runtime exceptions as values */ + /* exceptions as values */ sealed abstract class Result[A] case class Res[A](res: A) extends Result[A] @@ -24,5 +24,17 @@ case Res(x) => x case Exn(exn) => throw exn } + + + /* message */ + + private val runtime_exception = Class.forName("java.lang.RuntimeException") + + def message(exn: Throwable): String = + if (exn.getClass == runtime_exception) { + val msg = exn.getMessage + if (msg == null) "Error" else msg + } + else exn.toString } diff -r a21d3e1e64fd -r fe6d1ae7a065 src/Pure/PIDE/isar_document.scala --- a/src/Pure/PIDE/isar_document.scala Thu Aug 11 20:32:44 2011 +0200 +++ b/src/Pure/PIDE/isar_document.scala Fri Aug 12 11:41:26 2011 +0200 @@ -153,7 +153,7 @@ Document.Node.Header(_, Exn.Res(Thy_Header.Header(a, b, c)))) => (Nil, triple(string, list(string), list(string))(a, b, c)) }, { case Document.Node.Update_Header( - Document.Node.Header(_, Exn.Exn(ERROR(a)))) => (List(a), Nil) })))) + Document.Node.Header(_, Exn.Exn(e))) => (List(Exn.message(e)), Nil) })))) YXML.string_of_body(encode(edits)) } input("Isar_Document.edit_version", Document.ID(old_id), Document.ID(new_id), edits_yxml) diff -r a21d3e1e64fd -r fe6d1ae7a065 src/Pure/System/invoke_scala.scala --- a/src/Pure/System/invoke_scala.scala Thu Aug 11 20:32:44 2011 +0200 +++ b/src/Pure/System/invoke_scala.scala Fri Aug 12 11:41:26 2011 +0200 @@ -57,10 +57,8 @@ Exn.capture { f(arg) } match { case Exn.Res(null) => (Tag.NULL, "") case Exn.Res(res) => (Tag.OK, res) - case Exn.Exn(ERROR(msg)) => (Tag.ERROR, msg) - case Exn.Exn(e) => (Tag.ERROR, e.toString) + case Exn.Exn(e) => (Tag.ERROR, Exn.message(e)) } - case Exn.Exn(ERROR(msg)) => (Tag.FAIL, msg) - case Exn.Exn(e) => (Tag.FAIL, e.toString) + case Exn.Exn(e) => (Tag.FAIL, Exn.message(e)) } } diff -r a21d3e1e64fd -r fe6d1ae7a065 src/Pure/library.scala --- a/src/Pure/library.scala Thu Aug 11 20:32:44 2011 +0200 +++ b/src/Pure/library.scala Fri Aug 12 11:41:26 2011 +0200 @@ -20,19 +20,12 @@ { /* user errors */ - private val runtime_exception = Class.forName("java.lang.RuntimeException") - object ERROR { def apply(message: String): Throwable = new RuntimeException(message) def unapply(exn: Throwable): Option[String] = exn match { - case e: RuntimeException => - if (e.getClass != runtime_exception) Some(e.toString) - else { - val msg = e.getMessage - Some(if (msg == null) "Error" else msg) - } + case e: RuntimeException => Some(Exn.message(e)) case _ => None } }