Skip to content

scaladoc crashes on extension methods involving tuples #19925

Closed
@natsukagami

Description

@natsukagami

Compiler version

3.3.1 and latest main (3694d95)

Minimized code

case class Wrap[+T](x: T)

extension[T](a: T)
  /** Tuplify */
  def *:[U <: Tuple](b: Wrap[U]): Wrap[T *: U] = Wrap(a *: b.x)

Expectation

Running scala-cli doc on this file crashes with

Problem parsing test.scala:<40..166>, documentation may not be generated.

printing the stack trace in TastyParser gives

java.lang.AssertionError: assertion failed: croppedUnshuffledMemberInfoParamLists and SymOps.nonExtensionParamLists disagree on whether this clause is a type or term one
	at scala.runtime.Scala3RunTime$.assertFailed(Scala3RunTime.scala:8)
	at dotty.tools.scaladoc.tasty.ClassLikeSupport.$anonfun$22(ClassLikeSupport.scala:389)
	at scala.collection.immutable.List.flatMap(List.scala:293)
	at dotty.tools.scaladoc.tasty.ClassLikeSupport.parseMethod(ClassLikeSupport.scala:390)
	at dotty.tools.scaladoc.tasty.ClassLikeSupport.parseMethod$(ClassLikeSupport.scala:18)
	at dotty.tools.scaladoc.tasty.TastyParser.parseMethod(TastyParser.scala:178)
	at dotty.tools.scaladoc.tasty.ClassLikeSupport.parseMember$$anonfun$1$$anonfun$1(ClassLikeSupport.scala:171)
	at scala.Option.map(Option.scala:242)
	at dotty.tools.scaladoc.tasty.ClassLikeSupport.parseMember$$anonfun$1(ClassLikeSupport.scala:171)
	at dotty.tools.scaladoc.tasty.TastyParser.processTreeOpt(TastyParser.scala:213)
	at dotty.tools.scaladoc.tasty.ClassLikeSupport.parseMember(ClassLikeSupport.scala:206)
	at dotty.tools.scaladoc.tasty.ClassLikeSupport.extractMembers$$anonfun$1(ClassLikeSupport.scala:241)
	at scala.collection.immutable.List.flatMap(List.scala:293)
	at dotty.tools.scaladoc.tasty.ClassLikeSupport.extractMembers(ClassLikeSupport.scala:241)
	at dotty.tools.scaladoc.tasty.ClassLikeSupport.extractMembers$(ClassLikeSupport.scala:18)
	at dotty.tools.scaladoc.tasty.TastyParser.extractMembers(TastyParser.scala:178)
	at dotty.tools.scaladoc.tasty.ClassLikeSupport.extractPatchedMembers(ClassLikeSupport.scala:247)
	at dotty.tools.scaladoc.tasty.ClassLikeSupport.extractPatchedMembers$(ClassLikeSupport.scala:18)
	at dotty.tools.scaladoc.tasty.TastyParser.extractPatchedMembers(TastyParser.scala:178)
	at dotty.tools.scaladoc.tasty.ClassLikeSupport.mkClass(ClassLikeSupport.scala:133)
	at dotty.tools.scaladoc.tasty.ClassLikeSupport.mkClass$(ClassLikeSupport.scala:18)
	at dotty.tools.scaladoc.tasty.TastyParser.mkClass(TastyParser.scala:178)
	at dotty.tools.scaladoc.tasty.ClassLikeSupport.parseObject(ClassLikeSupport.scala:317)
	at dotty.tools.scaladoc.tasty.ClassLikeSupport.parseObject$(ClassLikeSupport.scala:18)
	at dotty.tools.scaladoc.tasty.TastyParser.parseObject(TastyParser.scala:178)
	at dotty.tools.scaladoc.tasty.ClassLikeSupport.parseClasslike(ClassLikeSupport.scala:310)
	at dotty.tools.scaladoc.tasty.ClassLikeSupport.parseClasslike$(ClassLikeSupport.scala:18)
	at dotty.tools.scaladoc.tasty.TastyParser.parseClasslike(TastyParser.scala:178)
	at dotty.tools.scaladoc.tasty.PackageSupport.parsePackageObject(PackageSupport.scala:19)
	at dotty.tools.scaladoc.tasty.PackageSupport.parsePackageObject$(PackageSupport.scala:8)
	at dotty.tools.scaladoc.tasty.TastyParser.parsePackageObject(TastyParser.scala:178)
	at dotty.tools.scaladoc.tasty.TastyParser$Traverser$2$.traverseTree(TastyParser.scala:230)
	at scala.quoted.Quotes$reflectModule$TreeTraverser.foldTree(Quotes.scala:4902)
	at scala.quoted.Quotes$reflectModule$TreeTraverser.foldTree$(Quotes.scala:4898)
	at dotty.tools.scaladoc.tasty.TastyParser$Traverser$2$.foldTree(TastyParser.scala:220)
	at dotty.tools.scaladoc.tasty.TastyParser$Traverser$2$.foldTree(TastyParser.scala:220)
	at scala.quoted.Quotes$reflectModule$TreeAccumulator.foldTrees$$anonfun$1(Quotes.scala:4790)
	at scala.collection.LinearSeqOps.foldLeft(LinearSeq.scala:183)
	at scala.collection.LinearSeqOps.foldLeft$(LinearSeq.scala:179)
	at scala.collection.immutable.List.foldLeft(List.scala:79)
	at scala.quoted.Quotes$reflectModule$TreeAccumulator.foldTrees(Quotes.scala:4790)
	at scala.quoted.Quotes$reflectModule$TreeAccumulator.foldTrees$(Quotes.scala:4785)
	at dotty.tools.scaladoc.tasty.TastyParser$Traverser$2$.foldTrees(TastyParser.scala:220)
	at scala.quoted.Quotes$reflectModule$TreeAccumulator.foldOverTree(Quotes.scala:4853)
	at scala.quoted.Quotes$reflectModule$TreeAccumulator.foldOverTree$(Quotes.scala:4785)
	at dotty.tools.scaladoc.tasty.TastyParser$Traverser$2$.foldOverTree(TastyParser.scala:220)
	at scala.quoted.Quotes$reflectModule$TreeTraverser.traverseTreeChildren(Quotes.scala:4904)
	at scala.quoted.Quotes$reflectModule$TreeTraverser.traverseTreeChildren$(Quotes.scala:4898)
	at dotty.tools.scaladoc.tasty.TastyParser$Traverser$2$.traverseTreeChildren(TastyParser.scala:220)
	at scala.quoted.Quotes$reflectModule$TreeTraverser.traverseTree(Quotes.scala:4900)
	at scala.quoted.Quotes$reflectModule$TreeTraverser.traverseTree$(Quotes.scala:4898)
	at dotty.tools.scaladoc.tasty.TastyParser$Traverser$2$.traverseTree(TastyParser.scala:228)
	at dotty.tools.scaladoc.tasty.TastyParser.parseRootTree(TastyParser.scala:237)
	at dotty.tools.scaladoc.tasty.ScaladocTastyInspector.inspect$$anonfun$2(TastyParser.scala:112)
	at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
	at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
	at scala.collection.immutable.List.foreach(List.scala:333)
	at dotty.tools.scaladoc.tasty.ScaladocTastyInspector.inspect(TastyParser.scala:113)
	at scala.tasty.inspector.TastyInspector$TastyInspectorPhase$1.runOnImpl(TastyInspector.scala:82)
	at scala.tasty.inspector.TastyInspector$TastyInspectorPhase$1.runOn(TastyInspector.scala:74)
	at dotty.tools.dotc.Run.runPhases$1$$anonfun$1(Run.scala:315)
	at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
	at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
	at scala.collection.ArrayOps$.foreach$extension(ArrayOps.scala:1323)
	at dotty.tools.dotc.Run.runPhases$1(Run.scala:337)
	at dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:350)
	at dotty.tools.dotc.Run.compileUnits$$anonfun$adapted$1(Run.scala:360)
	at dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:69)
	at dotty.tools.dotc.Run.compileUnits(Run.scala:360)
	at dotty.tools.dotc.Run.compileUnits(Run.scala:267)
	at dotty.tools.dotc.fromtasty.TASTYRun.compile(TASTYRun.scala:15)
	at dotty.tools.dotc.Driver.doCompile(Driver.scala:37)
	at dotty.tools.dotc.Driver.process(Driver.scala:196)
	at dotty.tools.dotc.Driver.process(Driver.scala:164)
	at dotty.tools.dotc.Driver.process(Driver.scala:176)
	at scala.tasty.inspector.TastyInspector$.inspectFiles(TastyInspector.scala:121)
	at scala.tasty.inspector.TastyInspector$.inspectAllTastyFiles(TastyInspector.scala:62)
	at dotty.tools.scaladoc.tasty.ScaladocTastyInspector$.loadDocs(TastyParser.scala:163)
	at dotty.tools.scaladoc.ScalaModuleProvider$.mkModule(ScalaModuleProvider.scala:11)
	at dotty.tools.scaladoc.Scaladoc$.run(Scaladoc.scala:240)
	at dotty.tools.scaladoc.Scaladoc$.run$$anonfun$1(Scaladoc.scala:70)
	at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
	at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
	at scala.Option.map(Option.scala:242)
	at dotty.tools.scaladoc.Scaladoc$.run(Scaladoc.scala:74)
	at dotty.tools.scaladoc.Main.run(Main.scala:8)
	at dotty.tools.scaladoc.Main$.main(Main.scala:14)
	at dotty.tools.scaladoc.Main.main(Main.scala)

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions