diff options
author | Miles Sabin <miles@milessabin.com> | 2010-01-06 18:48:13 +0000 |
---|---|---|
committer | Miles Sabin <miles@milessabin.com> | 2010-01-06 18:48:13 +0000 |
commit | 7315339782f6e19ddd6199768352a91ef66eb27d (patch) | |
tree | 7d81761a40130b99ff40c75f07cb325db8ef84f4 /src/compiler/scala/tools/nsc/symtab/classfile/ClassfileParser.scala | |
parent | 64b0678d3344380666d62c855cab2dad8a6ef08b (diff) | |
download | scala-7315339782f6e19ddd6199768352a91ef66eb27d.tar.gz scala-7315339782f6e19ddd6199768352a91ef66eb27d.tar.bz2 scala-7315339782f6e19ddd6199768352a91ef66eb27d.zip |
scalac portion of fix for #2689.
Diffstat (limited to 'src/compiler/scala/tools/nsc/symtab/classfile/ClassfileParser.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/symtab/classfile/ClassfileParser.scala | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/symtab/classfile/ClassfileParser.scala b/src/compiler/scala/tools/nsc/symtab/classfile/ClassfileParser.scala index da4e0aaa49..5c4679625b 100644 --- a/src/compiler/scala/tools/nsc/symtab/classfile/ClassfileParser.scala +++ b/src/compiler/scala/tools/nsc/symtab/classfile/ClassfileParser.scala @@ -8,7 +8,7 @@ package scala.tools.nsc package symtab package classfile -import java.io.IOException +import java.io.{ File, IOException } import java.lang.Integer.toHexString import scala.collection.immutable.{Map, ListMap} @@ -41,6 +41,9 @@ abstract class ClassfileParser { protected var busy: Option[Symbol] = None // lock to detect recursive reads private var externalName: Name = _ // JVM name of the current class protected var classTParams = Map[Name,Symbol]() + protected var srcfile0 : Option[AbstractFile] = None + + def srcfile = srcfile0 private object metaParser extends MetaParser { val global: ClassfileParser.this.global.type = ClassfileParser.this.global @@ -813,6 +816,13 @@ abstract class ClassfileParser { case nme.ExceptionsATTR if (!isScala) => parseExceptions(attrLen) + case nme.SourceFileATTR => + val srcfileLeaf = pool.getName(in.nextChar).toString.trim + val srcpath = sym.enclosingPackage match { + case NoSymbol => srcfileLeaf + case pkg => pkg.fullNameString(File.separatorChar)+File.separator+srcfileLeaf + } + srcfile0 = settings.outputDirs.srcFilesFor(in.file, srcpath).find(_.exists) case _ => in.skip(attrLen) } |