summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/nsc/backend/jvm/BCodeHelpers.scala29
-rw-r--r--src/compiler/scala/tools/nsc/backend/jvm/BytecodeWriters.scala3
2 files changed, 23 insertions, 9 deletions
diff --git a/src/compiler/scala/tools/nsc/backend/jvm/BCodeHelpers.scala b/src/compiler/scala/tools/nsc/backend/jvm/BCodeHelpers.scala
index 65a6b82570..813180a8c7 100644
--- a/src/compiler/scala/tools/nsc/backend/jvm/BCodeHelpers.scala
+++ b/src/compiler/scala/tools/nsc/backend/jvm/BCodeHelpers.scala
@@ -35,15 +35,26 @@ abstract class BCodeHelpers extends BCodeIdiomatic with BytecodeWriters {
/*
* must-single-thread
*/
- def getOutFolder(csym: Symbol, cName: String, cunit: CompilationUnit): _root_.scala.tools.nsc.io.AbstractFile = {
- try {
- outputDirectory(csym)
- } catch {
- case ex: Throwable =>
- reporter.error(cunit.body.pos, s"Couldn't create file for class $cName\n${ex.getMessage}")
- null
- }
- }
+ def getOutFolder(csym: Symbol, cName: String, cunit: CompilationUnit): _root_.scala.tools.nsc.io.AbstractFile = Option {
+ try {
+ outputDirectory(csym)
+ } catch {
+ case ex: Throwable =>
+ reporter.warning(cunit.body.pos, s"Couldn't find output folder for symbol source ${csym.name}. Dropping to compliation unit source.\n${ex.getMessage}")
+ null
+ }
+ }.orElse { Option {
+ try {
+ outputDirectory(cunit.source)
+ } catch {
+ case ex: Throwable =>
+ reporter.warning(cunit.body.pos, s"Couldn't find output folder for compilation unit $cName\n${ex.getMessage}")
+ null
+ }
+ }}.orElse {
+ reporter.error(cunit.body.pos, s"Couldn't create file for class $cName")
+ None
+ }.orNull
var pickledBytes = 0 // statistics
diff --git a/src/compiler/scala/tools/nsc/backend/jvm/BytecodeWriters.scala b/src/compiler/scala/tools/nsc/backend/jvm/BytecodeWriters.scala
index 1d29fdee10..e4fcb729a2 100644
--- a/src/compiler/scala/tools/nsc/backend/jvm/BytecodeWriters.scala
+++ b/src/compiler/scala/tools/nsc/backend/jvm/BytecodeWriters.scala
@@ -25,6 +25,9 @@ trait BytecodeWriters {
def outputDirectory(sym: Symbol): AbstractFile =
settings.outputDirs outputDirFor enteringFlatten(sym.sourceFile)
+ def outputDirectory(cunitSource: scala.reflect.internal.util.SourceFile): AbstractFile =
+ settings.outputDirs outputDirFor cunitSource.file
+
/**
* @param clsName cls.getName
*/