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 {
530
530
case Closure (meth, _) =>
531
531
printTree(meth)
532
532
533
- case _:Unapply | _:Alternatives | _:Bind =>
533
+ case _:TypedOrTest | _: Unapply | _:Alternatives | _:Bind =>
534
534
printPattern(tree)
535
535
536
+ case tree : CaseDef =>
537
+ printCaseDef(tree)
538
+
536
539
case _ =>
537
540
throw new MatchError (tree.show(using Printer .TreeStructure ))
538
541
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