Skip to content

MatchError in Quotes.TreeMap for local class definition with type parameter #19480

Closed
@ghik

Description

@ghik

Compiler version

3.3.1

Minimized code

import scala.quoted.*

object BadMacros {
  inline def whatever: Int = ${whateverImpl}

  def whateverImpl(using Quotes): Expr[Int] = {
    import quotes.reflect.*
    val t = '{class K[T]}.asTerm
    object mapper extends TreeMap
    mapper.transformTree(t)(Symbol.spliceOwner)
    '{42}
  }
}

Output

Upon invocation of whatever, this happens:

Exception occurred while executing macro expansion.
scala.MatchError: TypeBoundsTree(Inferred(), Inferred()) (of class java.lang.String)
	at scala.quoted.Quotes$reflectModule$TreeMap.transformTypeTree(Quotes.scala:4991)
	at scala.quoted.Quotes$reflectModule$TreeMap.transformTypeTree$(Quotes.scala:4846)
	at utest.BadMacros$mapper$2$.transformTypeTree(BadMacros.scala:11)
	at scala.quoted.Quotes$reflectModule$TreeMap.transformTree(Quotes.scala:4858)
	at scala.quoted.Quotes$reflectModule$TreeMap.transformTree$(Quotes.scala:4846)
	at utest.BadMacros$mapper$2$.transformTree(BadMacros.scala:11)
	at scala.quoted.Quotes$reflectModule$TreeMap.transformStatement(Quotes.scala:4897)
	at scala.quoted.Quotes$reflectModule$TreeMap.transformStatement$(Quotes.scala:4846)
	at utest.BadMacros$mapper$2$.transformStatement(BadMacros.scala:11)
	at scala.quoted.Quotes$reflectModule$TreeMap.$anonfun$5(Quotes.scala:4905)
	at scala.collection.immutable.List.map(List.scala:246)
	at scala.quoted.Quotes$reflectModule$TreeMap.transformStatement(Quotes.scala:4905)
	at scala.quoted.Quotes$reflectModule$TreeMap.transformStatement$(Quotes.scala:4846)
	at utest.BadMacros$mapper$2$.transformStatement(BadMacros.scala:11)
	at scala.quoted.Quotes$reflectModule$TreeMap.transformStats$$anonfun$1(Quotes.scala:5003)
	at scala.collection.immutable.List.mapConserve(List.scala:472)
	at scala.quoted.Quotes$reflectModule$TreeMap.transformStats(Quotes.scala:5003)
	at scala.quoted.Quotes$reflectModule$TreeMap.transformStats$(Quotes.scala:4846)
	at utest.BadMacros$mapper$2$.transformStats(BadMacros.scala:11)
	at scala.quoted.Quotes$reflectModule$TreeMap.transformTerm(Quotes.scala:4941)
	at scala.quoted.Quotes$reflectModule$TreeMap.transformTerm$(Quotes.scala:4846)
	at utest.BadMacros$mapper$2$.transformTerm(BadMacros.scala:11)
	at scala.quoted.Quotes$reflectModule$TreeMap.transformTerm(Quotes.scala:4957)
	at scala.quoted.Quotes$reflectModule$TreeMap.transformTerm$(Quotes.scala:4846)
	at utest.BadMacros$mapper$2$.transformTerm(BadMacros.scala:11)
	at scala.quoted.Quotes$reflectModule$TreeMap.transformStatement(Quotes.scala:4882)
	at scala.quoted.Quotes$reflectModule$TreeMap.transformStatement$(Quotes.scala:4846)
	at utest.BadMacros$mapper$2$.transformStatement(BadMacros.scala:11)
	at scala.quoted.Quotes$reflectModule$TreeMap.transformTree(Quotes.scala:4857)
	at scala.quoted.Quotes$reflectModule$TreeMap.transformTree$(Quotes.scala:4846)
	at utest.BadMacros$mapper$2$.transformTree(BadMacros.scala:11)
	at utest.BadMacros$.whateverImpl(BadMacros.scala:12)

Expectation

No error

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions