diff options
author | Eugene Burmako <xeno.by@gmail.com> | 2012-08-18 18:51:58 +0200 |
---|---|---|
committer | Eugene Burmako <xeno.by@gmail.com> | 2012-08-19 09:36:54 +0200 |
commit | a3735fdbbf93128874d93da5c69af0f777220313 (patch) | |
tree | b4f3684e98da1391c6d2ba38c308e75fad684c89 /src/compiler/scala/tools/nsc/typechecker/ContextErrors.scala | |
parent | ac430ac8ba554d1b976d44598400d95ce5cf3816 (diff) | |
download | scala-a3735fdbbf93128874d93da5c69af0f777220313.tar.gz scala-a3735fdbbf93128874d93da5c69af0f777220313.tar.bz2 scala-a3735fdbbf93128874d93da5c69af0f777220313.zip |
pull request feedback
Diffstat (limited to 'src/compiler/scala/tools/nsc/typechecker/ContextErrors.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/ContextErrors.scala | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/ContextErrors.scala b/src/compiler/scala/tools/nsc/typechecker/ContextErrors.scala index 99ce22ddb9..773d9a6f50 100644 --- a/src/compiler/scala/tools/nsc/typechecker/ContextErrors.scala +++ b/src/compiler/scala/tools/nsc/typechecker/ContextErrors.scala @@ -12,6 +12,8 @@ import symtab.Flags.{ PRIVATE, PROTECTED, IS_ERROR } import scala.compat.Platform.EOL import scala.reflect.runtime.ReflectionUtils import scala.reflect.macros.runtime.AbortMacroException +import scala.util.control.NonFatal +import scala.tools.nsc.util.stackTraceString trait ContextErrors { self: Analyzer => @@ -687,13 +689,14 @@ trait ContextErrors { relevantElements = relevantElements dropRight threshold realex.setStackTrace(relevantElements) - val message = new java.io.StringWriter() - realex.printStackTrace(new java.io.PrintWriter(message)) - Some(EOL + message) + Some(EOL + stackTraceString(realex)) } } catch { // if the magic above goes boom, just fall back to uninformative, but better than nothing, getMessage - case ex: Throwable => + case NonFatal(ex) => + macroLogVerbose("got an exception when processing a macro generated exception\n" + + "offender = " + stackTraceString(realex) + "\n" + + "error = " + stackTraceString(ex)) None } } getOrElse { |