@@ -244,20 +244,18 @@ abstract class AddInterfaces extends InfoTransform { self: Erasure =>
244
244
}
245
245
}
246
246
247
- private def createMemberDef (tree : Tree , isForInterface : Boolean )(create : Tree => Tree ) = {
248
- val isInterfaceTree = tree.isDef && isInterfaceMember(tree.symbol)
249
- if (isInterfaceTree && needsImplMethod(tree.symbol))
250
- create(tree)
251
- else if (isInterfaceTree == isForInterface)
252
- tree
253
- else
254
- EmptyTree
255
- }
256
- private def implMemberDef (tree : Tree ): Tree = createMemberDef(tree, false )(implMethodDef)
257
- private def ifaceMemberDef (tree : Tree ): Tree = createMemberDef(tree, true )(t => DefDef (t.symbol, EmptyTree ))
247
+ private def isInterfaceTree (tree : Tree ) = tree.isDef && isInterfaceMember(tree.symbol)
248
+
249
+ private def deriveMemberForImplClass (tree : Tree ): Tree =
250
+ if (isInterfaceTree(tree)) if (needsImplMethod(tree.symbol)) implMethodDef(tree) else EmptyTree
251
+ else tree
252
+
253
+ private def deriveMemberForInterface (tree : Tree ): Tree =
254
+ if (isInterfaceTree(tree)) if (needsImplMethod(tree.symbol)) DefDef (tree.symbol, EmptyTree ) else tree
255
+ else EmptyTree
258
256
259
257
private def ifaceTemplate (templ : Template ): Template =
260
- treeCopy.Template (templ, templ.parents, noSelfType, templ.body map ifaceMemberDef )
258
+ treeCopy.Template (templ, templ.parents, noSelfType, templ.body map deriveMemberForInterface )
261
259
262
260
/** Transforms the member tree containing the implementation
263
261
* into a member of the impl class.
@@ -288,7 +286,7 @@ abstract class AddInterfaces extends InfoTransform { self: Erasure =>
288
286
289
287
private def implTemplate (clazz : Symbol , templ : Template ): Template = atPos(templ.pos) {
290
288
val templ1 = (
291
- Template (templ.parents, noSelfType, addMixinConstructorDef(clazz, templ.body map implMemberDef ))
289
+ Template (templ.parents, noSelfType, addMixinConstructorDef(clazz, templ.body map deriveMemberForImplClass ))
292
290
setSymbol clazz.newLocalDummy(templ.pos)
293
291
)
294
292
templ1.changeOwner(templ.symbol.owner -> clazz, templ.symbol -> templ1.symbol)
0 commit comments