@@ -106,214 +106,4 @@ object Test {
106
106
' { class Foo { type X }; def f (a : Foo { type X = Int }): a.X = ??? },
107
107
108
108
)
109
-
110
- class TreeTraverser {
111
-
112
- def traverse (arg : statements.TopLevelStatement ): Unit = {
113
- import statements ._
114
- arg match {
115
- case arg : terms.Term =>
116
- traverse(arg)
117
- case arg : Definition =>
118
- traverse(arg)
119
- case Package (pkg, body) =>
120
- traverse(pkg)
121
- body.foreach(traverse)
122
- case Import (expr, selectors) =>
123
- traverse(expr)
124
- selectors.foreach(traverse)
125
- case _ =>
126
- }
127
- }
128
-
129
- def traverse (arg : statements.Definition ): Unit = {
130
- import statements ._
131
- arg match {
132
- case ValDef (name, tpt, rhs, mods) =>
133
- traverse(name)
134
- traverse(tpt)
135
- rhs.foreach(traverse)
136
- mods.foreach(traverse)
137
- case DefDef (name, typeParams, paramss, returnTpt, rhs, mods) =>
138
- traverse(name)
139
- typeParams.foreach(traverse)
140
- paramss.foreach(_.foreach(traverse))
141
- traverse(returnTpt)
142
- rhs.foreach(traverse)
143
- mods.foreach(traverse)
144
- case TypeDef (name, rhs, mods) =>
145
- traverse(name)
146
- traverse(rhs)
147
- mods.foreach(traverse)
148
- case ClassDef (name, contraverseuctor, parents, self, body, mods) =>
149
- traverse(name)
150
- traverse(contraverseuctor)
151
- parents.foreach {
152
- case Left (term) => traverse(term)
153
- case Right (typetree) => traverse(typetree)
154
- }
155
- self.foreach(traverse)
156
- body.foreach(traverse)
157
- mods.foreach(traverse)
158
- case _ =>
159
- }
160
- }
161
-
162
- def traverse (arg : terms.Term ): Unit = {
163
- import terms ._
164
- arg match {
165
- case Ident (name) =>
166
- traverse(name)
167
- case Select (qual, name) =>
168
- traverse(qual)
169
- traverse(name)
170
- case Literal (const) =>
171
- traverse(const)
172
- case New (tpt) =>
173
- traverse(tpt)
174
- case NamedArg (name, arg) =>
175
- traverse(name)
176
- traverse(arg)
177
- case Apply (fn, args) =>
178
- traverse(fn)
179
- args.foreach(traverse)
180
- case TypeApply (fn, args) =>
181
- traverse(fn)
182
- args.foreach(traverse)
183
- case Super (qual, mixin) =>
184
- traverse(qual)
185
- mixin.foreach(traverse)
186
- case Typed (expr, tpt) =>
187
- traverse(expr)
188
- traverse(tpt)
189
- case Assign (lhs, rhs) =>
190
- traverse(lhs)
191
- traverse(rhs)
192
- case Block (stats, expr) =>
193
- stats.foreach(traverse)
194
- traverse(expr)
195
- case Lambda (meth, tpt) =>
196
- traverse(meth)
197
- tpt.foreach(traverse)
198
- case If (cond, thenp, elsep) =>
199
- traverse(cond)
200
- traverse(thenp)
201
- traverse(elsep)
202
- case Match (selector, cases) =>
203
- traverse(selector)
204
- cases.foreach(traverse)
205
- case Try (body, catches, finalizer) =>
206
- traverse(body)
207
- catches.foreach(traverse)
208
- finalizer.foreach(traverse)
209
- case Return (expr) =>
210
- traverse(expr)
211
- case Repeated (args) =>
212
- args.foreach(traverse)
213
- case _ =>
214
- }
215
- }
216
-
217
- def traverse (arg : patterns.CaseDef ): Unit = {
218
- import patterns .CaseDef
219
- arg match {
220
- case CaseDef (pat, guard, body) =>
221
- traverse(pat)
222
- guard.foreach(traverse)
223
- traverse(body)
224
- case _ =>
225
- }
226
- }
227
-
228
- def traverse (arg : patterns.Pattern ): Unit = {
229
- import patterns ._
230
- arg match {
231
- case Value (v) =>
232
- traverse(v)
233
- case Bind (name, body) =>
234
- traverse(name)
235
- traverse(body)
236
- case Unapply (fun, implicits, patterns) =>
237
- traverse(fun)
238
- implicits.foreach(traverse)
239
- patterns.foreach(traverse)
240
- case Alternative (patterns) =>
241
- patterns.foreach(traverse)
242
- case TypeTest (tpt) =>
243
- traverse(tpt)
244
- case _ =>
245
- }
246
- }
247
-
248
- def traverse (arg : names.TermName ): Unit = {
249
- import names ._
250
- arg match {
251
- case Simple (name) =>
252
- case _ => ???
253
- }
254
- }
255
-
256
- def traverse (arg : names.PossiblySignedName ): Unit = {
257
- arg match {
258
- case _ => ???
259
- }
260
- }
261
-
262
- def traverse (arg : typetrees.TypeTree ): Unit = {
263
- import typetrees ._
264
- arg match {
265
- case Synthetic () =>
266
- case Ident (name) => traverse(name)
267
- case Select (qual, name) =>
268
- traverse(qual)
269
- traverse(name)
270
- case Singleton (ref) => traverse(ref)
271
- // case Refined(tpt, refinements) =>
272
- // traverse(ref)
273
- // refinements.foreach(traverse)
274
- case Applied (tycon, args) =>
275
- traverse(tycon)
276
- args.foreach(traverse)
277
- case TypeBounds (lo, hi) =>
278
- traverse(lo)
279
- traverse(hi)
280
- case Annotated (arg, annot) =>
281
- traverse(arg)
282
- traverse(annot)
283
- case And (left, right) =>
284
- traverse(left)
285
- traverse(right)
286
- case Or (left, right) =>
287
- traverse(left)
288
- traverse(right)
289
- case ByName (tpt) =>
290
- traverse(tpt)
291
- case _ =>
292
- }
293
- }
294
-
295
- def traverse (arg : names.TypeName ): Unit = arg match {
296
- case _ => arg.toString // TODO
297
- case _ =>
298
- }
299
-
300
- def traverse (arg : scala.tasty.Id ): Unit = ()
301
-
302
- def traverse (arg : Modifier ): Unit = ()
303
-
304
- def traverse (arg : statements.Import .ImportSelector ): Unit = {
305
- import statements .Import .ImportSelector ._
306
- arg match {
307
- case Simple (id) =>
308
- traverse(id)
309
- case Rename (id1, id2) =>
310
- traverse(id1)
311
- traverse(id2)
312
- case Omit (id) =>
313
- traverse(id)
314
- }
315
- }
316
-
317
- def traverse (arg : Constant ): Unit = ()
318
- }
319
109
}
0 commit comments