From a82ecb60d6ee7ee46e5800088f1769f86872077b Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Mon, 29 Aug 2016 17:13:03 +0100 Subject: Initial support for static methods/fields on interfaces --- .../zwobble/couscous/ast/visitors/NodeTransformer.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'src/main/java/org/zwobble/couscous/ast/visitors') diff --git a/src/main/java/org/zwobble/couscous/ast/visitors/NodeTransformer.java b/src/main/java/org/zwobble/couscous/ast/visitors/NodeTransformer.java index b2255d2..bcc920e 100644 --- a/src/main/java/org/zwobble/couscous/ast/visitors/NodeTransformer.java +++ b/src/main/java/org/zwobble/couscous/ast/visitors/NodeTransformer.java @@ -45,6 +45,7 @@ public class NodeTransformer { private Function transformType = type -> type; private Function transformMethodName = MethodSignature::getName; private Function transformFieldName = name -> name; + private Function transformReceiver = receiver -> receiver; public Builder transformExpression( Function> transformExpression) @@ -77,13 +78,19 @@ public class NodeTransformer { return this; } + public Builder transformReceiver(Function receiver) { + this.transformReceiver = receiver; + return this; + } + public NodeTransformer build() { return new NodeTransformer( transformExpression, transformStatement, transformType, transformMethodName, - transformFieldName + transformFieldName, + transformReceiver ); } } @@ -93,19 +100,22 @@ public class NodeTransformer { private final Function transformType; private final Function transformMethodName; private final Function transformFieldName; + private final Function transformReceiver; private NodeTransformer( Function> transformExpression, Function>> transformStatement, Function transformType, Function transformMethodName, - Function transformFieldName) + Function transformFieldName, + Function transformReceiver) { this.transformExpression = transformExpression; this.transformStatement = transformStatement; this.transformType = transformType; this.transformMethodName = transformMethodName; this.transformFieldName = transformFieldName; + this.transformReceiver = transformReceiver; } public MethodSignature transform(MethodSignature signature) { @@ -142,7 +152,7 @@ public class NodeTransformer { } public Receiver transformReceiver(Receiver receiver) { - return receiver.transformSubtree(this); + return transformReceiver.apply(receiver.transformSubtree(this)); } public VariableDeclaration transform(VariableDeclaration declaration) { -- cgit v1.2.3