From 5bd0856f47e004c50edd450ce45d71848c837230 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 10 Apr 2016 21:48:14 +0100 Subject: Prepend underscore to C# field names --- .../java/org/zwobble/couscous/ast/FieldAccessNode.java | 2 +- .../org/zwobble/couscous/ast/FieldDeclarationNode.java | 2 +- .../zwobble/couscous/ast/visitors/NodeTransformer.java | 17 +++++++++++++++-- .../couscous/backends/csharp/CsharpCodeGenerator.java | 1 + 4 files changed, 18 insertions(+), 4 deletions(-) (limited to 'src/main/java/org') diff --git a/src/main/java/org/zwobble/couscous/ast/FieldAccessNode.java b/src/main/java/org/zwobble/couscous/ast/FieldAccessNode.java index 23e3aaa..b28d823 100644 --- a/src/main/java/org/zwobble/couscous/ast/FieldAccessNode.java +++ b/src/main/java/org/zwobble/couscous/ast/FieldAccessNode.java @@ -69,7 +69,7 @@ public class FieldAccessNode implements AssignableExpressionNode { public ExpressionNode transform(NodeTransformer transformer) { return new FieldAccessNode( transformer.transformReceiver(left), - fieldName, + transformer.transformFieldName(fieldName), transformer.transform(type)); } diff --git a/src/main/java/org/zwobble/couscous/ast/FieldDeclarationNode.java b/src/main/java/org/zwobble/couscous/ast/FieldDeclarationNode.java index 515045f..67f79c9 100644 --- a/src/main/java/org/zwobble/couscous/ast/FieldDeclarationNode.java +++ b/src/main/java/org/zwobble/couscous/ast/FieldDeclarationNode.java @@ -47,7 +47,7 @@ public class FieldDeclarationNode implements Node { public FieldDeclarationNode transform(NodeTransformer transformer) { return new FieldDeclarationNode( isStatic, - name, + transformer.transformFieldName(name), transformer.transform(type)); } 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 73d0919..f52bedc 100644 --- a/src/main/java/org/zwobble/couscous/ast/visitors/NodeTransformer.java +++ b/src/main/java/org/zwobble/couscous/ast/visitors/NodeTransformer.java @@ -176,6 +176,7 @@ public class NodeTransformer { private Function> transformExpression = expression -> Optional.empty(); private Function transformType = type -> type; private Function transformMethodName = MethodSignature::getName; + private Function transformFieldName = name -> name; public Builder transformExpression( Function> transformExpression) @@ -196,23 +197,31 @@ public class NodeTransformer { return this; } + public Builder transformFieldName(Function transformFieldName) { + this.transformFieldName = transformFieldName; + return this; + } + public NodeTransformer build() { - return new NodeTransformer(transformExpression, transformType, transformMethodName); + return new NodeTransformer(transformExpression, transformType, transformMethodName, transformFieldName); } } private final Function> transformExpression; private final Function transformType; private final Function transformMethodName; + private final Function transformFieldName; private NodeTransformer( Function> transformExpression, Function transformType, - Function transformMethodName) + Function transformMethodName, + Function transformFieldName) { this.transformExpression = transformExpression; this.transformType = transformType; this.transformMethodName = transformMethodName; + this.transformFieldName = transformFieldName; } public MethodSignature transform(MethodSignature signature) { @@ -239,6 +248,10 @@ public class NodeTransformer { return transformMethodName.apply(signature); } + public String transformFieldName(String name) { + return transformFieldName.apply(name); + } + public ExpressionNode transformExpression(ExpressionNode expression) { return transformExpression.apply(expression) .orElseGet(() -> expression.transform(this)); diff --git a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpCodeGenerator.java b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpCodeGenerator.java index 00de205..cc6daef 100644 --- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpCodeGenerator.java +++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpCodeGenerator.java @@ -40,6 +40,7 @@ public class CsharpCodeGenerator { .transformType(this::transformType) .transformExpression(this::transformExpression) .transformMethodName(naming::methodName) + .transformFieldName(name -> "_" + name) .build(); } -- cgit v1.2.3