diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-08-29 17:13:03 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-08-29 17:13:03 +0100 |
| commit | a82ecb60d6ee7ee46e5800088f1769f86872077b (patch) | |
| tree | 8b3c5442a1bd047606de63477839755e88dab2f5 /src/main/java/org/zwobble/couscous/ast/visitors | |
| parent | 1babfdf8daa45ffef3d624db6c717f846d295440 (diff) | |
Initial support for static methods/fields on interfaces
Diffstat (limited to 'src/main/java/org/zwobble/couscous/ast/visitors')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/ast/visitors/NodeTransformer.java | 16 |
1 files changed, 13 insertions, 3 deletions
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<Type, Type> transformType = type -> type; private Function<MethodSignature, String> transformMethodName = MethodSignature::getName; private Function<String, String> transformFieldName = name -> name; + private Function<Receiver, Receiver> transformReceiver = receiver -> receiver; public Builder transformExpression( Function<ExpressionNode, Optional<ExpressionNode>> transformExpression) @@ -77,13 +78,19 @@ public class NodeTransformer { return this; } + public Builder transformReceiver(Function<Receiver, Receiver> 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<Type, Type> transformType; private final Function<MethodSignature, String> transformMethodName; private final Function<String, String> transformFieldName; + private final Function<Receiver, Receiver> transformReceiver; private NodeTransformer( Function<ExpressionNode, Optional<ExpressionNode>> transformExpression, Function<StatementNode, Optional<List<StatementNode>>> transformStatement, Function<Type, Type> transformType, Function<MethodSignature, String> transformMethodName, - Function<String, String> transformFieldName) + Function<String, String> transformFieldName, + Function<Receiver, Receiver> 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) { |
