File tree Expand file tree Collapse file tree 5 files changed +42
-0
lines changed
compiler/src/scala/quoted/runtime/impl/printers Expand file tree Collapse file tree 5 files changed +42
-0
lines changed Original file line number Diff line number Diff line change @@ -533,6 +533,12 @@ object SourceCode {
533
533
case _:Unapply | _:Alternatives | _:Bind =>
534
534
printPattern(tree)
535
535
536
+ case tree : CaseDef =>
537
+ printCaseDef(tree)
538
+
539
+ case _ : TypedOrTest =>
540
+ printPattern(tree)
541
+
536
542
case _ =>
537
543
throw new MatchError (tree.show(using Printer .TreeStructure ))
538
544
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