diff options
author | Vlad Ureche <vlad.ureche@epfl.ch> | 2014-07-15 23:07:01 +0300 |
---|---|---|
committer | Vlad Ureche <vlad.ureche@epfl.ch> | 2014-07-15 23:07:01 +0300 |
commit | 0f8b07a8d7deda602a41859a175b0b46bb113d51 (patch) | |
tree | 8d18c6286f70a7393d8e15d44cfc580156fedb9a | |
parent | 174cf45735cd5ca54223b2a353a92e472aeb2324 (diff) | |
parent | ec46a1fba7395714e65e0f6644b7ad429c985ec7 (diff) | |
download | scala-0f8b07a8d7deda602a41859a175b0b46bb113d51.tar.gz scala-0f8b07a8d7deda602a41859a175b0b46bb113d51.tar.bz2 scala-0f8b07a8d7deda602a41859a175b0b46bb113d51.zip |
Merge pull request #3883 from gourlaysama/wip/t8557
SI-8557 make scaladoc normalize paths of external jars.
-rw-r--r-- | src/scaladoc/scala/tools/nsc/doc/Settings.scala | 2 | ||||
-rw-r--r-- | src/scaladoc/scala/tools/nsc/doc/model/MemberLookup.scala | 2 | ||||
-rw-r--r-- | test/scaladoc/run/t8557.check | 1 | ||||
-rw-r--r-- | test/scaladoc/run/t8557.scala | 32 |
4 files changed, 35 insertions, 2 deletions
diff --git a/src/scaladoc/scala/tools/nsc/doc/Settings.scala b/src/scaladoc/scala/tools/nsc/doc/Settings.scala index 67529f4178..a8e1dee4a0 100644 --- a/src/scaladoc/scala/tools/nsc/doc/Settings.scala +++ b/src/scaladoc/scala/tools/nsc/doc/Settings.scala @@ -249,7 +249,7 @@ class Settings(error: String => Unit, val printMsg: String => Unit = println(_)) val idx = s.indexOf("#") if (idx > 0) { val (first, last) = s.splitAt(idx) - Some(new File(first).getAbsolutePath -> appendIndex(last.substring(1))) + Some(new File(first).getCanonicalPath -> appendIndex(last.substring(1))) } else { error(s"Illegal -doc-external-doc option; expected a pair with '#' separator, found: '$s'") None diff --git a/src/scaladoc/scala/tools/nsc/doc/model/MemberLookup.scala b/src/scaladoc/scala/tools/nsc/doc/model/MemberLookup.scala index 339129bdbc..64eb1adbea 100644 --- a/src/scaladoc/scala/tools/nsc/doc/model/MemberLookup.scala +++ b/src/scaladoc/scala/tools/nsc/doc/model/MemberLookup.scala @@ -45,7 +45,7 @@ trait MemberLookup extends base.MemberLookupBase { sym.info.member(newTermName("package")) else sym Option(sym1.associatedFile) flatMap (_.underlyingSource) flatMap { src => - val path = src.path + val path = src.canonicalPath settings.extUrlMapping get path map { url => LinkToExternal(name, url + "#" + name) } diff --git a/test/scaladoc/run/t8557.check b/test/scaladoc/run/t8557.check new file mode 100644 index 0000000000..619c56180b --- /dev/null +++ b/test/scaladoc/run/t8557.check @@ -0,0 +1 @@ +Done. diff --git a/test/scaladoc/run/t8557.scala b/test/scaladoc/run/t8557.scala new file mode 100644 index 0000000000..451f004d7d --- /dev/null +++ b/test/scaladoc/run/t8557.scala @@ -0,0 +1,32 @@ +import scala.tools.nsc.doc.base._ +import scala.tools.nsc.doc.model._ +import scala.tools.partest.ScaladocModelTest + +object Test extends ScaladocModelTest { + + override def code = """ + package scala.test.scaladoc.T8857 + + /** + * A link: + * + * [[scala.Option$ object Option]]. + */ + class A + """ + + // a non-canonical path to scala-library.jar should still work + // this is a bit fragile (depends on the current directory being the root of the repo ; + // ant & partest seem to do that properly) + def scaladocSettings = "-doc-external-doc build/pack/bin/../lib/scala-library.jar#http://www.scala-lang.org/api/current/" + + def testModel(rootPackage: Package) = { + // get the quick access implicit defs in scope (_package(s), _class(es), _trait(s), object(s) _method(s), _value(s)) + import access._ + + val a = rootPackage._package("scala")._package("test")._package("scaladoc")._package("T8857")._class("A") + + val links = countLinks(a.comment.get, _.link.isInstanceOf[LinkToExternal]) + assert(links == 1, links + " == 1 (the links to external in class A)") + } +} |