aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-04-09 15:08:18 +0100
committerMichael Williamson <mike@zwobble.org>2016-04-09 15:08:18 +0100
commita0e8824a6deff07ccfe76be813e508d9266ac23e (patch)
tree17a43585836f24cb368db77be7e37b95dc1c16a3 /src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java
parent2bc236438ce5d5120c9c34f213b4b49b475dcee2 (diff)
C# backend: Support generic method definitions
Diffstat (limited to 'src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java')
-rw-r--r--src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java
index 13c3756..d93f2df 100644
--- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java
+++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java
@@ -364,6 +364,11 @@ public class CsharpSerializer implements NodeVisitor {
}
@Override
+ public void visit(FormalTypeParameterNode parameter) {
+ writer.writeIdentifier(parameter.getName());
+ }
+
+ @Override
public void visit(FormalArgumentNode argument) {
writeTypeReference(argument.getType());
writer.writeSpace();
@@ -387,11 +392,20 @@ public class CsharpSerializer implements NodeVisitor {
writeTypeReference(method.getReturnType());
writer.writeSpace();
writer.writeIdentifier(method.getName());
+ writeFormalTypeParameters(method.getTypeParameters());
writeFormalArguments(method.getArguments());
writeBlock(method.getBody().get());
});
}
+ private void writeFormalTypeParameters(List<FormalTypeParameterNode> typeParameters) {
+ if (!typeParameters.isEmpty()) {
+ writer.writeSymbol("<");
+ writer.writeCommaSeparated(typeParameters, this::write);
+ writer.writeSymbol(">");
+ }
+ }
+
private void writeFormalArguments(List<FormalArgumentNode> arguments) {
writer.writeSymbol("(");
writer.writeCommaSeparated(arguments, this::write);