scala / scala3

The Scala 3 compiler, also known as Dotty.
https://dotty.epfl.ch
Apache License 2.0
5.81k stars 1.05k forks source link

Scala doc fails to generate static site #15306

Closed nicolasfara closed 1 year ago

nicolasfara commented 2 years ago

Compiler version

3.1.2

Minimized code

A minimal repo created accoring to the scaladoc documentation. Link to example repo: https://github.com/nicolasfara/scaladoc-test

Output

When -siteroot is set to:

Stack trace ```scala [error] java.lang.RuntimeException: java.lang.reflect.InvocationTargetException [error] at xsbt.DottydocRunner.run(DottydocRunner.java:65) [error] at xsbt.ScaladocInterface.run(ScaladocInterface.java:11) [error] at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) [error] at java.base/java.lang.reflect.Method.invoke(Method.java:577) [error] at sbt.internal.inc.AnalyzingCompiler.invoke(AnalyzingCompiler.scala:329) [error] at sbt.internal.inc.AnalyzingCompiler.doc(AnalyzingCompiler.scala:175) [error] at sbt.internal.inc.AnalyzingCompiler.doc(AnalyzingCompiler.scala:133) [error] at sbt.Doc$.$anonfun$scaladoc$1(Doc.scala:52) [error] at sbt.Doc$.$anonfun$scaladoc$1$adapted(Doc.scala:40) [error] at sbt.RawCompileLike$.$anonfun$prepare$1(RawCompileLike.scala:79) [error] at sbt.RawCompileLike$.$anonfun$prepare$1$adapted(RawCompileLike.scala:72) [error] at sbt.RawCompileLike$.$anonfun$cached$4(RawCompileLike.scala:63) [error] at sbt.RawCompileLike$.$anonfun$cached$4$adapted(RawCompileLike.scala:61) [error] at sbt.util.Tracked$.$anonfun$inputChangedW$1(Tracked.scala:219) [error] at sbt.RawCompileLike$.$anonfun$cached$1(RawCompileLike.scala:68) [error] at sbt.RawCompileLike$.$anonfun$cached$1$adapted(RawCompileLike.scala:52) [error] at sbt.Defaults$.$anonfun$docTaskSettings$4(Defaults.scala:2159) [error] at scala.Function1.$anonfun$compose$1(Function1.scala:49) [error] at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:62) [error] at sbt.std.Transform$$anon$4.work(Transform.scala:68) [error] at sbt.Execute.$anonfun$submit$2(Execute.scala:282) [error] at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:23) [error] at sbt.Execute.work(Execute.scala:291) [error] at sbt.Execute.$anonfun$submit$1(Execute.scala:282) [error] at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265) [error] at sbt.CompletionService$$anon$2.call(CompletionService.scala:64) [error] at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) [error] at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) [error] at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) [error] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) [error] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [error] at java.base/java.lang.Thread.run(Thread.java:833) [error] Caused by: java.lang.reflect.InvocationTargetException [error] at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:119) [error] at java.base/java.lang.reflect.Method.invoke(Method.java:577) [error] at xsbt.DottydocRunner.run(DottydocRunner.java:61) [error] at xsbt.ScaladocInterface.run(ScaladocInterface.java:11) [error] at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) [error] at java.base/java.lang.reflect.Method.invoke(Method.java:577) [error] at sbt.internal.inc.AnalyzingCompiler.invoke(AnalyzingCompiler.scala:329) [error] at sbt.internal.inc.AnalyzingCompiler.doc(AnalyzingCompiler.scala:175) [error] at sbt.internal.inc.AnalyzingCompiler.doc(AnalyzingCompiler.scala:133) [error] at sbt.Doc$.$anonfun$scaladoc$1(Doc.scala:52) [error] at sbt.Doc$.$anonfun$scaladoc$1$adapted(Doc.scala:40) [error] at sbt.RawCompileLike$.$anonfun$prepare$1(RawCompileLike.scala:79) [error] at sbt.RawCompileLike$.$anonfun$prepare$1$adapted(RawCompileLike.scala:72) [error] at sbt.RawCompileLike$.$anonfun$cached$4(RawCompileLike.scala:63) [error] at sbt.RawCompileLike$.$anonfun$cached$4$adapted(RawCompileLike.scala:61) [error] at sbt.util.Tracked$.$anonfun$inputChangedW$1(Tracked.scala:219) [error] at sbt.RawCompileLike$.$anonfun$cached$1(RawCompileLike.scala:68) [error] at sbt.RawCompileLike$.$anonfun$cached$1$adapted(RawCompileLike.scala:52) [error] at sbt.Defaults$.$anonfun$docTaskSettings$4(Defaults.scala:2159) [error] at scala.Function1.$anonfun$compose$1(Function1.scala:49) [error] at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:62) [error] at sbt.std.Transform$$anon$4.work(Transform.scala:68) [error] at sbt.Execute.$anonfun$submit$2(Execute.scala:282) [error] at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:23) [error] at sbt.Execute.work(Execute.scala:291) [error] at sbt.Execute.$anonfun$submit$1(Execute.scala:282) [error] at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265) [error] at sbt.CompletionService$$anon$2.call(CompletionService.scala:64) [error] at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) [error] at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) [error] at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) [error] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) [error] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [error] at java.base/java.lang.Thread.run(Thread.java:833) [error] Caused by: com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize value of type `java.util.ArrayList` from String value (token `JsonToken.VALUE_STRING`) [error] at [Source: (StringReader); line: 1, column: 8] (through reference chain: java.util.LinkedHashMap["index"]) [error] at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:59) [error] at com.fasterxml.jackson.databind.DeserializationContext.reportInputMismatch(DeserializationContext.java:1601) [error] at com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1375) [error] at com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1322) [error] at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.handleNonArray(CollectionDeserializer.java:384) [error] at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer._deserializeFromString(CollectionDeserializer.java:318) [error] at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:250) [error] at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:28) [error] at com.fasterxml.jackson.databind.deser.std.MapDeserializer._readAndBindStringKeyMap(MapDeserializer.java:609) [error] at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:437) [error] at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:32) [error] at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:322) [error] at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4593) [error] at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3548) [error] at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3531) [error] at dotty.tools.scaladoc.site.Sidebar$.load(SidebarParser.scala:34) [error] at dotty.tools.scaladoc.site.StaticSiteContext.sideBarConfig(StaticSiteContext.scala:48) [error] at dotty.tools.scaladoc.site.StaticSiteContext.templates(StaticSiteContext.scala:51) [error] at dotty.tools.scaladoc.renderers.Renderer.(Renderer.scala:43) [error] at dotty.tools.scaladoc.renderers.HtmlRenderer.(HtmlRenderer.scala:19) [error] at dotty.tools.scaladoc.Scaladoc$.run(Scaladoc.scala:249) [error] at dotty.tools.scaladoc.Scaladoc$.run$$anonfun$1(Scaladoc.scala:84) [error] at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15) [error] at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10) [error] at scala.Option.map(Option.scala:242) [error] at dotty.tools.scaladoc.Scaladoc$.run(Scaladoc.scala:88) [error] at dotty.tools.dottydoc.Main$.process(Main.scala:25) [error] at dotty.tools.dottydoc.Main.process(Main.scala) [error] at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) [error] at java.base/java.lang.reflect.Method.invoke(Method.java:577) [error] at xsbt.DottydocRunner.run(DottydocRunner.java:61) [error] at xsbt.ScaladocInterface.run(ScaladocInterface.java:11) [error] at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) [error] at java.base/java.lang.reflect.Method.invoke(Method.java:577) [error] at sbt.internal.inc.AnalyzingCompiler.invoke(AnalyzingCompiler.scala:329) [error] at sbt.internal.inc.AnalyzingCompiler.doc(AnalyzingCompiler.scala:175) [error] at sbt.internal.inc.AnalyzingCompiler.doc(AnalyzingCompiler.scala:133) [error] at sbt.Doc$.$anonfun$scaladoc$1(Doc.scala:52) [error] at sbt.Doc$.$anonfun$scaladoc$1$adapted(Doc.scala:40) [error] at sbt.RawCompileLike$.$anonfun$prepare$1(RawCompileLike.scala:79) [error] at sbt.RawCompileLike$.$anonfun$prepare$1$adapted(RawCompileLike.scala:72) [error] at sbt.RawCompileLike$.$anonfun$cached$4(RawCompileLike.scala:63) [error] at sbt.RawCompileLike$.$anonfun$cached$4$adapted(RawCompileLike.scala:61) [error] at sbt.util.Tracked$.$anonfun$inputChangedW$1(Tracked.scala:219) [error] at sbt.RawCompileLike$.$anonfun$cached$1(RawCompileLike.scala:68) [error] at sbt.RawCompileLike$.$anonfun$cached$1$adapted(RawCompileLike.scala:52) [error] at sbt.Defaults$.$anonfun$docTaskSettings$4(Defaults.scala:2159) [error] at scala.Function1.$anonfun$compose$1(Function1.scala:49) [error] at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:62) [error] at sbt.std.Transform$$anon$4.work(Transform.scala:68) [error] at sbt.Execute.$anonfun$submit$2(Execute.scala:282) [error] at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:23) [error] at sbt.Execute.work(Execute.scala:291) [error] at sbt.Execute.$anonfun$submit$1(Execute.scala:282) [error] at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265) [error] at sbt.CompletionService$$anon$2.call(CompletionService.scala:64) [error] at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) [error] at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) [error] at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) [error] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) [error] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [error] at java.base/java.lang.Thread.run(Thread.java:833) [error] (Compile / doc) java.lang.reflect.InvocationTargetException [IJ] ```

Expectation

I would expect the sbt doc task to generate the correct API documentation and render the files contained in docs/_docs.

ndido98 commented 2 years ago

Can reproduce the issue with 3.1.2. I also tried with 3.1.3-RC4 with the default site root (./docs) and the files in docs/_docs are ignored. Also, I'm honestly puzzled about the substantial change in behavior between using ./docs and docs as the site root. Shouldn't they be the same?

pikinier20 commented 2 years ago

There are few things going on there: