Skip to content

Commit 1e6d50d

Browse files
committed
Handle SummonFrom in reflect TreeMap
* Add SummonFrom case * Fix bug with PackageClause case * Complete ClassDef case
1 parent 30de364 commit 1e6d50d

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

library/src/scala/quoted/Quotes.scala

+7-2
Original file line numberDiff line numberDiff line change
@@ -4664,7 +4664,7 @@ trait Quotes { self: runtime.QuoteUnpickler & runtime.QuoteMatching =>
46644664
def transformTree(tree: Tree)(owner: Symbol): Tree = {
46654665
tree match {
46664666
case tree: PackageClause =>
4667-
PackageClause.copy(tree)(transformTerm(tree.pid).asInstanceOf[Ref], transformTrees(tree.stats)(tree.symbol))
4667+
PackageClause.copy(tree)(transformTerm(tree.pid)(owner).asInstanceOf[Ref], transformTrees(tree.stats)(tree.symbol))
46684668
case tree: Import =>
46694669
Import.copy(tree)(transformTerm(tree.expr)(owner), tree.selectors)
46704670
case tree: Export =>
@@ -4712,7 +4712,10 @@ trait Quotes { self: runtime.QuoteUnpickler & runtime.QuoteMatching =>
47124712
val owner = tree.symbol
47134713
TypeDef.copy(tree)(tree.name, transformTree(tree.rhs)(owner))
47144714
case tree: ClassDef =>
4715-
ClassDef.copy(tree)(tree.name, tree.constructor, tree.parents, tree.self, tree.body)
4715+
val constructor @ DefDef(_, _, _, _) = transformStatement(tree.constructor)(tree.symbol)
4716+
val parents = tree.parents.map(transformTree(_)(tree.symbol))
4717+
val body = tree.body.map(transformStatement(_)(tree.symbol))
4718+
ClassDef.copy(tree)(tree.name, constructor, parents, tree.self, body)
47164719
case tree: Import =>
47174720
Import.copy(tree)(transformTerm(tree.expr)(owner), tree.selectors)
47184721
case tree: Export =>
@@ -4764,6 +4767,8 @@ trait Quotes { self: runtime.QuoteUnpickler & runtime.QuoteMatching =>
47644767
Repeated.copy(tree)(transformTerms(elems)(owner), transformTypeTree(elemtpt)(owner))
47654768
case Inlined(call, bindings, expansion) =>
47664769
Inlined.copy(tree)(call, transformSubTrees(bindings)(owner), transformTerm(expansion)(owner))
4770+
case SummonFrom(cases) =>
4771+
SummonFrom.copy(tree)(transformCaseDefs(cases)(owner))
47674772
case _ =>
47684773
throw MatchError(tree.show(using Printer.TreeStructure))
47694774
}

tests/run-custom-args/tasty-inspector/i14789.scala

+2
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,10 @@ import scala.tasty.inspector.*
2323
}
2424
}
2525
}
26+
val mapper = new TreeMap { }
2627
tastys.foreach{ tasty =>
2728
traverser.traverseTree(tasty.ast)(tasty.ast.symbol)
29+
mapper.transformTree(tasty.ast)(tasty.ast.symbol)
2830
}
2931
}
3032
}

0 commit comments

Comments
 (0)