aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/backends/csharp
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-03-21 08:13:45 +0000
committerMichael Williamson <mike@zwobble.org>2016-03-21 08:13:45 +0000
commitfe113241971cfe87b163a9eb4dc51e9d5e32410e (patch)
treef9e435c44020ffbbb9231df79719a4d407ea8000 /src/main/java/org/zwobble/couscous/backends/csharp
parent22f5765125eea28ae158bab4d9e96ae6472b73d4 (diff)
Move standard type definitions into a Types class
Diffstat (limited to 'src/main/java/org/zwobble/couscous/backends/csharp')
-rw-r--r--src/main/java/org/zwobble/couscous/backends/csharp/CsharpCodeGenerator.java13
-rw-r--r--src/main/java/org/zwobble/couscous/backends/csharp/CsharpPrimitiveMethods.java23
-rw-r--r--src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java3
3 files changed, 17 insertions, 22 deletions
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 dbfb00f..1b64293 100644
--- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpCodeGenerator.java
+++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpCodeGenerator.java
@@ -5,7 +5,6 @@ import org.zwobble.couscous.ast.*;
import org.zwobble.couscous.ast.visitors.NodeTransformer;
import org.zwobble.couscous.backends.Names;
import org.zwobble.couscous.types.*;
-import org.zwobble.couscous.values.*;
import java.util.Map;
import java.util.Optional;
@@ -16,11 +15,11 @@ import static org.zwobble.couscous.util.ExtraLists.eagerMap;
public class CsharpCodeGenerator {
private final static Map<ScalarType, ScalarType> PRIMITIVES = ImmutableMap.<ScalarType, ScalarType>builder()
- .put(IntegerValue.REF, ScalarType.of("int"))
- .put(StringValue.REF, ScalarType.of("string"))
- .put(BooleanValue.REF, ScalarType.of("bool"))
- .put(ObjectValues.CLASS, ScalarType.of("System.Type"))
- .put(UnitValue.REF, ScalarType.of("void"))
+ .put(Types.INT, ScalarType.of("int"))
+ .put(Types.STRING, ScalarType.of("string"))
+ .put(Types.BOOLEAN, ScalarType.of("bool"))
+ .put(Types.CLASS, ScalarType.of("System.Type"))
+ .put(Types.VOID, ScalarType.of("void"))
.build();
private final String namespace;
@@ -61,7 +60,7 @@ public class CsharpCodeGenerator {
@Override
public Type visit(ParameterizedType type) {
- if (type.getRawType().equals(ObjectValues.CLASS)) {
+ if (type.getRawType().equals(Types.CLASS)) {
return ScalarType.of("System.Type");
} else {
return new ParameterizedType(
diff --git a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpPrimitiveMethods.java b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpPrimitiveMethods.java
index cb5b027..96f8c00 100644
--- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpPrimitiveMethods.java
+++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpPrimitiveMethods.java
@@ -3,10 +3,7 @@ package org.zwobble.couscous.backends.csharp;
import com.google.common.collect.ImmutableMap;
import org.zwobble.couscous.ast.ExpressionNode;
import org.zwobble.couscous.types.ScalarType;
-import org.zwobble.couscous.values.BooleanValue;
-import org.zwobble.couscous.values.IntegerValue;
-import org.zwobble.couscous.values.ObjectValues;
-import org.zwobble.couscous.values.StringValue;
+import org.zwobble.couscous.types.Types;
import java.util.List;
import java.util.Map;
@@ -34,7 +31,7 @@ public class CsharpPrimitiveMethods {
receiver,
"ToString",
list(),
- StringValue.REF)));
+ Types.STRING)));
BOXED_INT_METHODS = methods.build();
}
@@ -42,7 +39,7 @@ public class CsharpPrimitiveMethods {
static {
ImmutableMap.Builder<String, PrimitiveMethodGenerator> methods = ImmutableMap.builder();
- methods.put("length", (receiver, arguments) -> fieldAccess(receiver, "Length", IntegerValue.REF));
+ methods.put("length", (receiver, arguments) -> fieldAccess(receiver, "Length", Types.INT));
methods.put("substring", (receiver, arguments) -> {
ExpressionNode startIndex = arguments.get(0);
ExpressionNode endIndex = arguments.get(1);
@@ -52,26 +49,26 @@ public class CsharpPrimitiveMethods {
receiver,
"Substring",
list(startIndex, length),
- StringValue.REF);
+ Types.STRING);
});
methods.put("toLowerCase", (receiver, arguments) -> methodCall(
receiver,
"ToLower",
list(),
- StringValue.REF));
+ Types.STRING));
methods.put("equals", (receiver, arguments) -> methodCall(
receiver,
"Equals",
arguments,
- StringValue.REF));
+ Types.STRING));
STRING_METHODS = methods.build();
}
private static final Map<ScalarType, Map<String, PrimitiveMethodGenerator>> METHODS =
ImmutableMap.<ScalarType, Map<String, PrimitiveMethodGenerator>>builder()
- .put(BooleanValue.REF, BOOLEAN_METHODS)
- .put(StringValue.REF, STRING_METHODS)
- .put(ObjectValues.BOXED_INT, BOXED_INT_METHODS)
+ .put(Types.BOOLEAN, BOOLEAN_METHODS)
+ .put(Types.STRING, STRING_METHODS)
+ .put(Types.BOXED_INT, BOXED_INT_METHODS)
.build();
private static final Map<String, PrimitiveStaticMethodGenerator> STATIC_INT_METHODS =
@@ -87,7 +84,7 @@ public class CsharpPrimitiveMethods {
private static final Map<ScalarType, Map<String, PrimitiveStaticMethodGenerator>> STATIC_METHODS =
ImmutableMap.<ScalarType, Map<String, PrimitiveStaticMethodGenerator>>builder()
- .put(ObjectValues.BOXED_INT, STATIC_INT_METHODS)
+ .put(Types.BOXED_INT, STATIC_INT_METHODS)
.build();
public static Optional<PrimitiveMethodGenerator> getPrimitiveMethod(ScalarType type, String methodName) {
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 090a19a..9b168ef 100644
--- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java
+++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java
@@ -6,7 +6,6 @@ import org.zwobble.couscous.backends.SourceCodeWriter;
import org.zwobble.couscous.types.*;
import org.zwobble.couscous.util.Action;
import org.zwobble.couscous.values.PrimitiveValue;
-import org.zwobble.couscous.values.UnitValue;
import java.util.List;
@@ -181,7 +180,7 @@ public class CsharpSerializer implements NodeVisitor {
public void visit(ReturnNode returnNode) {
writer.writeStatement(() -> {
writer.writeKeyword("return");
- if (!returnNode.getValue().getType().equals(UnitValue.REF)) {
+ if (!returnNode.getValue().getType().equals(Types.VOID)) {
writer.writeSpace();
write(returnNode.getValue());
}