summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/compiler/scala/tools/nsc/IdeSupport.scala12
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Contexts.scala4
2 files changed, 11 insertions, 5 deletions
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)