@@ -12,8 +12,7 @@ trait ExprMap {
1212 import qctx .tasty ._
1313 final class MapChildren () {
1414
15- def transformStatement (tree : Statement )(using ctx : Context ): Statement = {
16- def localCtx (definition : Definition ): Context = definition.symbol.localContext
15+ def transformStatement (tree : Statement )(using Owner ): Statement = {
1716 tree match {
1817 case tree : Term =>
1918 transformTerm(tree, defn.AnyType )
@@ -24,16 +23,17 @@ trait ExprMap {
2423 }
2524 }
2625
27- def transformDefinition (tree : Definition )(using ctx : Context ): Definition = {
28- def localCtx (definition : Definition ): Context = definition.symbol.localContext
26+ def transformDefinition (tree : Definition )(using Owner ): Definition = {
2927 tree match {
3028 case tree : ValDef =>
31- given Context = localCtx(tree)
32- val rhs1 = tree.rhs.map(x => transformTerm(x, tree.tpt.tpe))
33- ValDef .copy(tree)(tree.name, tree.tpt, rhs1)
29+ Owner .withOwner(tree.symbol) {
30+ val rhs1 = tree.rhs.map(x => transformTerm(x, tree.tpt.tpe))
31+ ValDef .copy(tree)(tree.name, tree.tpt, rhs1)
32+ }
3433 case tree : DefDef =>
35- given Context = localCtx(tree)
36- DefDef .copy(tree)(tree.name, tree.typeParams, tree.paramss, tree.returnTpt, tree.rhs.map(x => transformTerm(x, tree.returnTpt.tpe)))
34+ Owner .withOwner(tree.symbol) {
35+ DefDef .copy(tree)(tree.name, tree.typeParams, tree.paramss, tree.returnTpt, tree.rhs.map(x => transformTerm(x, tree.returnTpt.tpe)))
36+ }
3737 case tree : TypeDef =>
3838 tree
3939 case tree : ClassDef =>
@@ -42,7 +42,7 @@ trait ExprMap {
4242 }
4343 }
4444
45- def transformTermChildren (tree : Term , tpe : Type )(using ctx : Context ): Term = tree match {
45+ def transformTermChildren (tree : Term , tpe : Type )(using Owner ): Term = tree match {
4646 case Ident (name) =>
4747 tree
4848 case Select (qualifier, name) =>
@@ -101,7 +101,7 @@ trait ExprMap {
101101 Inlined .copy(tree)(call, transformDefinitions(bindings), transformTerm(expansion, tpe)/* ()call.symbol.localContext)*/ )
102102 }
103103
104- def transformTerm (tree : Term , tpe : Type )(using ctx : Context ): Term =
104+ def transformTerm (tree : Term , tpe : Type )(using Owner ): Term =
105105 tree match
106106 case _ : Closure =>
107107 tree
@@ -115,39 +115,39 @@ trait ExprMap {
115115 case _ =>
116116 transformTermChildren(tree, tpe)
117117
118- def transformTypeTree (tree : TypeTree )(using ctx : Context ): TypeTree = tree
118+ def transformTypeTree (tree : TypeTree )(using Owner ): TypeTree = tree
119119
120- def transformCaseDef (tree : CaseDef , tpe : Type )(using ctx : Context ): CaseDef =
120+ def transformCaseDef (tree : CaseDef , tpe : Type )(using Owner ): CaseDef =
121121 CaseDef .copy(tree)(tree.pattern, tree.guard.map(x => transformTerm(x, defn.BooleanType )), transformTerm(tree.rhs, tpe))
122122
123- def transformTypeCaseDef (tree : TypeCaseDef )(using ctx : Context ): TypeCaseDef = {
123+ def transformTypeCaseDef (tree : TypeCaseDef )(using Owner ): TypeCaseDef = {
124124 TypeCaseDef .copy(tree)(transformTypeTree(tree.pattern), transformTypeTree(tree.rhs))
125125 }
126126
127- def transformStats (trees : List [Statement ])(using ctx : Context ): List [Statement ] =
127+ def transformStats (trees : List [Statement ])(using Owner ): List [Statement ] =
128128 trees mapConserve (transformStatement(_))
129129
130- def transformDefinitions (trees : List [Definition ])(using ctx : Context ): List [Definition ] =
130+ def transformDefinitions (trees : List [Definition ])(using Owner ): List [Definition ] =
131131 trees mapConserve (transformDefinition(_))
132132
133- def transformTerms (trees : List [Term ], tpes : List [Type ])(using ctx : Context ): List [Term ] =
133+ def transformTerms (trees : List [Term ], tpes : List [Type ])(using Owner ): List [Term ] =
134134 var tpes2 = tpes // TODO use proper zipConserve
135135 trees mapConserve { x =>
136136 val tpe :: tail = tpes2
137137 tpes2 = tail
138138 transformTerm(x, tpe)
139139 }
140140
141- def transformTerms (trees : List [Term ], tpe : Type )(using ctx : Context ): List [Term ] =
141+ def transformTerms (trees : List [Term ], tpe : Type )(using Owner ): List [Term ] =
142142 trees.mapConserve(x => transformTerm(x, tpe))
143143
144- def transformTypeTrees (trees : List [TypeTree ])(using ctx : Context ): List [TypeTree ] =
144+ def transformTypeTrees (trees : List [TypeTree ])(using Owner ): List [TypeTree ] =
145145 trees mapConserve (transformTypeTree(_))
146146
147- def transformCaseDefs (trees : List [CaseDef ], tpe : Type )(using ctx : Context ): List [CaseDef ] =
147+ def transformCaseDefs (trees : List [CaseDef ], tpe : Type )(using Owner ): List [CaseDef ] =
148148 trees mapConserve (x => transformCaseDef(x, tpe))
149149
150- def transformTypeCaseDefs (trees : List [TypeCaseDef ])(using ctx : Context ): List [TypeCaseDef ] =
150+ def transformTypeCaseDefs (trees : List [TypeCaseDef ])(using Owner ): List [TypeCaseDef ] =
151151 trees mapConserve (transformTypeCaseDef(_))
152152
153153 }
0 commit comments