From d1fb9078954b3e35cef3f6967ce39748a1011036 Mon Sep 17 00:00:00 2001 From: Sean McDirmid Date: Fri, 25 Jul 2008 12:27:02 +0000 Subject: Hardening of plugin to convert more hard crashe... Hardening of plugin to convert more hard crashes as soft ones. --- src/compiler/scala/tools/nsc/IdeSupport.scala | 12 +++++++++--- src/compiler/scala/tools/nsc/typechecker/Contexts.scala | 4 ++-- 2 files changed, 11 insertions(+), 5 deletions(-) (limited to 'src/compiler') diff --git a/src/compiler/scala/tools/nsc/IdeSupport.scala b/src/compiler/scala/tools/nsc/IdeSupport.scala index 2f68ee5d01..91e7ea47a1 100644 --- a/src/compiler/scala/tools/nsc/IdeSupport.scala +++ b/src/compiler/scala/tools/nsc/IdeSupport.scala @@ -16,12 +16,18 @@ trait IdeSupport extends Global with symtab.IdeSupport { // load a source file without us caring about adapt. - def loadSource(file : AbstractFile) = { + def loadSource(file : AbstractFile) : Option[CompilationUnit] = { val run = new IdeRun reloadSource(file) val source = getSourceFile(file) - normalCompile(run.compileSources(source :: Nil)) - run.units.find(unit => unit.source == source) + try { + normalCompile(run.compileSources(source :: Nil)) + run.units.find(unit => unit.source == source) + } catch { + case e => + logError("error in presentation normal compile ", e) + None + } } object loaders1 extends { val global : IdeSupport.this.type = IdeSupport.this diff --git a/src/compiler/scala/tools/nsc/typechecker/Contexts.scala b/src/compiler/scala/tools/nsc/typechecker/Contexts.scala index 71641e2c3a..20eaa5fe29 100644 --- a/src/compiler/scala/tools/nsc/typechecker/Contexts.scala +++ b/src/compiler/scala/tools/nsc/typechecker/Contexts.scala @@ -337,14 +337,14 @@ trait Contexts { self: Analyzer => def error(pos: Position, err: Error) { val msg = err.getMessage() - if (reportGeneralErrors) + if (reportGeneralErrors || inIDE) unit.error(pos, if (checking) "**** ERROR DURING INTERNAL CHECKING ****\n" + msg else msg) else throw err } def error(pos: Position, msg: String) { - if (reportGeneralErrors) + if (reportGeneralErrors || inIDE) unit.error(pos, if (checking) "**** ERROR DURING INTERNAL CHECKING ****\n" + msg else msg) else throw new TypeError(pos, msg) -- cgit v1.2.3