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 =
|
def classLocation(cl: Class[_]): URL =
|
||||||
{
|
{
|
||||||
val codeSource = cl.getProtectionDomain.getCodeSource
|
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
|
else codeSource.getLocation
|
||||||
}
|
}
|
||||||
def classLocationFile(cl: Class[_]): File = toFile(classLocation(cl))
|
def classLocationFile(cl: Class[_]): File = toFile(classLocation(cl))
|
||||||
|
|
|
||||||
|
|
@ -51,25 +51,27 @@ object Analyze
|
||||||
Control.trapAndLog(log)
|
Control.trapAndLog(log)
|
||||||
{
|
{
|
||||||
val clazz = Class.forName(tpe, false, loader)
|
val clazz = Class.forName(tpe, false, loader)
|
||||||
val file = FileUtilities.classLocationFile(clazz)
|
for(file <- Control.convertException(FileUtilities.classLocationFile(clazz)).right)
|
||||||
if(file.isDirectory)
|
|
||||||
{
|
{
|
||||||
val resolved = resolveClassFile(file, tpe)
|
if(file.isDirectory)
|
||||||
require(resolved.exists, "Resolved class file " + resolved + " did not exist")
|
|
||||||
val resolvedPath = Path.fromFile(resolved)
|
|
||||||
if(Path.fromFile(file) == outputDirectory)
|
|
||||||
{
|
{
|
||||||
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)
|
productToSource.get(resolvedPath) match
|
||||||
case None => analysis.productDependency(resolvedPath, source)
|
{
|
||||||
|
case Some(dependsOn) => analysis.sourceDependency(dependsOn, source)
|
||||||
|
case None => analysis.productDependency(resolvedPath, source)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
analysis.classDependency(resolved, source)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
analysis.classDependency(resolved, source)
|
analysis.jarDependency(file, source)
|
||||||
}
|
}
|
||||||
else
|
|
||||||
analysis.jarDependency(file, source)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -88,7 +88,12 @@ object Parser
|
||||||
constants.flatMap { constant =>
|
constants.flatMap { constant =>
|
||||||
constant.tag match
|
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
|
case _ => Nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue