diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-04-09 15:08:18 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-04-09 15:08:18 +0100 |
| commit | a0e8824a6deff07ccfe76be813e508d9266ac23e (patch) | |
| tree | 17a43585836f24cb368db77be7e37b95dc1c16a3 /src/main/java/org/zwobble/couscous/backends/csharp | |
| parent | 2bc236438ce5d5120c9c34f213b4b49b475dcee2 (diff) | |
C# backend: Support generic method definitions
Diffstat (limited to 'src/main/java/org/zwobble/couscous/backends/csharp')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java | 14 |
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); |
