@@ -4621,6 +4621,8 @@ trait Quotes { self: runtime.QuoteUnpickler & runtime.QuoteMatching =>
46214621 case Bind (_, body) => foldTree(x, body)(owner)
46224622 case Unapply (fun, implicits, patterns) => foldTrees(foldTrees(foldTree(x, fun)(owner), implicits)(owner), patterns)(owner)
46234623 case Alternatives (patterns) => foldTrees(x, patterns)(owner)
4624+ case SummonFrom (cases) => foldTrees(x, cases)(owner)
4625+ case _ => throw MatchError (tree.show(using Printer .TreeStructure ))
46244626 }
46254627 }
46264628 end TreeAccumulator
@@ -4662,7 +4664,7 @@ trait Quotes { self: runtime.QuoteUnpickler & runtime.QuoteMatching =>
46624664 def transformTree (tree : Tree )(owner : Symbol ): Tree = {
46634665 tree match {
46644666 case tree : PackageClause =>
4665- 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))
46664668 case tree : Import =>
46674669 Import .copy(tree)(transformTerm(tree.expr)(owner), tree.selectors)
46684670 case tree : Export =>
@@ -4685,6 +4687,8 @@ trait Quotes { self: runtime.QuoteUnpickler & runtime.QuoteMatching =>
46854687 Alternatives .copy(pattern)(transformTrees(pattern.patterns)(owner))
46864688 case TypedOrTest (inner, tpt) =>
46874689 TypedOrTest .copy(tree)(transformTree(inner)(owner), transformTypeTree(tpt)(owner))
4690+ case _ =>
4691+ throw MatchError (tree.show(using Printer .TreeStructure ))
46884692 }
46894693 }
46904694
@@ -4708,11 +4712,20 @@ trait Quotes { self: runtime.QuoteUnpickler & runtime.QuoteMatching =>
47084712 val owner = tree.symbol
47094713 TypeDef .copy(tree)(tree.name, transformTree(tree.rhs)(owner))
47104714 case tree : ClassDef =>
4711- 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 self = tree.self.map { slf =>
4718+ transformStatement(slf)(tree.symbol) match
4719+ case self : ValDef => self
4720+ }
4721+ val body = tree.body.map(transformStatement(_)(tree.symbol))
4722+ ClassDef .copy(tree)(tree.name, constructor, parents, self, body)
47124723 case tree : Import =>
47134724 Import .copy(tree)(transformTerm(tree.expr)(owner), tree.selectors)
47144725 case tree : Export =>
47154726 tree
4727+ case _ =>
4728+ throw MatchError (tree.show(using Printer .TreeStructure ))
47164729 }
47174730 }
47184731
@@ -4758,6 +4771,10 @@ trait Quotes { self: runtime.QuoteUnpickler & runtime.QuoteMatching =>
47584771 Repeated .copy(tree)(transformTerms(elems)(owner), transformTypeTree(elemtpt)(owner))
47594772 case Inlined (call, bindings, expansion) =>
47604773 Inlined .copy(tree)(call, transformSubTrees(bindings)(owner), transformTerm(expansion)(owner))
4774+ case SummonFrom (cases) =>
4775+ SummonFrom .copy(tree)(transformCaseDefs(cases)(owner))
4776+ case _ =>
4777+ throw MatchError (tree.show(using Printer .TreeStructure ))
47614778 }
47624779 }
47634780
@@ -4786,6 +4803,8 @@ trait Quotes { self: runtime.QuoteUnpickler & runtime.QuoteMatching =>
47864803 TypeBind .copy(tree)(tree.name, tree.body)
47874804 case tree : TypeBlock =>
47884805 TypeBlock .copy(tree)(tree.aliases, tree.tpt)
4806+ case _ =>
4807+ throw MatchError (tree.show(using Printer .TreeStructure ))
47894808 }
47904809
47914810 def transformCaseDef (tree : CaseDef )(owner : Symbol ): CaseDef = {
0 commit comments