@@ -12,8 +12,7 @@ trait ExprMap {
12
12
import qctx .tasty ._
13
13
final class MapChildren () {
14
14
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 = {
17
16
tree match {
18
17
case tree : Term =>
19
18
transformTerm(tree, defn.AnyType )
@@ -24,16 +23,17 @@ trait ExprMap {
24
23
}
25
24
}
26
25
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 = {
29
27
tree match {
30
28
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
+ }
34
33
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
+ }
37
37
case tree : TypeDef =>
38
38
tree
39
39
case tree : ClassDef =>
@@ -42,7 +42,7 @@ trait ExprMap {
42
42
}
43
43
}
44
44
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 {
46
46
case Ident (name) =>
47
47
tree
48
48
case Select (qualifier, name) =>
@@ -101,7 +101,7 @@ trait ExprMap {
101
101
Inlined .copy(tree)(call, transformDefinitions(bindings), transformTerm(expansion, tpe)/* ()call.symbol.localContext)*/ )
102
102
}
103
103
104
- def transformTerm (tree : Term , tpe : Type )(using ctx : Context ): Term =
104
+ def transformTerm (tree : Term , tpe : Type )(using Owner ): Term =
105
105
tree match
106
106
case _ : Closure =>
107
107
tree
@@ -115,39 +115,39 @@ trait ExprMap {
115
115
case _ =>
116
116
transformTermChildren(tree, tpe)
117
117
118
- def transformTypeTree (tree : TypeTree )(using ctx : Context ): TypeTree = tree
118
+ def transformTypeTree (tree : TypeTree )(using Owner ): TypeTree = tree
119
119
120
- def transformCaseDef (tree : CaseDef , tpe : Type )(using ctx : Context ): CaseDef =
120
+ def transformCaseDef (tree : CaseDef , tpe : Type )(using Owner ): CaseDef =
121
121
CaseDef .copy(tree)(tree.pattern, tree.guard.map(x => transformTerm(x, defn.BooleanType )), transformTerm(tree.rhs, tpe))
122
122
123
- def transformTypeCaseDef (tree : TypeCaseDef )(using ctx : Context ): TypeCaseDef = {
123
+ def transformTypeCaseDef (tree : TypeCaseDef )(using Owner ): TypeCaseDef = {
124
124
TypeCaseDef .copy(tree)(transformTypeTree(tree.pattern), transformTypeTree(tree.rhs))
125
125
}
126
126
127
- def transformStats (trees : List [Statement ])(using ctx : Context ): List [Statement ] =
127
+ def transformStats (trees : List [Statement ])(using Owner ): List [Statement ] =
128
128
trees mapConserve (transformStatement(_))
129
129
130
- def transformDefinitions (trees : List [Definition ])(using ctx : Context ): List [Definition ] =
130
+ def transformDefinitions (trees : List [Definition ])(using Owner ): List [Definition ] =
131
131
trees mapConserve (transformDefinition(_))
132
132
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 ] =
134
134
var tpes2 = tpes // TODO use proper zipConserve
135
135
trees mapConserve { x =>
136
136
val tpe :: tail = tpes2
137
137
tpes2 = tail
138
138
transformTerm(x, tpe)
139
139
}
140
140
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 ] =
142
142
trees.mapConserve(x => transformTerm(x, tpe))
143
143
144
- def transformTypeTrees (trees : List [TypeTree ])(using ctx : Context ): List [TypeTree ] =
144
+ def transformTypeTrees (trees : List [TypeTree ])(using Owner ): List [TypeTree ] =
145
145
trees mapConserve (transformTypeTree(_))
146
146
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 ] =
148
148
trees mapConserve (x => transformCaseDef(x, tpe))
149
149
150
- def transformTypeCaseDefs (trees : List [TypeCaseDef ])(using ctx : Context ): List [TypeCaseDef ] =
150
+ def transformTypeCaseDefs (trees : List [TypeCaseDef ])(using Owner ): List [TypeCaseDef ] =
151
151
trees mapConserve (transformTypeCaseDef(_))
152
152
153
153
}
0 commit comments