@@ -43,7 +43,7 @@ class TreeTypeMap(
43
43
44
44
def copy (
45
45
typeMap : Type => Type ,
46
- treeMap : tpd. Tree => tpd. Tree ,
46
+ treeMap : Tree => Tree ,
47
47
oldOwners : List [Symbol ],
48
48
newOwners : List [Symbol ],
49
49
substFrom : List [Symbol ],
@@ -85,13 +85,13 @@ class TreeTypeMap(
85
85
updateDecls(prevStats.tail, newStats.tail)
86
86
}
87
87
88
- def transformInlined (tree : tpd. Inlined )(using Context ): tpd. Tree =
88
+ def transformInlined (tree : Inlined )(using Context ): Tree =
89
89
val Inlined (call, bindings, expanded) = tree
90
90
val (tmap1, bindings1) = transformDefs(bindings)
91
91
val expanded1 = tmap1.transform(expanded)
92
92
cpy.Inlined (tree)(call, bindings1, expanded1)
93
93
94
- override def transform (tree : tpd. Tree )(using Context ): tpd. Tree = treeMap(tree) match {
94
+ override def transform (tree : Tree )(using Context ): Tree = treeMap(tree) match {
95
95
case impl @ Template (constr, _, self, _) =>
96
96
val tmap = withMappedSyms(localSyms(impl :: self :: Nil ))
97
97
cpy.Template (impl)(
@@ -103,8 +103,24 @@ class TreeTypeMap(
103
103
).withType(tmap.mapType(impl.tpe))
104
104
case tree1 =>
105
105
tree1.withType(mapType(tree1.tpe)) match {
106
- case id : Ident if tpd.needsSelect(id.tpe) =>
107
- ref(id.tpe.asInstanceOf [TermRef ]).withSpan(id.span)
106
+ case id : Ident =>
107
+ if needsSelect(id.tpe) then
108
+ ref(id.tpe.asInstanceOf [TermRef ]).withSpan(id.span)
109
+ else
110
+ super .transform(id)
111
+ case sel : Select =>
112
+ if needsIdent(sel.tpe) then
113
+ ref(sel.tpe.asInstanceOf [TermRef ]).withSpan(sel.span)
114
+ else
115
+ super .transform(sel)
116
+ case app : Apply =>
117
+ super .transform(app)
118
+ case blk @ Block (stats, expr) =>
119
+ val (tmap1, stats1) = transformDefs(stats)
120
+ val expr1 = tmap1.transform(expr)
121
+ cpy.Block (blk)(stats1, expr1)
122
+ case lit @ Literal (Constant (tpe : Type )) =>
123
+ cpy.Literal (lit)(Constant (mapType(tpe)))
108
124
case ddef @ DefDef (name, paramss, tpt, _) =>
109
125
val (tmap1, paramss1) = transformAllParamss(paramss)
110
126
val res = cpy.DefDef (ddef)(name, paramss1, tmap1.transform(tpt), tmap1.transform(ddef.rhs))
@@ -117,10 +133,6 @@ class TreeTypeMap(
117
133
case tdef @ LambdaTypeTree (tparams, body) =>
118
134
val (tmap1, tparams1) = transformDefs(tparams)
119
135
cpy.LambdaTypeTree (tdef)(tparams1, tmap1.transform(body))
120
- case blk @ Block (stats, expr) =>
121
- val (tmap1, stats1) = transformDefs(stats)
122
- val expr1 = tmap1.transform(expr)
123
- cpy.Block (blk)(stats1, expr1)
124
136
case inlined : Inlined =>
125
137
transformInlined(inlined)
126
138
case cdef @ CaseDef (pat, guard, rhs) =>
@@ -139,18 +151,16 @@ class TreeTypeMap(
139
151
val content1 = transform(content)
140
152
val tpt1 = transform(tpt)
141
153
cpy.Hole (tree)(args = args1, content = content1, tpt = tpt1)
142
- case lit @ Literal (Constant (tpe : Type )) =>
143
- cpy.Literal (lit)(Constant (mapType(tpe)))
144
154
case tree1 =>
145
155
super .transform(tree1)
146
156
}
147
157
}
148
158
149
- override def transformStats (trees : List [tpd. Tree ], exprOwner : Symbol )(using Context ): List [Tree ] =
159
+ override def transformStats (trees : List [Tree ], exprOwner : Symbol )(using Context ): List [Tree ] =
150
160
transformDefs(trees)._2
151
161
152
- def transformDefs [TT <: tpd. Tree ](trees : List [TT ])(using Context ): (TreeTypeMap , List [TT ]) = {
153
- val tmap = withMappedSyms(tpd. localSyms(trees))
162
+ def transformDefs [TT <: Tree ](trees : List [TT ])(using Context ): (TreeTypeMap , List [TT ]) = {
163
+ val tmap = withMappedSyms(localSyms(trees))
154
164
(tmap, tmap.transformSub(trees))
155
165
}
156
166
@@ -165,7 +175,7 @@ class TreeTypeMap(
165
175
case nil =>
166
176
(this , paramss)
167
177
168
- def apply [ThisTree <: tpd. Tree ](tree : ThisTree ): ThisTree = transform(tree).asInstanceOf [ThisTree ]
178
+ def apply [ThisTree <: Tree ](tree : ThisTree ): ThisTree = transform(tree).asInstanceOf [ThisTree ]
169
179
170
180
def apply (annot : Annotation ): Annotation = annot.derivedAnnotation(apply(annot.tree))
171
181
0 commit comments