Skip to content

NoSuchElementException when printing call-by-name types #10344

Closed
@Atry

Description

@Atry
object ByName {
  val byNameContainer = {
    def unwrap[ByName0[_]](f: ByName0[Unit] => Unit): { type ByName[A] = ByName0[A] } = {
      new {
        type ByName[A] = ByName0[A]
      }
    }
    val f: (=> Unit) => Unit = { _ =>
      ()
    }
    unwrap(f)
  }
}
$ scala -version
Scala code runner version 2.12.2 -- Copyright 2002-2017, LAMP/EPFL and Lightbend, Inc.
$ scalac -Xprint:typer ByName.scala 
[[syntax trees at end of                     typer]] // ByName.scalaerror: java.util.NoSuchElementException: head of empty list
	at scala.collection.immutable.Nil$.head(List.scala:428)
	at scala.collection.immutable.Nil$.head(List.scala:425)
	at scala.reflect.internal.Types$TypeRef.customToString(Types.scala:2364)
	at scala.reflect.internal.Types$TypeRef.safeToString(Types.scala:2395)
	at scala.reflect.internal.tpe.TypeToStrings.typeToString(TypeToStrings.scala:43)
	at scala.reflect.internal.tpe.TypeToStrings.typeToString$(TypeToStrings.scala:22)
	at scala.reflect.internal.SymbolTable.typeToString(SymbolTable.scala:16)
	at scala.reflect.internal.Types$Type.toString(Types.scala:942)
	at scala.reflect.internal.Printers$TreePrinter.printTree(Printers.scala:476)
	at scala.tools.nsc.ast.Printers$TreePrinter.$anonfun$print$1(Printers.scala:33)
	at scala.tools.nsc.ast.Printers$TreePrinter.$anonfun$print$1$adapted(Printers.scala:17)
	at scala.collection.IndexedSeqOptimized.foreach(IndexedSeqOptimized.scala:32)
	at scala.collection.IndexedSeqOptimized.foreach$(IndexedSeqOptimized.scala:29)
	at scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:38)
	at scala.tools.nsc.ast.Printers$TreePrinter.print(Printers.scala:17)
	at scala.reflect.internal.Printers$TreePrinter.$anonfun$printRow$1(Printers.scala:106)
	at scala.reflect.internal.Printers$TreePrinter.$anonfun$printRow$1$adapted(Printers.scala:106)
	at scala.reflect.internal.Printers$TreePrinter.printSeq(Printers.scala:96)
	at scala.reflect.internal.Printers$TreePrinter.printRow(Printers.scala:106)
	at scala.reflect.internal.Printers$TreePrinter.printTree(Printers.scala:436)
	at scala.tools.nsc.ast.Printers$TreePrinter.$anonfun$print$1(Printers.scala:33)
	at scala.tools.nsc.ast.Printers$TreePrinter.$anonfun$print$1$adapted(Printers.scala:17)
	at scala.collection.IndexedSeqOptimized.foreach(IndexedSeqOptimized.scala:32)
	at scala.collection.IndexedSeqOptimized.foreach$(IndexedSeqOptimized.scala:29)
	at scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:38)
	at scala.tools.nsc.ast.Printers$TreePrinter.print(Printers.scala:17)
	at scala.reflect.internal.Printers$TreePrinter.printTree(Printers.scala:439)
	at scala.tools.nsc.ast.Printers$TreePrinter.$anonfun$print$1(Printers.scala:33)
	at scala.tools.nsc.ast.Printers$TreePrinter.$anonfun$print$1$adapted(Printers.scala:17)
	at scala.collection.IndexedSeqOptimized.foreach(IndexedSeqOptimized.scala:32)
	at scala.collection.IndexedSeqOptimized.foreach$(IndexedSeqOptimized.scala:29)
	at scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:38)
	at scala.tools.nsc.ast.Printers$TreePrinter.print(Printers.scala:17)
	at scala.reflect.internal.Printers$TreePrinter.$anonfun$printColumn$1(Printers.scala:102)
	at scala.reflect.internal.Printers$TreePrinter.$anonfun$printColumn$1$adapted(Printers.scala:102)
	at scala.reflect.internal.Printers$TreePrinter.printSeq(Printers.scala:96)
	at scala.reflect.internal.Printers$TreePrinter.printSeq(Printers.scala:97)
	at scala.reflect.internal.Printers$TreePrinter.printSeq(Printers.scala:97)
	at scala.reflect.internal.Printers$TreePrinter.printColumn(Printers.scala:102)
	at scala.reflect.internal.Printers$TreePrinter.printBlock(Printers.scala:315)
	at scala.reflect.internal.Printers$TreePrinter.printTree(Printers.scala:376)
	at scala.tools.nsc.ast.Printers$TreePrinter.$anonfun$print$1(Printers.scala:33)
	at scala.tools.nsc.ast.Printers$TreePrinter.$anonfun$print$1$adapted(Printers.scala:17)
	at scala.collection.IndexedSeqOptimized.foreach(IndexedSeqOptimized.scala:32)
	at scala.collection.IndexedSeqOptimized.foreach$(IndexedSeqOptimized.scala:29)
	at scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:38)
	at scala.tools.nsc.ast.Printers$TreePrinter.print(Printers.scala:17)
	at scala.reflect.internal.Printers$TreePrinter.$anonfun$printTree$4(Printers.scala:344)
	at scala.reflect.internal.Printers$TreePrinter.printValDef(Printers.scala:220)
	at scala.reflect.internal.Printers$TreePrinter.printTree(Printers.scala:344)
	at scala.tools.nsc.ast.Printers$TreePrinter.$anonfun$print$1(Printers.scala:33)
	at scala.tools.nsc.ast.Printers$TreePrinter.$anonfun$print$1$adapted(Printers.scala:17)
	at scala.collection.IndexedSeqOptimized.foreach(IndexedSeqOptimized.scala:32)
	at scala.collection.IndexedSeqOptimized.foreach$(IndexedSeqOptimized.scala:29)
	at scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:38)
	at scala.tools.nsc.ast.Printers$TreePrinter.print(Printers.scala:17)
	at scala.reflect.internal.Printers$TreePrinter.$anonfun$printColumn$1(Printers.scala:102)
	at scala.reflect.internal.Printers$TreePrinter.$anonfun$printColumn$1$adapted(Printers.scala:102)
	at scala.reflect.internal.Printers$TreePrinter.printSeq(Printers.scala:97)
	at scala.reflect.internal.Printers$TreePrinter.printSeq(Printers.scala:97)
	at scala.reflect.internal.Printers$TreePrinter.printColumn(Printers.scala:102)
	at scala.reflect.internal.Printers$TreePrinter.printTree(Printers.scala:371)
	at scala.tools.nsc.ast.Printers$TreePrinter.$anonfun$print$1(Printers.scala:33)
	at scala.tools.nsc.ast.Printers$TreePrinter.$anonfun$print$1$adapted(Printers.scala:17)
	at scala.collection.IndexedSeqOptimized.foreach(IndexedSeqOptimized.scala:32)
	at scala.collection.IndexedSeqOptimized.foreach$(IndexedSeqOptimized.scala:29)
	at scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:38)
	at scala.tools.nsc.ast.Printers$TreePrinter.print(Printers.scala:17)
	at scala.reflect.internal.Printers$TreePrinter.printTree(Printers.scala:340)
	at scala.tools.nsc.ast.Printers$TreePrinter.$anonfun$print$1(Printers.scala:33)
	at scala.tools.nsc.ast.Printers$TreePrinter.$anonfun$print$1$adapted(Printers.scala:17)
	at scala.collection.IndexedSeqOptimized.foreach(IndexedSeqOptimized.scala:32)
	at scala.collection.IndexedSeqOptimized.foreach$(IndexedSeqOptimized.scala:29)
	at scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:38)
	at scala.tools.nsc.ast.Printers$TreePrinter.print(Printers.scala:17)
	at scala.reflect.internal.Printers$TreePrinter.$anonfun$printColumn$1(Printers.scala:102)
	at scala.reflect.internal.Printers$TreePrinter.$anonfun$printColumn$1$adapted(Printers.scala:102)
	at scala.reflect.internal.Printers$TreePrinter.printSeq(Printers.scala:96)
	at scala.reflect.internal.Printers$TreePrinter.printColumn(Printers.scala:102)
	at scala.reflect.internal.Printers$TreePrinter.printPackageDef(Printers.scala:211)
	at scala.reflect.internal.Printers$TreePrinter.printTree(Printers.scala:335)
	at scala.tools.nsc.ast.Printers$TreePrinter.$anonfun$print$1(Printers.scala:33)
	at scala.tools.nsc.ast.Printers$TreePrinter.$anonfun$print$1$adapted(Printers.scala:17)
	at scala.collection.IndexedSeqOptimized.foreach(IndexedSeqOptimized.scala:32)
	at scala.collection.IndexedSeqOptimized.foreach$(IndexedSeqOptimized.scala:29)
	at scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:38)
	at scala.tools.nsc.ast.Printers$TreePrinter.print(Printers.scala:17)
	at scala.tools.nsc.Global$nodePrinters$.$anonfun$showUnit$1(Global.scala:175)
	at scala.tools.nsc.Global$nodePrinters$.showUnit(Global.scala:175)
	at scala.tools.nsc.Global.$anonfun$printAllUnits$2(Global.scala:1546)
	at scala.tools.nsc.Global.$anonfun$printAllUnits$2$adapted(Global.scala:1545)
	at scala.collection.Iterator.foreach(Iterator.scala:929)
	at scala.collection.Iterator.foreach$(Iterator.scala:929)
	at scala.collection.AbstractIterator.foreach(Iterator.scala:1417)
	at scala.tools.nsc.Global.$anonfun$printAllUnits$1(Global.scala:1545)
	at scala.tools.nsc.Global.printAllUnits(Global.scala:1545)
	at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1434)
	at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1412)
	at scala.tools.nsc.Global$Run.compileSources(Global.scala:1407)
	at scala.tools.nsc.Global$Run.compile(Global.scala:1501)
	at scala.tools.nsc.MainClass.doCompile(Main.scala:24)
	at scala.tools.nsc.Driver.process(Driver.scala:55)
	at scala.tools.nsc.Driver.main(Driver.scala:68)
	at scala.tools.nsc.Main.main(Main.scala)
Exception in thread "main" java.util.NoSuchElementException: head of empty list
	at scala.collection.immutable.Nil$.head(List.scala:428)
	at scala.collection.immutable.Nil$.head(List.scala:425)
	at scala.reflect.internal.Types$TypeRef.customToString(Types.scala:2364)
	at scala.reflect.internal.Types$TypeRef.safeToString(Types.scala:2395)
	at scala.reflect.internal.tpe.TypeToStrings.typeToString(TypeToStrings.scala:43)
	at scala.reflect.internal.tpe.TypeToStrings.typeToString$(TypeToStrings.scala:22)
	at scala.reflect.internal.SymbolTable.typeToString(SymbolTable.scala:16)
	at scala.reflect.internal.Types$Type.toString(Types.scala:942)
	at scala.reflect.internal.Printers$TreePrinter.printTree(Printers.scala:476)
	at scala.tools.nsc.ast.Printers$TreePrinter.$anonfun$print$1(Printers.scala:33)
	at scala.tools.nsc.ast.Printers$TreePrinter.$anonfun$print$1$adapted(Printers.scala:17)
	at scala.collection.IndexedSeqOptimized.foreach(IndexedSeqOptimized.scala:32)
	at scala.collection.IndexedSeqOptimized.foreach$(IndexedSeqOptimized.scala:29)
	at scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:38)
	at scala.tools.nsc.ast.Printers$TreePrinter.print(Printers.scala:17)
	at scala.reflect.internal.Printers$TreePrinter.$anonfun$printRow$1(Printers.scala:106)
	at scala.reflect.internal.Printers$TreePrinter.$anonfun$printRow$1$adapted(Printers.scala:106)
	at scala.reflect.internal.Printers$TreePrinter.printSeq(Printers.scala:96)
	at scala.reflect.internal.Printers$TreePrinter.printRow(Printers.scala:106)
	at scala.reflect.internal.Printers$TreePrinter.printTree(Printers.scala:436)
	at scala.tools.nsc.ast.Printers$TreePrinter.$anonfun$print$1(Printers.scala:33)
	at scala.tools.nsc.ast.Printers$TreePrinter.$anonfun$print$1$adapted(Printers.scala:17)
	at scala.collection.IndexedSeqOptimized.foreach(IndexedSeqOptimized.scala:32)
	at scala.collection.IndexedSeqOptimized.foreach$(IndexedSeqOptimized.scala:29)
	at scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:38)
	at scala.tools.nsc.ast.Printers$TreePrinter.print(Printers.scala:17)
	at scala.reflect.internal.Printers$TreePrinter.printTree(Printers.scala:439)
	at scala.tools.nsc.ast.Printers$TreePrinter.$anonfun$print$1(Printers.scala:33)
	at scala.tools.nsc.ast.Printers$TreePrinter.$anonfun$print$1$adapted(Printers.scala:17)
	at scala.collection.IndexedSeqOptimized.foreach(IndexedSeqOptimized.scala:32)
	at scala.collection.IndexedSeqOptimized.foreach$(IndexedSeqOptimized.scala:29)
	at scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:38)
	at scala.tools.nsc.ast.Printers$TreePrinter.print(Printers.scala:17)
	at scala.reflect.internal.Printers$TreePrinter.$anonfun$printColumn$1(Printers.scala:102)
	at scala.reflect.internal.Printers$TreePrinter.$anonfun$printColumn$1$adapted(Printers.scala:102)
	at scala.reflect.internal.Printers$TreePrinter.printSeq(Printers.scala:96)
	at scala.reflect.internal.Printers$TreePrinter.printSeq(Printers.scala:97)
	at scala.reflect.internal.Printers$TreePrinter.printSeq(Printers.scala:97)
	at scala.reflect.internal.Printers$TreePrinter.printColumn(Printers.scala:102)
	at scala.reflect.internal.Printers$TreePrinter.printBlock(Printers.scala:315)
	at scala.reflect.internal.Printers$TreePrinter.printTree(Printers.scala:376)
	at scala.tools.nsc.ast.Printers$TreePrinter.$anonfun$print$1(Printers.scala:33)
	at scala.tools.nsc.ast.Printers$TreePrinter.$anonfun$print$1$adapted(Printers.scala:17)
	at scala.collection.IndexedSeqOptimized.foreach(IndexedSeqOptimized.scala:32)
	at scala.collection.IndexedSeqOptimized.foreach$(IndexedSeqOptimized.scala:29)
	at scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:38)
	at scala.tools.nsc.ast.Printers$TreePrinter.print(Printers.scala:17)
	at scala.reflect.internal.Printers$TreePrinter.$anonfun$printTree$4(Printers.scala:344)
	at scala.reflect.internal.Printers$TreePrinter.printValDef(Printers.scala:220)
	at scala.reflect.internal.Printers$TreePrinter.printTree(Printers.scala:344)
	at scala.tools.nsc.ast.Printers$TreePrinter.$anonfun$print$1(Printers.scala:33)
	at scala.tools.nsc.ast.Printers$TreePrinter.$anonfun$print$1$adapted(Printers.scala:17)
	at scala.collection.IndexedSeqOptimized.foreach(IndexedSeqOptimized.scala:32)
	at scala.collection.IndexedSeqOptimized.foreach$(IndexedSeqOptimized.scala:29)
	at scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:38)
	at scala.tools.nsc.ast.Printers$TreePrinter.print(Printers.scala:17)
	at scala.reflect.internal.Printers$TreePrinter.$anonfun$printColumn$1(Printers.scala:102)
	at scala.reflect.internal.Printers$TreePrinter.$anonfun$printColumn$1$adapted(Printers.scala:102)
	at scala.reflect.internal.Printers$TreePrinter.printSeq(Printers.scala:97)
	at scala.reflect.internal.Printers$TreePrinter.printSeq(Printers.scala:97)
	at scala.reflect.internal.Printers$TreePrinter.printColumn(Printers.scala:102)
	at scala.reflect.internal.Printers$TreePrinter.printTree(Printers.scala:371)
	at scala.tools.nsc.ast.Printers$TreePrinter.$anonfun$print$1(Printers.scala:33)
	at scala.tools.nsc.ast.Printers$TreePrinter.$anonfun$print$1$adapted(Printers.scala:17)
	at scala.collection.IndexedSeqOptimized.foreach(IndexedSeqOptimized.scala:32)
	at scala.collection.IndexedSeqOptimized.foreach$(IndexedSeqOptimized.scala:29)
	at scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:38)
	at scala.tools.nsc.ast.Printers$TreePrinter.print(Printers.scala:17)
	at scala.reflect.internal.Printers$TreePrinter.printTree(Printers.scala:340)
	at scala.tools.nsc.ast.Printers$TreePrinter.$anonfun$print$1(Printers.scala:33)
	at scala.tools.nsc.ast.Printers$TreePrinter.$anonfun$print$1$adapted(Printers.scala:17)
	at scala.collection.IndexedSeqOptimized.foreach(IndexedSeqOptimized.scala:32)
	at scala.collection.IndexedSeqOptimized.foreach$(IndexedSeqOptimized.scala:29)
	at scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:38)
	at scala.tools.nsc.ast.Printers$TreePrinter.print(Printers.scala:17)
	at scala.reflect.internal.Printers$TreePrinter.$anonfun$printColumn$1(Printers.scala:102)
	at scala.reflect.internal.Printers$TreePrinter.$anonfun$printColumn$1$adapted(Printers.scala:102)
	at scala.reflect.internal.Printers$TreePrinter.printSeq(Printers.scala:96)
	at scala.reflect.internal.Printers$TreePrinter.printColumn(Printers.scala:102)
	at scala.reflect.internal.Printers$TreePrinter.printPackageDef(Printers.scala:211)
	at scala.reflect.internal.Printers$TreePrinter.printTree(Printers.scala:335)
	at scala.tools.nsc.ast.Printers$TreePrinter.$anonfun$print$1(Printers.scala:33)
	at scala.tools.nsc.ast.Printers$TreePrinter.$anonfun$print$1$adapted(Printers.scala:17)
	at scala.collection.IndexedSeqOptimized.foreach(IndexedSeqOptimized.scala:32)
	at scala.collection.IndexedSeqOptimized.foreach$(IndexedSeqOptimized.scala:29)
	at scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:38)
	at scala.tools.nsc.ast.Printers$TreePrinter.print(Printers.scala:17)
	at scala.tools.nsc.Global$nodePrinters$.$anonfun$showUnit$1(Global.scala:175)
	at scala.tools.nsc.Global$nodePrinters$.showUnit(Global.scala:175)
	at scala.tools.nsc.Global.$anonfun$printAllUnits$2(Global.scala:1546)
	at scala.tools.nsc.Global.$anonfun$printAllUnits$2$adapted(Global.scala:1545)
	at scala.collection.Iterator.foreach(Iterator.scala:929)
	at scala.collection.Iterator.foreach$(Iterator.scala:929)
	at scala.collection.AbstractIterator.foreach(Iterator.scala:1417)
	at scala.tools.nsc.Global.$anonfun$printAllUnits$1(Global.scala:1545)
	at scala.tools.nsc.Global.printAllUnits(Global.scala:1545)
	at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1434)
	at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1412)
	at scala.tools.nsc.Global$Run.compileSources(Global.scala:1407)
	at scala.tools.nsc.Global$Run.compile(Global.scala:1501)
	at scala.tools.nsc.MainClass.doCompile(Main.scala:24)
	at scala.tools.nsc.Driver.process(Driver.scala:55)
	at scala.tools.nsc.Driver.main(Driver.scala:68)
	at scala.tools.nsc.Main.main(Main.scala)

Related to #10345, #10362

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions