Skip to content

RefinedPrinter crashes on a symbol with a term symbol as privateWithin #17351

Closed
@KacperFKorban

Description

@KacperFKorban

Compiler version

3.2.2, 3.3.0-RC4. main

Minimized code

main.scala

//> using scala "3.2.2"
//> using options "-Xprint:inlining"

val foo = gen

macro.scala

import scala.quoted.*

inline def gen: Unit = ${ genImpl }

def genImpl(using Quotes): Expr[Unit] = {
  import quotes.reflect.*

  val valDefSymbol = Symbol.newVal(Symbol.spliceOwner, "bar", TypeRepr.of[Unit], Flags.EmptyFlags, Symbol.spliceOwner)

  val valDef = ValDef(valDefSymbol, Some('{ () }.asTerm))

  Block(
    List(valDef),
    '{ () }.asTerm
  ).asExprOf[Unit]
}

Output (click arrow to expand)

Exception in thread "main" java.lang.AssertionError: assertion failed: isType called on not-a-Type val foo
	at scala.runtime.Scala3RunTime$.assertFailed(Scala3RunTime.scala:8)
	at dotty.tools.dotc.core.Symbols$Symbol.asType(Symbols.scala:173)
	at dotty.tools.dotc.printing.RefinedPrinter.Modifiers(RefinedPrinter.scala:826)
	at dotty.tools.dotc.printing.RefinedPrinter.mods(RefinedPrinter.scala:822)
	at dotty.tools.dotc.printing.RefinedPrinter.valDefToText$$anonfun$1(RefinedPrinter.scala:881)
	at dotty.tools.dotc.printing.RefinedPrinter.dclTextOr(RefinedPrinter.scala:864)
	at dotty.tools.dotc.printing.RefinedPrinter.valDefToText(RefinedPrinter.scala:884)
	at dotty.tools.dotc.printing.RefinedPrinter.toTextCore(RefinedPrinter.scala:584)
	at dotty.tools.dotc.printing.RefinedPrinter.toText$$anonfun$2(RefinedPrinter.scala:747)
	at dotty.tools.dotc.printing.MessageLimiter.controlled(MessageLimiter.scala:23)
	at dotty.tools.dotc.printing.PlainPrinter.controlled(PlainPrinter.scala:39)
	at dotty.tools.dotc.printing.RefinedPrinter.toText(RefinedPrinter.scala:818)
	at dotty.tools.dotc.ast.Trees$Tree.toText(Trees.scala:187)
	at dotty.tools.dotc.printing.Printer.toText$$anonfun$1(Printer.scala:178)
	at scala.collection.immutable.List.map(List.scala:246)
	at scala.collection.immutable.List.map(List.scala:79)
	at dotty.tools.dotc.printing.Printer.toText(Printer.scala:178)
	at dotty.tools.dotc.printing.RefinedPrinter.blockText(RefinedPrinter.scala:315)
	at dotty.tools.dotc.printing.RefinedPrinter.blockToText(RefinedPrinter.scala:311)
	at dotty.tools.dotc.printing.RefinedPrinter.toTextCore(RefinedPrinter.scala:480)
	at dotty.tools.dotc.printing.RefinedPrinter.toText$$anonfun$2(RefinedPrinter.scala:747)
	at dotty.tools.dotc.printing.MessageLimiter.controlled(MessageLimiter.scala:23)
	at dotty.tools.dotc.printing.PlainPrinter.controlled(PlainPrinter.scala:39)
	at dotty.tools.dotc.printing.RefinedPrinter.toText(RefinedPrinter.scala:818)
	at dotty.tools.dotc.printing.RefinedPrinter.toTextCore$$anonfun$5(RefinedPrinter.scala:470)
	at dotty.tools.dotc.printing.Printer.atPrec(Printer.scala:43)
	at dotty.tools.dotc.printing.Printer.changePrec(Printer.scala:71)
	at dotty.tools.dotc.printing.RefinedPrinter.toTextCore(RefinedPrinter.scala:474)
	at dotty.tools.dotc.printing.RefinedPrinter.toText$$anonfun$2(RefinedPrinter.scala:747)
	at dotty.tools.dotc.printing.MessageLimiter.controlled(MessageLimiter.scala:23)
	at dotty.tools.dotc.printing.PlainPrinter.controlled(PlainPrinter.scala:39)
	at dotty.tools.dotc.printing.RefinedPrinter.toText(RefinedPrinter.scala:818)
	at dotty.tools.dotc.printing.RefinedPrinter.toTextCore(RefinedPrinter.scala:525)
	at dotty.tools.dotc.printing.RefinedPrinter.toText$$anonfun$2(RefinedPrinter.scala:747)
	at dotty.tools.dotc.printing.MessageLimiter.controlled(MessageLimiter.scala:23)
	at dotty.tools.dotc.printing.PlainPrinter.controlled(PlainPrinter.scala:39)
	at dotty.tools.dotc.printing.RefinedPrinter.toText(RefinedPrinter.scala:818)
	at dotty.tools.dotc.printing.RefinedPrinter.optText(RefinedPrinter.scala:1050)
	at dotty.tools.dotc.printing.RefinedPrinter.valDefToText$$anonfun$1$$anonfun$1(RefinedPrinter.scala:883)
	at dotty.tools.dotc.printing.RefinedPrinter.withEnclosingDef(RefinedPrinter.scala:50)
	at dotty.tools.dotc.printing.RefinedPrinter.valDefToText$$anonfun$1(RefinedPrinter.scala:883)
	at dotty.tools.dotc.printing.RefinedPrinter.dclTextOr(RefinedPrinter.scala:864)
	at dotty.tools.dotc.printing.RefinedPrinter.valDefToText(RefinedPrinter.scala:884)
	at dotty.tools.dotc.printing.RefinedPrinter.toTextCore(RefinedPrinter.scala:584)
	at dotty.tools.dotc.printing.RefinedPrinter.toText$$anonfun$2(RefinedPrinter.scala:747)
	at dotty.tools.dotc.printing.MessageLimiter.controlled(MessageLimiter.scala:23)
	at dotty.tools.dotc.printing.PlainPrinter.controlled(PlainPrinter.scala:39)
	at dotty.tools.dotc.printing.RefinedPrinter.toText(RefinedPrinter.scala:818)
	at dotty.tools.dotc.ast.Trees$Tree.toText(Trees.scala:187)
	at dotty.tools.dotc.printing.Printer.toText$$anonfun$1(Printer.scala:178)
	at scala.collection.immutable.List.map(List.scala:250)
	at scala.collection.immutable.List.map(List.scala:79)
	at dotty.tools.dotc.printing.Printer.toText(Printer.scala:178)
	at dotty.tools.dotc.printing.Printer.toTextGlobal$$anonfun$2(Printer.scala:186)
	at dotty.tools.dotc.printing.Printer.atPrec(Printer.scala:43)
	at dotty.tools.dotc.printing.Printer.toTextGlobal(Printer.scala:186)
	at dotty.tools.dotc.printing.RefinedPrinter.toTextTemplate(RefinedPrinter.scala:978)
	at dotty.tools.dotc.printing.RefinedPrinter.templateText$$anonfun$1(RefinedPrinter.scala:989)
	at dotty.tools.dotc.printing.RefinedPrinter.withEnclosingDef(RefinedPrinter.scala:50)
	at dotty.tools.dotc.printing.RefinedPrinter.templateText(RefinedPrinter.scala:989)
	at dotty.tools.dotc.printing.RefinedPrinter.recur$1(RefinedPrinter.scala:596)
	at dotty.tools.dotc.printing.RefinedPrinter.toTextCore(RefinedPrinter.scala:606)
	at dotty.tools.dotc.printing.RefinedPrinter.toText$$anonfun$2(RefinedPrinter.scala:747)
	at dotty.tools.dotc.printing.MessageLimiter.controlled(MessageLimiter.scala:23)
	at dotty.tools.dotc.printing.PlainPrinter.controlled(PlainPrinter.scala:39)
	at dotty.tools.dotc.printing.RefinedPrinter.toText(RefinedPrinter.scala:818)
	at dotty.tools.dotc.ast.Trees$Tree.toText(Trees.scala:187)
	at dotty.tools.dotc.printing.Printer.toText$$anonfun$1(Printer.scala:178)
	at scala.collection.immutable.List.map(List.scala:250)
	at scala.collection.immutable.List.map(List.scala:79)
	at dotty.tools.dotc.printing.Printer.toText(Printer.scala:178)
	at dotty.tools.dotc.printing.Printer.toTextGlobal$$anonfun$2(Printer.scala:186)
	at dotty.tools.dotc.printing.Printer.atPrec(Printer.scala:43)
	at dotty.tools.dotc.printing.Printer.toTextGlobal(Printer.scala:186)
	at dotty.tools.dotc.printing.RefinedPrinter.packageDefText(RefinedPrinter.scala:1001)
	at dotty.tools.dotc.printing.RefinedPrinter.toTextCore(RefinedPrinter.scala:616)
	at dotty.tools.dotc.printing.RefinedPrinter.toText$$anonfun$2(RefinedPrinter.scala:747)
	at dotty.tools.dotc.printing.MessageLimiter.controlled(MessageLimiter.scala:23)
	at dotty.tools.dotc.printing.PlainPrinter.controlled(PlainPrinter.scala:39)
	at dotty.tools.dotc.printing.RefinedPrinter.toText(RefinedPrinter.scala:818)
	at dotty.tools.dotc.ast.Trees$Tree.toText(Trees.scala:187)
	at dotty.tools.dotc.printing.Showable.show(Showable.scala:23)
	at dotty.tools.dotc.printing.Showable.show$(Showable.scala:9)
	at dotty.tools.dotc.ast.Trees$Tree.show(Trees.scala:49)
	at dotty.tools.dotc.core.Phases$Phase.show(Phases.scala:333)
	at dotty.tools.dotc.Run.printTree(Run.scala:314)
	at dotty.tools.dotc.Run.runPhases$1$$anonfun$1$$anonfun$1(Run.scala:251)
	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.dotc.Run.runPhases$1$$anonfun$1(Run.scala:251)
	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:1321)
	at dotty.tools.dotc.Run.runPhases$1(Run.scala:262)
	at dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:270)
	at dotty.tools.dotc.Run.compileUnits$$anonfun$adapted$1(Run.scala:279)
	at dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:67)
	at dotty.tools.dotc.Run.compileUnits(Run.scala:279)
	at dotty.tools.dotc.Run.compileUnits(Run.scala:200)
	at dotty.tools.dotc.Driver.finish(Driver.scala:58)
	at dotty.tools.dotc.Driver.doCompile(Driver.scala:38)
	at dotty.tools.dotc.Driver.process(Driver.scala:197)
	at dotty.tools.dotc.Driver.process(Driver.scala:165)
	at dotty.tools.dotc.Driver.process(Driver.scala:177)
	at dotty.tools.dotc.Driver.main(Driver.scala:207)
	at dotty.tools.dotc.Main.main(Main.scala)
Compilation failed

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions