Closed
Description
steps
build.sbt
ThisBuild / scalaVersion := "2.12.8"
lazy val root = (project in file("."))
.settings(
name := "javamod"
)
Hello.scala
/** @see [[toBytes(i:java\.time\.Instant* ]] */
class Hello
- Using JDK 11, run
doc
from sbt shell.
problem
sbt:javamod> doc
[info] Updating ...
[info] Done updating.
[info] Main Scala API documentation to /private/tmp/javamod/target/scala-2.12/api...
model contains 2 documentable templates
[error]
[error] bad constant pool tag 19 at byte 58
[error] while compiling: /private/tmp/javamod/Hello.scala
[error] during phase: globalPhase=terminal, enteringPhase=parser
[error] library version: version 2.12.8
[error] compiler version: version 2.12.8
[error] reconstructed args: -d /private/tmp/javamod/target/scala-2.12/api -classpath dummy_3db15a5e -bootclasspath /Users/eed3si9n/.ivy2/cache/org.scala-lang/scala-library/jars/scala-library-2.12.8.jar
[error]
[error] last tree to typer: Literal(Constant(()))
[error] tree position: line 2 of /private/tmp/javamod/Hello.scala
[error] tree tpe: Unit
[error] symbol: null
[error] call site: constructor Hello in class Hello in package <empty>
[error]
[error] == Source file context for tree position ==
[error]
[error] 1 /** @see [[toBytes(i:java\.time\.Instant* ]] */
[error] 2 class Hello
[error] 3
[error] scala.reflect.internal.FatalError:
[error] bad constant pool tag 19 at byte 58
[error] while compiling: /private/tmp/javamod/Hello.scala
[error] during phase: globalPhase=terminal, enteringPhase=parser
[error] library version: version 2.12.8
[error] compiler version: version 2.12.8
[error] reconstructed args: -d /private/tmp/javamod/target/scala-2.12/api -classpath dummy_3db15a5e -bootclasspath /Users/eed3si9n/.ivy2/cache/org.scala-lang/scala-library/jars/scala-library-2.12.8.jar
[error]
[error] last tree to typer: Literal(Constant(()))
[error] tree position: line 2 of /private/tmp/javamod/Hello.scala
[error] tree tpe: Unit
[error] symbol: null
[error] call site: constructor Hello in class Hello in package <empty>
[error]
[error] == Source file context for tree position ==
[error]
[error] 1 /** @see [[toBytes(i:java\.time\.Instant* ]] */
[error] 2 class Hello
[error] 3
[error] at scala.reflect.internal.Reporting.abort(Reporting.scala:68)
[error] at scala.reflect.internal.Reporting.abort$(Reporting.scala:64)
[error] at scala.reflect.internal.SymbolTable.abort(SymbolTable.scala:27)
[error] at scala.tools.nsc.symtab.classfile.ClassfileParser$ConstantPool.errorBadTag(ClassfileParser.scala:372)
[error] at scala.tools.nsc.symtab.classfile.ClassfileParser$ConstantPool.<init>(ClassfileParser.scala:197)
[error] at scala.tools.nsc.symtab.SymbolLoaders$ClassfileLoader$classfileParser$.newConstantPool(SymbolLoaders.scala:310)
[error] at scala.tools.nsc.symtab.classfile.ClassfileParser.$anonfun$parse$1(ClassfileParser.scala:161)
[error] at scala.tools.nsc.symtab.classfile.ClassfileParser.parse(ClassfileParser.scala:133)
[error] at scala.tools.nsc.symtab.SymbolLoaders$ClassfileLoader.doComplete(SymbolLoaders.scala:332)
[error] at scala.tools.nsc.symtab.SymbolLoaders$SymbolLoader.complete(SymbolLoaders.scala:231)
[error] at scala.reflect.internal.Symbols$Symbol.info(Symbols.scala:1542)
[error] at scala.tools.nsc.doc.base.MemberLookupBase.$anonfun$lookupInTemplate$4(MemberLookupBase.scala:161)
[error] at scala.tools.nsc.doc.base.MemberLookupBase.$anonfun$lookupInTemplate$4$adapted(MemberLookupBase.scala:161)
[error] at scala.collection.TraversableLike.$anonfun$filterImpl$1(TraversableLike.scala:251)
[error] at scala.collection.immutable.List.foreach(List.scala:392)
[error] at scala.collection.TraversableLike.filterImpl(TraversableLike.scala:250)
[error] at scala.collection.TraversableLike.filterImpl$(TraversableLike.scala:248)
[error] at scala.collection.AbstractTraversable.filterImpl(Traversable.scala:108)
[error] at scala.collection.TraversableLike.filter(TraversableLike.scala:262)
[error] at scala.collection.TraversableLike.filter$(TraversableLike.scala:262)
[error] at scala.collection.AbstractTraversable.filter(Traversable.scala:108)
[error] at scala.tools.nsc.doc.base.MemberLookupBase.cleanupBogusClasses$1(MemberLookupBase.scala:161)
[error] at scala.tools.nsc.doc.base.MemberLookupBase.lookupInTemplate(MemberLookupBase.scala:172)
[error] at scala.tools.nsc.doc.base.MemberLookupBase.lookupInTemplate(MemberLookupBase.scala:136)
[error] at scala.tools.nsc.doc.base.MemberLookupBase.lookupInRootPackage(MemberLookupBase.scala:123)
[error] at scala.tools.nsc.doc.base.MemberLookupBase.memberLookup(MemberLookupBase.scala:64)
[error] at scala.tools.nsc.doc.base.MemberLookupBase.memberLookup$(MemberLookupBase.scala:60)
[error] at scala.tools.nsc.doc.DocFactory$$anon$2.memberLookup(DocFactory.scala:75)
[error] at scala.tools.nsc.doc.base.MemberLookupBase$$anon$1.link$lzycompute(MemberLookupBase.scala:39)
[error] at scala.tools.nsc.doc.base.MemberLookupBase$$anon$1.link(MemberLookupBase.scala:39)
[error] at scala.tools.nsc.doc.base.comment.EntityLink$.unapply(Body.scala:90)
[error] at scala.tools.nsc.doc.html.HtmlPage.inlineToHtml(HtmlPage.scala:141)
[error] at scala.tools.nsc.doc.html.HtmlPage.inlineToHtml(HtmlPage.scala:139)
[error] at scala.tools.nsc.doc.html.HtmlPage.$anonfun$inlineToHtml$1(HtmlPage.scala:130)
[error] at scala.collection.TraversableLike.$anonfun$flatMap$1(TraversableLike.scala:244)
[error] at scala.collection.immutable.List.foreach(List.scala:392)
[error] at scala.collection.TraversableLike.flatMap(TraversableLike.scala:244)
[error] at scala.collection.TraversableLike.flatMap$(TraversableLike.scala:241)
[error] at scala.collection.immutable.List.flatMap(List.scala:355)
[error] at scala.tools.nsc.doc.html.HtmlPage.inlineToHtml(HtmlPage.scala:130)
[error] at scala.tools.nsc.doc.html.HtmlPage.blockToHtml(HtmlPage.scala:103)
[error] at scala.tools.nsc.doc.html.HtmlPage.$anonfun$bodyToHtml$1(HtmlPage.scala:96)
[error] at scala.collection.TraversableLike.$anonfun$flatMap$1(TraversableLike.scala:244)
[error] at scala.collection.immutable.List.foreach(List.scala:392)
[error] at scala.collection.TraversableLike.flatMap(TraversableLike.scala:244)
[error] at scala.collection.TraversableLike.flatMap$(TraversableLike.scala:241)
[error] at scala.collection.immutable.List.flatMap(List.scala:355)
[error] at scala.tools.nsc.doc.html.HtmlPage.bodyToHtml(HtmlPage.scala:96)
[error] at scala.tools.nsc.doc.html.page.EntityPage.$anonfun$memberToCommentBodyHtml$21(Entity.scala:737)
[error] at scala.tools.nsc.doc.html.page.EntityPage.$anonfun$memberToCommentBodyHtml$20(Entity.scala:737)
[error] at scala.tools.nsc.doc.html.page.EntityPage.memberToCommentBodyHtml(Entity.scala:699)
[error] at scala.tools.nsc.doc.html.page.EntityPage.memberToCommentBodyHtml$(Entity.scala:481)
[error] at scala.tools.nsc.doc.html.page.EntityPage$$anon$1.memberToCommentBodyHtml(Entity.scala:1124)
[error] at scala.tools.nsc.doc.html.page.EntityPage.memberToCommentHtml(Entity.scala:445)
[error] at scala.tools.nsc.doc.html.page.EntityPage.memberToCommentHtml$(Entity.scala:436)
[error] at scala.tools.nsc.doc.html.page.EntityPage$$anon$1.memberToCommentHtml(Entity.scala:1124)
[error] at scala.tools.nsc.doc.html.page.EntityPage.memberToHtml(Entity.scala:424)
[error] at scala.tools.nsc.doc.html.page.EntityPage.memberToHtml$(Entity.scala:411)
[error] at scala.tools.nsc.doc.html.page.EntityPage$$anon$1.memberToHtml(Entity.scala:1124)
[error] at scala.tools.nsc.doc.html.page.EntityPage.$anonfun$content$7(Entity.scala:318)
[error] at scala.tools.nsc.doc.html.page.EntityPage.$init$(Entity.scala:318)
[error] at scala.tools.nsc.doc.html.page.EntityPage$$anon$1.<init>(Entity.scala:1124)
[error] at scala.tools.nsc.doc.html.page.EntityPage$.apply(Entity.scala:1124)
[error] at scala.tools.nsc.doc.html.HtmlFactory.writeTemplates(HtmlFactory.scala:136)
[error] at scala.tools.nsc.doc.html.HtmlFactory.generate(HtmlFactory.scala:123)
[error] at scala.tools.nsc.doc.html.Doclet.generateImpl(Doclet.scala:30)
[error] at scala.tools.nsc.doc.doclet.Generator.generate(Generator.scala:35)
[error] at scala.tools.nsc.doc.DocFactory.generate$1(DocFactory.scala:135)
[error] at scala.tools.nsc.doc.DocFactory.document(DocFactory.scala:138)
[error] at xsbt.Runner.run(ScaladocInterface.scala:30)
[error] at xsbt.ScaladocInterface.run(ScaladocInterface.scala:15)
[error] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[error] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[error] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[error] at java.base/java.lang.reflect.Method.invoke(Method.java:566)
[error] at sbt.internal.inc.AnalyzingCompiler.call(AnalyzingCompiler.scala:237)
[error] at sbt.internal.inc.AnalyzingCompiler.doc(AnalyzingCompiler.scala:166)
[error] at sbt.internal.inc.AnalyzingCompiler.doc(AnalyzingCompiler.scala:147)
[error] at sbt.Doc$.$anonfun$scaladoc$1(Doc.scala:39)
[error] at sbt.Doc$.$anonfun$scaladoc$1$adapted(Doc.scala:39)
[error] at sbt.RawCompileLike$.$anonfun$prepare$1(RawCompileLike.scala:83)
[error] at sbt.RawCompileLike$.$anonfun$prepare$1$adapted(RawCompileLike.scala:76)
[error] at sbt.RawCompileLike$.$anonfun$cached$3(RawCompileLike.scala:67)
[error] at sbt.RawCompileLike$.$anonfun$cached$3$adapted(RawCompileLike.scala:65)
[error] at sbt.util.Tracked$.$anonfun$inputChanged$1(Tracked.scala:149)
[error] at sbt.RawCompileLike$.$anonfun$cached$1(RawCompileLike.scala:72)
[error] at sbt.RawCompileLike$.$anonfun$cached$1$adapted(RawCompileLike.scala:55)
[error] at sbt.Defaults$.$anonfun$docTaskSettings$3(Defaults.scala:1427)
[error] at scala.Function1.$anonfun$compose$1(Function1.scala:44)
[error] at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:40)
[error] at sbt.std.Transform$$anon$4.work(System.scala:67)
[error] at sbt.Execute.$anonfun$submit$2(Execute.scala:269)
[error] at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:16)
[error] at sbt.Execute.work(Execute.scala:278)
[error] at sbt.Execute.$anonfun$submit$1(Execute.scala:269)
[error] at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:178)
[error] at sbt.CompletionService$$anon$2.call(CompletionService.scala:37)
[error] at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error] at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
[error] at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
[error] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
[error] at java.base/java.lang.Thread.run(Thread.java:834)
[error] (Compile / doc) scala.reflect.internal.FatalError:
[error] bad constant pool tag 19 at byte 58
[error] while compiling: /private/tmp/javamod/Hello.scala
[error] during phase: globalPhase=terminal, enteringPhase=parser
[error] library version: version 2.12.8
[error] compiler version: version 2.12.8
[error] reconstructed args: -d /private/tmp/javamod/target/scala-2.12/api -classpath dummy_3db15a5e -bootclasspath /Users/eed3si9n/.ivy2/cache/org.scala-lang/scala-library/jars/scala-library-2.12.8.jar
[error]
[error] last tree to typer: Literal(Constant(()))
[error] tree position: line 2 of /private/tmp/javamod/Hello.scala
[error] tree tpe: Unit
[error] symbol: null
[error] call site: constructor Hello in class Hello in package <empty>
[error]
[error] == Source file context for tree position ==
[error]
[error] 1 /** @see [[toBytes(i:java\.time\.Instant* ]] */
[error] 2 class Hello
[error] 3
expectation
Just a warning, exactly how doc
would run under JDK 8.
$ jenv shell 1.8
$ sbt
...
sbt:javamod> doc
[info] Main Scala API documentation to /private/tmp/javamod/target/scala-2.12/api...
model contains 3 documentable templates
[warn] /private/tmp/javamod/Hello.scala:3:1: Could not find any member to link for "toBytes(i:java\.time\.Instant*".
[warn] /** @see [[toBytes(i:java\.time\.Instant* ]]
[warn] ^
[warn] one warning found
[info] Main Scala API documentation successful.
[success] Total time: 3 s, completed Jul 31, 2019 1:19:15 PM
notes
The original report by @hmf posted here - https://gist.github.com/eed3si9n/5a09c7f6b523f99b105eee082c9aa7fb
Relevant code: https://github.com/scala/scala/blame/v2.12.8/src/compiler/scala/tools/nsc/symtab/classfile/ClassfileParser.scala#L197
Constant pool tag 19 also known as CONSTANT_Module
is a constant type introduced in JDK 9.