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