summaryrefslogtreecommitdiff
path: root/src/scaladoc
diff options
context:
space:
mode:
authorLukas Rytz <lukas.rytz@gmail.com>2016-06-19 14:12:13 +0200
committerLukas Rytz <lukas.rytz@gmail.com>2016-06-21 11:23:03 +0200
commite4c2d68fcf2aebe062faf2bdad08e07704b66d9a (patch)
tree5e1ba660b36a285e50652883bca96e7514fe592b /src/scaladoc
parentb3283669e05dc706274e944ffd3750892c16e4dd (diff)
parentaaf7bc0b948ee073934885f8240193a4ba2b3bb8 (diff)
downloadscala-e4c2d68fcf2aebe062faf2bdad08e07704b66d9a.tar.gz
scala-e4c2d68fcf2aebe062faf2bdad08e07704b66d9a.tar.bz2
scala-e4c2d68fcf2aebe062faf2bdad08e07704b66d9a.zip
Merge commit 'aaf7bc0' into merge-2.11-to-2.12-june-19
Diffstat (limited to 'src/scaladoc')
-rw-r--r--src/scaladoc/scala/tools/nsc/doc/model/MemberLookup.scala18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/scaladoc/scala/tools/nsc/doc/model/MemberLookup.scala b/src/scaladoc/scala/tools/nsc/doc/model/MemberLookup.scala
index 20aaab29fc..ebf3be4ce2 100644
--- a/src/scaladoc/scala/tools/nsc/doc/model/MemberLookup.scala
+++ b/src/scaladoc/scala/tools/nsc/doc/model/MemberLookup.scala
@@ -44,8 +44,22 @@ trait MemberLookup extends base.MemberLookupBase {
/* Get package object which has associatedFile ne null */
sym.info.member(newTermName("package"))
else sym
- Option(sym1.associatedFile) flatMap (_.underlyingSource) flatMap { src =>
- val path = src.canonicalPath
+ def classpathEntryFor(s: Symbol): Option[String] = {
+ Option(s.associatedFile).flatMap(_.underlyingSource).map { src =>
+ val path = src.canonicalPath
+ if(path.endsWith(".class")) { // Individual class file -> Classpath entry is root dir
+ var nesting = s.ownerChain.count(_.hasPackageFlag)
+ if(nesting > 0) {
+ val p = 0.until(nesting).foldLeft(src) {
+ case (null, _) => null
+ case (f, _) => f.container
+ }
+ if(p eq null) path else p.canonicalPath
+ } else path
+ } else path // JAR file (and fallback option)
+ }
+ }
+ classpathEntryFor(sym1) flatMap { path =>
settings.extUrlMapping get path map { url =>
LinkToExternal(name, url + "#" + name)
}