File tree Expand file tree Collapse file tree 5 files changed +40
-1
lines changed
compiler/src/scala/quoted/runtime/impl/printers Expand file tree Collapse file tree 5 files changed +40
-1
lines changed Original file line number Diff line number Diff line change @@ -530,9 +530,12 @@ object SourceCode {
530530 case Closure (meth, _) =>
531531 printTree(meth)
532532
533- case _:Unapply | _:Alternatives | _:Bind =>
533+ case _:TypedOrTest | _: Unapply | _:Alternatives | _:Bind =>
534534 printPattern(tree)
535535
536+ case tree : CaseDef =>
537+ printCaseDef(tree)
538+
536539 case _ =>
537540 throw new MatchError (tree.show(using Printer .TreeStructure ))
538541
Original file line number Diff line number Diff line change 1+ import scala .quoted .*
2+
3+ inline def myTreeTraverse [T ](inline expr : T ): T = $ { treeTraverseImpl(' expr ) }
4+
5+ def treeTraverseImpl [T : Type ](value : Expr [T ])(using quotes : Quotes ): Expr [T ] = {
6+ import quotes .reflect .*
7+ (new TreeTraverser {}).traverseTree(value.asTerm)(Symbol .spliceOwner)
8+ value
9+ }
Original file line number Diff line number Diff line change 1+ def test () =
2+ myTreeTraverse {
3+ Option .empty[Int ] match
4+ case Some (n) => 1
5+ case None => 5
6+ }
Original file line number Diff line number Diff line change 1+ import scala .quoted .*
2+
3+ inline def myTreeTraverse [T ](inline expr : T ): T = $ { treeTraverseImpl(' expr ) }
4+
5+ def treeTraverseImpl [T : Type ](value : Expr [T ])(using quotes : Quotes ): Expr [T ] = {
6+ import quotes .reflect .*
7+ (new TreeTraverser {
8+ override def traverseTree (tree : Tree )(owner : Symbol ): Unit =
9+ tree.show
10+ tree.show(using Printer .TreeStructure )
11+ super .traverseTree(tree)(owner)
12+ }).traverseTree(value.asTerm)(Symbol .spliceOwner)
13+ value
14+ }
Original file line number Diff line number Diff line change 1+ def test () =
2+ myTreeTraverse {
3+ println(1 : Int )
4+ Option .empty[Int ] match
5+ case Some (n) => 1
6+ case None => 5
7+ }
You can’t perform that action at this time.
0 commit comments