scala / bug

Scala 2 bug reports only. Please, no questions — proper bug reports only.
https://scala-lang.org
230 stars 21 forks source link

scaladoc code-block: $ results in UnsupportedException #12964

Closed robstoll closed 2 months ago

robstoll commented 3 months ago

Reproduction steps

  1. git clone https://github.com/robstoll/scala
  2. git checkout scaladoc-bug
  3. open Any.scala
  4. you should see the following at the bottom of the file
    /** 
    *  {{{
    *  x match {
    *    case _ => "just $x in string without interpolation"
    *  }
    *  }}}
    */
    final def asInstanceOf[T0]: T0 = ???
    }
  5. run sbt doc

Results in the following error:

java.lang.UnsupportedOperationException: Position.start on NoPosition ``` [info] Main Scala API documentation successful. [error] java.lang.UnsupportedOperationException: Position.start on NoPosition [error] at scala.reflect.internal.util.Position.fail(Position.scala:24) [error] at scala.reflect.internal.util.UndefinedPosition.start(Position.scala:101) [error] at scala.reflect.internal.util.UndefinedPosition.start(Position.scala:97) [error] at scala.tools.nsc.ast.DocComments.expandInternal$1(DocComments.scala:368) [error] at scala.tools.nsc.ast.DocComments.expandVariables(DocComments.scala:383) [error] at scala.tools.nsc.ast.DocComments.expandVariables$(DocComments.scala:330) [error] at scala.tools.nsc.Global.expandVariables(Global.scala:45) [error] at scala.tools.nsc.ast.DocComments.expandedDocComment(DocComments.scala:112) [error] at scala.tools.nsc.ast.DocComments.expandedDocComment$(DocComments.scala:108) [error] at scala.tools.nsc.Global.expandedDocComment(Global.scala:45) [error] at scala.tools.nsc.doc.model.CommentFactory.defineComment(CommentFactory.scala:80) [error] at scala.tools.nsc.doc.model.CommentFactory.defineComment$(CommentFactory.scala:45) [error] at scala.tools.nsc.doc.DocFactory$$anon$2.defineComment(DocFactory.scala:78) [error] at scala.tools.nsc.doc.model.CommentFactory.$anonfun$comment$1(CommentFactory.scala:38) [error] at scala.collection.mutable.HashMap.getOrElseUpdate(HashMap.scala:469) [error] at scala.tools.nsc.doc.model.CommentFactory.comment(CommentFactory.scala:38) [error] at scala.tools.nsc.doc.model.CommentFactory.comment$(CommentFactory.scala:36) [error] at scala.tools.nsc.doc.DocFactory$$anon$2.comment(DocFactory.scala:78) [error] at scala.tools.nsc.doc.model.ModelFactory$NonTemplateMemberImpl.comment$lzycompute(ModelFactory.scala:527) [error] at scala.tools.nsc.doc.model.ModelFactory$NonTemplateMemberImpl.comment(ModelFactory.scala:510) [error] at scala.tools.nsc.doc.model.ModelFactory$MemberImpl.deprecation(ModelFactory.scala:187) [error] at scala.tools.nsc.doc.model.Entity$.isDeprecated(Entity.scala:67) [error] at scala.tools.nsc.doc.model.Entity$.$anonfun$EntityOrdering$1(Entity.scala:78) [error] at scala.math.Ordering$$anon$1.compare(Ordering.scala:141) [error] at scala.math.Ordering$$anon$1.compare(Ordering.scala:141) [error] at java.base/java.util.TimSort.binarySort(TimSort.java:296) [error] at java.base/java.util.TimSort.sort(TimSort.java:221) [error] at java.base/java.util.Arrays.sort(Arrays.java:1441) [error] at scala.collection.SeqOps.sorted(Seq.scala:728) [error] at scala.collection.SeqOps.sorted$(Seq.scala:719) [error] at scala.collection.immutable.List.scala$collection$immutable$StrictOptimizedSeqOps$$super$sorted(List.scala:79) [error] at scala.collection.immutable.StrictOptimizedSeqOps.sorted(StrictOptimizedSeqOps.scala:78) [error] at scala.collection.immutable.StrictOptimizedSeqOps.sorted$(StrictOptimizedSeqOps.scala:78) [error] at scala.collection.immutable.List.sorted(List.scala:79) [error] at scala.tools.nsc.doc.html.page.EntityPage.$init$(Entity.scala:175) [error] at scala.tools.nsc.doc.html.page.EntityPage$$anon$1.(Entity.scala:1039) [error] at scala.tools.nsc.doc.html.HtmlFactory.writeTemplate$1(HtmlFactory.scala:168) [error] at scala.tools.nsc.doc.html.HtmlFactory.writeTemplates(HtmlFactory.scala:170) [error] at scala.tools.nsc.doc.html.HtmlFactory.generate(HtmlFactory.scala:156) [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:139) [error] at scala.tools.nsc.doc.DocFactory.document(DocFactory.scala:142) [error] at scala.tools.xsbt.Runner.run(ScaladocBridge.scala:47) [error] at scala.tools.xsbt.ScaladocBridge.run(ScaladocBridge.scala:25) [error] at sbt.internal.inc.AnalyzingCompiler.doc(AnalyzingCompiler.scala:154) [error] at sbt.internal.inc.AnalyzingCompiler.doc(AnalyzingCompiler.scala:133) [error] at sbt.Doc$.$anonfun$scaladoc$1(Doc.scala:53) [error] at sbt.Doc$.$anonfun$scaladoc$1$adapted(Doc.scala:41) [error] at sbt.RawCompileLike$.$anonfun$prepare$1(RawCompileLike.scala:80) [error] at sbt.RawCompileLike$.$anonfun$prepare$1$adapted(RawCompileLike.scala:73) [error] at sbt.RawCompileLike$.$anonfun$cached$4(RawCompileLike.scala:64) [error] at sbt.RawCompileLike$.$anonfun$cached$4$adapted(RawCompileLike.scala:62) [error] at sbt.util.Tracked$.$anonfun$inputChangedW$1(Tracked.scala:220) [error] at sbt.RawCompileLike$.$anonfun$cached$1(RawCompileLike.scala:69) [error] at sbt.RawCompileLike$.$anonfun$cached$1$adapted(RawCompileLike.scala:53) [error] at sbt.Defaults$.$anonfun$docTaskSettings$4(Defaults.scala:2164) [error] at scala.Function1.$anonfun$compose$1(Function1.scala:49) [error] at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:63) [error] at sbt.std.Transform$$anon$4.work(Transform.scala:69) [error] at sbt.Execute.$anonfun$submit$2(Execute.scala:283) [error] at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:24) [error] at sbt.Execute.work(Execute.scala:292) [error] at sbt.Execute.$anonfun$submit$1(Execute.scala:283) [error] at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265) [error] at sbt.CompletionService$$anon$2.call(CompletionService.scala:65) [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:829) ```

Problem

Seems like I hit a bug which is (from a user perspective) very well hidden. I am not sure but it looks like this problem is somehow connected to asInstanceOf, as soon as I rename the function the error disappears :shrug:

som-snytt commented 2 months ago

Band-aid :tm: in the PR. Yes, it was due to spurious warning in doc of symbol in library-aux.