@@ -174,6 +174,37 @@ abstract class Rewrites extends SubComponent with TypingTransformers {
174
174
}
175
175
}
176
176
177
+ private class TypeRenderer (rewriteTransformer : RewriteTypingTransformer ) extends TypeMap {
178
+ override def apply (tp : Type ): Type = tp match {
179
+ case SingleType (pre, sym) if tp.prefix.typeSymbol.isOmittablePrefix =>
180
+ adjust(tp, pre, sym, Mode .QUALmode )((pre1, sym1) => SingleType (pre1, sym1))
181
+ case TypeRef (pre, sym, args) =>
182
+ val args1 = args.mapConserve(this )
183
+ adjust(tp, pre, sym, Mode .TAPPmode | Mode .FUNmode )((pre1, sym1) => TypeRef (pre1, sym1, args1))
184
+ case _ =>
185
+ mapOver(tp)
186
+ }
187
+
188
+ def adjust (tp : Type , pre : Type , sym : Symbol , mode : Mode )(f : (Type , Symbol ) => Type ): Type = {
189
+ if (pre.typeSymbol.isOmittablePrefix || global.shorthands.contains(sym.fullName)) {
190
+ val typedTree = rewriteTransformer.silentTyped(Ident (sym.name), mode)
191
+ if (typedTree.symbol == sym || sym.tpeHK =:= typedTree.tpe)
192
+ f(NoPrefix , sym)
193
+ else {
194
+ val dummyOwner = NoSymbol .newClassSymbol(TypeName (pre.typeSymbol.fullName))
195
+ dummyOwner.setInfo(ThisType (dummyOwner))
196
+ val pre1 = pre match {
197
+ case ThisType (_) | SingleType (_, _) => SingleType (NoPrefix , dummyOwner)
198
+ case _ => TypeRef (NoPrefix , dummyOwner, Nil )
199
+ }
200
+ f(pre1, sym.cloneSymbol(NoSymbol ))
201
+ }
202
+ } else {
203
+ mapOver(tp)
204
+ }
205
+ }
206
+ }
207
+
177
208
// Rewrites
178
209
179
210
private object BreakoutTraverser {
@@ -237,34 +268,4 @@ abstract class Rewrites extends SubComponent with TypingTransformers {
237
268
super .transform(tree)
238
269
}
239
270
}
240
- private class TypeRenderer (rewriteTransformer : RewriteTypingTransformer ) extends TypeMap {
241
- override def apply (tp : Type ): Type = tp match {
242
- case SingleType (pre, sym) if tp.prefix.typeSymbol.isOmittablePrefix =>
243
- adjust(tp, pre, sym, Mode .QUALmode )((pre1, sym1) => SingleType (pre1, sym1))
244
- case TypeRef (pre, sym, args) =>
245
- val args1 = args.mapConserve(this )
246
- adjust(tp, pre, sym, Mode .TAPPmode | Mode .FUNmode )((pre1, sym1) => TypeRef (pre1, sym1, args1))
247
- case _ =>
248
- mapOver(tp)
249
- }
250
-
251
- def adjust (tp : Type , pre : Type , sym : Symbol , mode : Mode )(f : (Type , Symbol ) => Type ): Type = {
252
- if (pre.typeSymbol.isOmittablePrefix || global.shorthands.contains(sym.fullName)) {
253
- val typedTree = rewriteTransformer.silentTyped(Ident (sym.name), mode)
254
- if (typedTree.symbol == sym || sym.tpeHK =:= typedTree.tpe)
255
- f(NoPrefix , sym)
256
- else {
257
- val dummyOwner = NoSymbol .newClassSymbol(TypeName (pre.typeSymbol.fullName))
258
- dummyOwner.setInfo(ThisType (dummyOwner))
259
- val pre1 = pre match {
260
- case ThisType (_) | SingleType (_, _) => SingleType (NoPrefix , dummyOwner)
261
- case _ => TypeRef (NoPrefix , dummyOwner, Nil )
262
- }
263
- f(pre1, sym.cloneSymbol(NoSymbol ))
264
- }
265
- } else {
266
- mapOver(tp)
267
- }
268
- }
269
- }
270
271
}
0 commit comments