diff --git a/project/Build.scala b/project/Build.scala index da1e8eb4c04c..9afc2bd2e65f 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -1241,7 +1241,7 @@ object Build { libraryDependencies += ("org.scala-js" %%% "scalajs-dom" % "1.1.0").cross(CrossVersion.for3Use2_13) ) - def generateDocumentation(targets: Seq[String], name: String, outDir: String, ref: String, params: Seq[String] = Nil, usingScript: Boolean = true) = + def generateDocumentation(targets: Seq[String], name: String, outDir: String, ref: String, params: Seq[String] = Nil) = Def.taskDyn { val distLocation = (dist / pack).value val projectVersion = version.value @@ -1265,20 +1265,10 @@ object Build { s"-source-links:github://lampepfl/dotty/$referenceVersion", ) ++ scalacOptionsDocSettings ++ revision ++ params ++ targets import _root_.scala.sys.process._ - if (usingScript) - Def.task((s"$distLocation/bin/scaladoc" +: cmd).!) - else { - val escapedCmd = cmd.map(arg => if(arg.contains(" ")) s""""$arg"""" else arg) - Def.task { - try { - (Compile / run).toTask(escapedCmd.mkString(" ", " ", "")).value - 0 - } catch { - case _ : Throwable => 1 - } - } + val escapedCmd = cmd.map(arg => if(arg.contains(" ")) s""""$arg"""" else arg) + Def.task { + (Compile / run).toTask(escapedCmd.mkString(" ", " ", "")).value } - } val SourceLinksIntegrationTest = config("sourceLinksIntegrationTest") extend Test @@ -1325,7 +1315,7 @@ object Build { generateSelfDocumentation := Def.taskDyn { generateDocumentation( (Compile / classDirectory).value.getAbsolutePath :: Nil, - "scaladoc", "scaladoc/output/self", VersionUtil.gitHash + "scaladoc", "scaladoc/output/self", VersionUtil.gitHash, Seq("-usejavacp") ) }.value, generateScalaDocumentation := Def.inputTaskDyn { @@ -1366,8 +1356,7 @@ object Build { s"-source-links:docs=github://lampepfl/dotty/master#docs", "-doc-root-content", docRootFile.toString, "-Ydocument-synthetic-types" - ), usingScript = false - )) + ))) }.evaluated, generateTestcasesDocumentation := Def.taskDyn { @@ -1375,7 +1364,8 @@ object Build { (Test / Build.testcasesOutputDir).value, "scaladoc testcases", "scaladoc/output/testcases", - "master" + "master", + Seq("-usejavacp") ) }.value, diff --git a/project/scripts/cmdTests b/project/scripts/cmdTests index 37bb8bcb706e..0e0f75774d6a 100755 --- a/project/scripts/cmdTests +++ b/project/scripts/cmdTests @@ -61,6 +61,28 @@ echo "testing -Ythrough-tasty" clear_out "$OUT" "$SBT" ";scalac -Ythrough-tasty $SOURCE" +echo "testing scaladoc script" +clear_out "$OUT" +clear_out "$OUT1" +"$SBT" "scaladoc/generateTestcasesDocumentation" > "$tmp" 2>&1 || echo "generated testcases project with sbt" +dist/target/pack/bin/scaladoc \ + -d "$OUT1" \ + -project "scaladoc testcases" \ + -source-links:out/bootstrap/stdlib-bootstrapped/scala-3.0.2-RC1-bin-SNAPSHOT-nonbootstrapped/src_managed/main/scala-library-src=github://scala/scala/v2.13.6#src/library \ + -source-links:out/bootstrap/stdlib-bootstrapped/scala-3.0.2-RC1-bin-SNAPSHOT-nonbootstrapped/src_managed/main/dotty-library-src=github://lampepfl/dotty/3.0.0#library/src \ + -source-links:github://lampepfl/dotty/3.0.0 \ + "-external-mappings:.*scala.*::scaladoc3::http://dotty.epfl.ch/api/,.*java.*::javadoc::https://docs.oracle.com/javase/8/docs/api/" \ + "-skip-by-regex:.+\.internal($|\..+)" \ + "-skip-by-regex:.+\.impl($|\..+)" \ + -project-logo docs/logo.svg \ + -social-links:github::https://github.com/lampepfl/dotty,gitter::https://gitter.im/scala/scala,twitter::https://twitter.com/scala_lang \ + "-skip-by-id:scala.runtime.stdLibPatches" \ + "-skip-by-id:scala.runtime.MatchCase" \ + -project-footer "Copyright (c) 2002-2021, LAMP/EPFL" \ + -author -groups -revision master -project-version 3.0.2-RC1-bin-SNAPSHOT \ + out/bootstrap/scaladoc-testcases/scala-3.0.2-RC1-bin-SNAPSHOT-nonbootstrapped/classes > "$tmp" 2>&1 || echo "generated testcases project with scripts" +diff -rq "$OUT1" "scaladoc/output/testcases" + ## Disabled because of flakeyness, should be changed to not depend on sbt # echo "running Vulpix meta test" # tmp=$(mktemp) diff --git a/scaladoc-testcases/src/tests/snippetCompilerTests.scala b/scaladoc-testcases/src/tests/snippetCompilerTests.scala index 85d4db4ee0a2..3d03438f7f3c 100644 --- a/scaladoc-testcases/src/tests/snippetCompilerTests.scala +++ b/scaladoc-testcases/src/tests/snippetCompilerTests.scala @@ -2,7 +2,7 @@ package tests package snippetCompilerTests /** - * ```scala sc:compile + * ```scala sc:fail * //{ * import scala.collection.Seq * //} @@ -34,7 +34,7 @@ package snippetCompilerTests * a * ``` * - * ```scala sc:fail + * ```scala sc:compile * def a = 2 * ``` * @@ -48,7 +48,7 @@ class A { } /** - * ```scala sc:compile + * ```scala sc:fail * val c: Int = 4.5 * ``` */ @@ -58,7 +58,7 @@ trait Quotes { val reflect: reflectModule = ??? trait reflectModule { self: reflect.type => /** - * ```scala sc:compile + * ```scala sc:fail * 2 + List() * ``` * diff --git a/scaladoc-testcases/src/tests/snippetTestcase1.scala b/scaladoc-testcases/src/tests/snippetTestcase1.scala index b0907f983946..4a2960092c95 100644 --- a/scaladoc-testcases/src/tests/snippetTestcase1.scala +++ b/scaladoc-testcases/src/tests/snippetTestcase1.scala @@ -4,7 +4,7 @@ class SnippetTestcase1: /** * SNIPPET(OUTERLINEOFFSET:8,OUTERCOLUMNOFFSET:6,INNERLINEOFFSET:3,INNERCOLUMNOFFSET:2) * ERROR(LINE:8,COLUMN:8) - * ```scala sc:compile + * ```scala sc:fail * 2 + List() * ``` * diff --git a/scaladoc-testcases/src/tests/snippetTestcase2.scala b/scaladoc-testcases/src/tests/snippetTestcase2.scala index 8e3fd0f33744..e68a339d77e8 100644 --- a/scaladoc-testcases/src/tests/snippetTestcase2.scala +++ b/scaladoc-testcases/src/tests/snippetTestcase2.scala @@ -9,7 +9,7 @@ trait Quotes2[A] { /** * SNIPPET(OUTERLINEOFFSET:13,OUTERCOLUMNOFFSET:10,INNERLINEOFFSET:6,INNERCOLUMNOFFSET:6) * ERROR(LINE:13,COLUMN:12) - * ```scala sc:compile + * ```scala sc:fail * 2 + List() * ``` * @@ -21,7 +21,7 @@ trait Quotes2[A] { /** * SNIPPET(OUTERLINEOFFSET:25,OUTERCOLUMNOFFSET:10,INNERLINEOFFSET:7,INNERCOLUMNOFFSET:6) * ERROR(LINE:25,COLUMN:12) - * ```scala sc:compile + * ```scala sc:fail * 2 + List() * ``` * @@ -35,7 +35,7 @@ trait Quotes2[A] { /** * SNIPPET(OUTERLINEOFFSET:39,OUTERCOLUMNOFFSET:10,INNERLINEOFFSET:5,INNERCOLUMNOFFSET:6) * ERROR(LINE:39,COLUMN:12) - * ```scala sc:compile + * ```scala sc:fail * 2 + List() * ``` * @@ -47,7 +47,7 @@ trait Quotes2[A] { /** * SNIPPET(OUTERLINEOFFSET:51,OUTERCOLUMNOFFSET:10,INNERLINEOFFSET:6,INNERCOLUMNOFFSET:6) * ERROR(LINE:51,COLUMN:12) - * ```scala sc:compile + * ```scala sc:fail * 2 + List() * ``` * diff --git a/scaladoc/src/dotty/tools/scaladoc/renderers/DotDiagramBuilder.scala b/scaladoc/src/dotty/tools/scaladoc/renderers/DotDiagramBuilder.scala index 5af97d7dc9fb..57df26611b12 100644 --- a/scaladoc/src/dotty/tools/scaladoc/renderers/DotDiagramBuilder.scala +++ b/scaladoc/src/dotty/tools/scaladoc/renderers/DotDiagramBuilder.scala @@ -15,7 +15,7 @@ object DotDiagramBuilder: val vWithId = diagram.verteciesWithId val sealedNodes = diagram.sealedNodes - val vertecies = vWithId.map { (vertex, id) => + val vertecies = vWithId.toList.sortBy((_, id) => id).map { (vertex, id) => s"""node${id} [id=node${id}, label="${getHtmlLabel(vertex, renderer, sealedNodes)}", style="${getStyle(vertex.kind)}"];\n""" }.mkString diff --git a/scaladoc/src/dotty/tools/scaladoc/tasty/ClassLikeSupport.scala b/scaladoc/src/dotty/tools/scaladoc/tasty/ClassLikeSupport.scala index c3a539af766e..27f023fecc39 100644 --- a/scaladoc/src/dotty/tools/scaladoc/tasty/ClassLikeSupport.scala +++ b/scaladoc/src/dotty/tools/scaladoc/tasty/ClassLikeSupport.scala @@ -94,7 +94,7 @@ trait ClassLikeSupport: ) if signatureOnly then baseMember else baseMember.copy( - members = classDef.extractPatchedMembers, + members = classDef.extractPatchedMembers.sortBy(m => (m.name, m.kind.name)), directParents = classDef.getParentsAsLinkToTypes, parents = supertypes, companion = classDef.getCompanion