diff options
Diffstat (limited to 'src/main/java')
3 files changed, 29 insertions, 9 deletions
diff --git a/src/main/java/org/zwobble/couscous/backends/Naming.java b/src/main/java/org/zwobble/couscous/backends/Naming.java new file mode 100644 index 0000000..1681efd --- /dev/null +++ b/src/main/java/org/zwobble/couscous/backends/Naming.java @@ -0,0 +1,11 @@ +package org.zwobble.couscous.backends; + +import org.zwobble.couscous.ast.MethodSignature; + +public interface Naming { + static Naming signaturesContainsSimpleNames() { + return new SignaturesContainFullyQualifiedNames(); + } + + String methodName(MethodSignature signature); +} diff --git a/src/main/java/org/zwobble/couscous/backends/SignaturesContainFullyQualifiedNames.java b/src/main/java/org/zwobble/couscous/backends/SignaturesContainFullyQualifiedNames.java new file mode 100644 index 0000000..f8b9faf --- /dev/null +++ b/src/main/java/org/zwobble/couscous/backends/SignaturesContainFullyQualifiedNames.java @@ -0,0 +1,10 @@ +package org.zwobble.couscous.backends; + +import org.zwobble.couscous.ast.MethodSignature; + +public class SignaturesContainFullyQualifiedNames implements Naming { + @Override + public String methodName(MethodSignature signature) { + return Names.toUniqueName(signature); + } +} 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 1b64293..5f00f85 100644 --- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpCodeGenerator.java +++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpCodeGenerator.java @@ -1,9 +1,12 @@ package org.zwobble.couscous.backends.csharp; import com.google.common.collect.ImmutableMap; -import org.zwobble.couscous.ast.*; +import org.zwobble.couscous.ast.ExpressionNode; +import org.zwobble.couscous.ast.MethodCallNode; +import org.zwobble.couscous.ast.Node; +import org.zwobble.couscous.ast.Receiver; import org.zwobble.couscous.ast.visitors.NodeTransformer; -import org.zwobble.couscous.backends.Names; +import org.zwobble.couscous.backends.Naming; import org.zwobble.couscous.types.*; import java.util.Map; @@ -26,15 +29,15 @@ public class CsharpCodeGenerator { private final NodeTransformer nodeTransformer; public static Node generateCode(Node node, String namespace) { - return new CsharpCodeGenerator(namespace).generateCode(node); + return new CsharpCodeGenerator(Naming.signaturesContainsSimpleNames(), namespace).generateCode(node); } - private CsharpCodeGenerator(String namespace) { + private CsharpCodeGenerator(Naming naming, String namespace) { this.namespace = namespace; nodeTransformer = NodeTransformer.builder() .transformType(this::transformType) .transformExpression(this::transformExpression) - .transformMethodName(this::transformMethodName) + .transformMethodName(naming::methodName) .build(); } @@ -78,10 +81,6 @@ public class CsharpCodeGenerator { }); } - private String transformMethodName(MethodSignature signature) { - return Names.toUniqueName(signature); - } - private Optional<ExpressionNode> transformExpression(ExpressionNode expression) { return tryCast(MethodCallNode.class, expression) .flatMap(this::transformMethodCall); |
