mirror of https://github.com/sbt/sbt.git
More fixes for tracking Java sources.
git-svn-id: https://simple-build-tool.googlecode.com/svn/trunk@894 d89573ee-9141-11dd-94d4-bdf5e562f29c
This commit is contained in:
parent
dd32ac75da
commit
3cd6f75b4a
|
|
@ -797,7 +797,7 @@ object FileUtilities
|
|||
def classLocation(cl: Class[_]): URL =
|
||||
{
|
||||
val codeSource = cl.getProtectionDomain.getCodeSource
|
||||
if(codeSource == null) null // TODO: return something nicer, probably the location of rt.jar
|
||||
if(codeSource == null) error("No class location for " + cl)
|
||||
else codeSource.getLocation
|
||||
}
|
||||
def classLocationFile(cl: Class[_]): File = toFile(classLocation(cl))
|
||||
|
|
|
|||
|
|
@ -51,25 +51,27 @@ object Analyze
|
|||
Control.trapAndLog(log)
|
||||
{
|
||||
val clazz = Class.forName(tpe, false, loader)
|
||||
val file = FileUtilities.classLocationFile(clazz)
|
||||
if(file.isDirectory)
|
||||
for(file <- Control.convertException(FileUtilities.classLocationFile(clazz)).right)
|
||||
{
|
||||
val resolved = resolveClassFile(file, tpe)
|
||||
require(resolved.exists, "Resolved class file " + resolved + " did not exist")
|
||||
val resolvedPath = Path.fromFile(resolved)
|
||||
if(Path.fromFile(file) == outputDirectory)
|
||||
if(file.isDirectory)
|
||||
{
|
||||
productToSource.get(resolvedPath) match
|
||||
val resolved = resolveClassFile(file, tpe)
|
||||
assume(resolved.exists, "Resolved class file " + resolved + " from " + source + " did not exist")
|
||||
val resolvedPath = Path.fromFile(resolved)
|
||||
if(Path.fromFile(file) == outputDirectory)
|
||||
{
|
||||
case Some(dependsOn) => analysis.sourceDependency(dependsOn, source)
|
||||
case None => analysis.productDependency(resolvedPath, source)
|
||||
productToSource.get(resolvedPath) match
|
||||
{
|
||||
case Some(dependsOn) => analysis.sourceDependency(dependsOn, source)
|
||||
case None => analysis.productDependency(resolvedPath, source)
|
||||
}
|
||||
}
|
||||
else
|
||||
analysis.classDependency(resolved, source)
|
||||
}
|
||||
else
|
||||
analysis.classDependency(resolved, source)
|
||||
analysis.jarDependency(file, source)
|
||||
}
|
||||
else
|
||||
analysis.jarDependency(file, source)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -88,7 +88,12 @@ object Parser
|
|||
constants.flatMap { constant =>
|
||||
constant.tag match
|
||||
{
|
||||
case ConstantClass => slashesToDots(toUTF8(constant.nameIndex)) :: Nil
|
||||
case ConstantClass =>
|
||||
val name = toUTF8(constant.nameIndex)
|
||||
if(name.startsWith("["))
|
||||
descriptorToTypes(Some(name))
|
||||
else
|
||||
slashesToDots(name) :: Nil
|
||||
case _ => Nil
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue