aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble
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
parent22f5765125eea28ae158bab4d9e96ae6472b73d4 (diff)
Move standard type definitions into a Types class
Diffstat (limited to 'src/main/java/org/zwobble')
-rw-r--r--src/main/java/org/zwobble/couscous/ast/ClassNodeBuilder.java4
-rw-r--r--src/main/java/org/zwobble/couscous/ast/MethodNode.java4
-rw-r--r--src/main/java/org/zwobble/couscous/ast/Operations.java18
-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
-rw-r--r--src/main/java/org/zwobble/couscous/backends/python/PythonCodeGenerator.java7
-rw-r--r--src/main/java/org/zwobble/couscous/backends/python/PythonPrimitiveMethods.java11
-rw-r--r--src/main/java/org/zwobble/couscous/backends/python/PythonSerializer.java1
-rw-r--r--src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionReader.java27
-rw-r--r--src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java4
-rw-r--r--src/main/java/org/zwobble/couscous/frontends/java/JavaStatementReader.java13
-rw-r--r--src/main/java/org/zwobble/couscous/frontends/java/JavaTypes.java6
-rw-r--r--src/main/java/org/zwobble/couscous/interpreter/Evaluator.java19
-rw-r--r--src/main/java/org/zwobble/couscous/interpreter/InterpreterTypes.java4
-rw-r--r--src/main/java/org/zwobble/couscous/interpreter/values/BooleanInterpreterValue.java8
-rw-r--r--src/main/java/org/zwobble/couscous/interpreter/values/BoxedIntegerInterpreterValue.java17
-rw-r--r--src/main/java/org/zwobble/couscous/interpreter/values/IntegerInterpreterValue.java27
-rw-r--r--src/main/java/org/zwobble/couscous/interpreter/values/InternalCouscousInterpreterValue.java5
-rw-r--r--src/main/java/org/zwobble/couscous/interpreter/values/StringInterpreterValue.java13
-rw-r--r--src/main/java/org/zwobble/couscous/interpreter/values/TypeInterpreterValue.java4
-rw-r--r--src/main/java/org/zwobble/couscous/types/Types.java13
-rw-r--r--src/main/java/org/zwobble/couscous/values/BooleanValue.java5
-rw-r--r--src/main/java/org/zwobble/couscous/values/IntegerValue.java4
-rw-r--r--src/main/java/org/zwobble/couscous/values/ObjectValues.java11
-rw-r--r--src/main/java/org/zwobble/couscous/values/StringValue.java6
-rw-r--r--src/main/java/org/zwobble/couscous/values/TypeValue.java3
-rw-r--r--src/main/java/org/zwobble/couscous/values/UnitValue.java5
28 files changed, 129 insertions, 149 deletions
diff --git a/src/main/java/org/zwobble/couscous/ast/ClassNodeBuilder.java b/src/main/java/org/zwobble/couscous/ast/ClassNodeBuilder.java
index 1fe8fcb..734a6a2 100644
--- a/src/main/java/org/zwobble/couscous/ast/ClassNodeBuilder.java
+++ b/src/main/java/org/zwobble/couscous/ast/ClassNodeBuilder.java
@@ -5,7 +5,7 @@ import com.google.common.collect.ImmutableSet;
import org.zwobble.couscous.ast.identifiers.Identifier;
import org.zwobble.couscous.types.ScalarType;
import org.zwobble.couscous.types.Type;
-import org.zwobble.couscous.values.UnitValue;
+import org.zwobble.couscous.types.Types;
import java.util.List;
import java.util.Optional;
@@ -134,7 +134,7 @@ public class ClassNodeBuilder {
private final Function<MethodBuilder<?>, T> build;
private final ImmutableList.Builder<AnnotationNode> annotations;
private final ImmutableList.Builder<FormalArgumentNode> arguments;
- private ScalarType returnType = UnitValue.REF;
+ private ScalarType returnType = Types.VOID;
private final ImmutableList.Builder<StatementNode> statements;
public MethodBuilder(Function<MethodBuilder<?>, T> build) {
diff --git a/src/main/java/org/zwobble/couscous/ast/MethodNode.java b/src/main/java/org/zwobble/couscous/ast/MethodNode.java
index b8f2601..024541f 100644
--- a/src/main/java/org/zwobble/couscous/ast/MethodNode.java
+++ b/src/main/java/org/zwobble/couscous/ast/MethodNode.java
@@ -4,7 +4,7 @@ import com.google.common.collect.ImmutableList;
import org.zwobble.couscous.types.Type;
import org.zwobble.couscous.ast.visitors.NodeMapper;
import org.zwobble.couscous.ast.visitors.NodeTransformer;
-import org.zwobble.couscous.values.UnitValue;
+import org.zwobble.couscous.types.Types;
import java.util.List;
import java.util.Optional;
@@ -28,7 +28,7 @@ public class MethodNode implements Node {
private final String name;
private final ImmutableList.Builder<FormalArgumentNode> arguments =
ImmutableList.builder();
- private Type returnType = UnitValue.REF;
+ private Type returnType = Types.VOID;
private final ImmutableList.Builder<StatementNode> body =
ImmutableList.builder();
diff --git a/src/main/java/org/zwobble/couscous/ast/Operations.java b/src/main/java/org/zwobble/couscous/ast/Operations.java
index 0ae4923..04de1de 100644
--- a/src/main/java/org/zwobble/couscous/ast/Operations.java
+++ b/src/main/java/org/zwobble/couscous/ast/Operations.java
@@ -1,9 +1,7 @@
package org.zwobble.couscous.ast;
-import org.zwobble.couscous.values.BooleanValue;
-import org.zwobble.couscous.values.IntegerValue;
+import org.zwobble.couscous.types.Types;
import org.zwobble.couscous.values.InternalCouscousValue;
-import org.zwobble.couscous.values.ObjectValues;
import static org.zwobble.couscous.ast.MethodCallNode.staticMethodCall;
import static org.zwobble.couscous.ast.TypeCoercionNode.typeCoercion;
@@ -11,14 +9,14 @@ import static org.zwobble.couscous.util.ExtraLists.list;
public class Operations {
public static ExpressionNode same(ExpressionNode left, ExpressionNode right) {
- return staticMethodCall(InternalCouscousValue.REF, "same", list(left, right), BooleanValue.REF);
+ return staticMethodCall(InternalCouscousValue.REF, "same", list(left, right), Types.BOOLEAN);
}
public static ExpressionNode not(ExpressionNode value) {
- if (value.getType().equals(BooleanValue.REF)) {
+ if (value.getType().equals(Types.BOOLEAN)) {
return OperationNode.operation(
Operator.BOOLEAN_NOT, list(value),
- BooleanValue.REF);
+ Types.BOOLEAN);
} else {
throw new IllegalArgumentException("Can only negate booleans");
}
@@ -53,7 +51,7 @@ public class Operations {
}
public static ExpressionNode integerOperation(Operator operator, ExpressionNode left, ExpressionNode right) {
- return new OperationNode(operator, list(left, right), IntegerValue.REF);
+ return new OperationNode(operator, list(left, right), Types.INT);
}
public static ExpressionNode equal(ExpressionNode left, ExpressionNode right) {
@@ -81,15 +79,15 @@ public class Operations {
}
private static ExpressionNode booleanOperation(Operator operator, ExpressionNode left, ExpressionNode right) {
- return new OperationNode(operator, list(left, right), BooleanValue.REF);
+ return new OperationNode(operator, list(left, right), Types.BOOLEAN);
}
public static ExpressionNode boxInt(ExpressionNode value) {
- return typeCoercion(value, ObjectValues.BOXED_INT);
+ return typeCoercion(value, Types.BOXED_INT);
}
public static ExpressionNode unboxInt(ExpressionNode value) {
- return typeCoercion(value, IntegerValue.REF);
+ return typeCoercion(value, Types.INT);
}
}
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());
}
diff --git a/src/main/java/org/zwobble/couscous/backends/python/PythonCodeGenerator.java b/src/main/java/org/zwobble/couscous/backends/python/PythonCodeGenerator.java
index 9e0a0b9..5b1691b 100644
--- a/src/main/java/org/zwobble/couscous/backends/python/PythonCodeGenerator.java
+++ b/src/main/java/org/zwobble/couscous/backends/python/PythonCodeGenerator.java
@@ -13,6 +13,7 @@ import org.zwobble.couscous.ast.visitors.NodeMapperWithDefault;
import org.zwobble.couscous.ast.visitors.StatementNodeMapper;
import org.zwobble.couscous.backends.Names;
import org.zwobble.couscous.backends.python.ast.*;
+import org.zwobble.couscous.types.Types;
import org.zwobble.couscous.values.*;
import java.util.*;
@@ -113,7 +114,7 @@ public class PythonCodeGenerator {
@Override
public Stream<ScalarType> visit(TypeCoercionNode typeCoercion) {
if (isIntegerBox(typeCoercion)) {
- return Stream.of(ObjectValues.BOXED_INT);
+ return Stream.of(Types.BOXED_INT);
} else {
return Stream.empty();
}
@@ -312,7 +313,7 @@ public class PythonCodeGenerator {
if (isIntegerBox(typeCoercion)) {
// TODO: perform this replacement at the start so that we don't split the import handling and actual expression
return visit(ConstructorCallNode.constructorCall(
- ObjectValues.BOXED_INT,
+ Types.BOXED_INT,
list(typeCoercion.getExpression())));
} else if (isIntegerUnbox(typeCoercion)) {
return pythonAttributeAccess(value, "_value");
@@ -353,7 +354,7 @@ public class PythonCodeGenerator {
}
private static boolean isInteger(Type type) {
- return type.equals(IntegerValue.REF) || type.equals(ObjectValues.BOXED_INT);
+ return type.equals(Types.INT) || type.equals(Types.BOXED_INT);
}
private static PythonVariableReferenceNode typeReference(Type className) {
diff --git a/src/main/java/org/zwobble/couscous/backends/python/PythonPrimitiveMethods.java b/src/main/java/org/zwobble/couscous/backends/python/PythonPrimitiveMethods.java
index a290c54..40c794e 100644
--- a/src/main/java/org/zwobble/couscous/backends/python/PythonPrimitiveMethods.java
+++ b/src/main/java/org/zwobble/couscous/backends/python/PythonPrimitiveMethods.java
@@ -7,6 +7,7 @@ import org.zwobble.couscous.types.ScalarType;
import org.zwobble.couscous.backends.python.ast.PythonBinaryOperation;
import org.zwobble.couscous.backends.python.ast.PythonExpressionNode;
import org.zwobble.couscous.backends.python.ast.PythonNotNode;
+import org.zwobble.couscous.types.Types;
import org.zwobble.couscous.values.*;
import java.util.List;
@@ -112,10 +113,10 @@ public class PythonPrimitiveMethods {
private static final Map<ScalarType, Map<String, PrimitiveMethodGenerator>> METHODS =
ImmutableMap.<ScalarType, Map<String, PrimitiveMethodGenerator>>builder()
- .put(StringValue.REF, STRING_METHODS)
- .put(BooleanValue.REF, BOOLEAN_METHODS)
- .put(IntegerValue.REF, INT_METHODS)
- .put(ObjectValues.BOXED_INT, INT_METHODS)
+ .put(Types.STRING, STRING_METHODS)
+ .put(Types.BOOLEAN, BOOLEAN_METHODS)
+ .put(Types.INT, INT_METHODS)
+ .put(Types.BOXED_INT, INT_METHODS)
.build();
private static final Map<String, PrimitiveStaticMethodGenerator> INTERNAL_METHODS =
@@ -135,7 +136,7 @@ public class PythonPrimitiveMethods {
private static final Map<ScalarType, Map<String, PrimitiveStaticMethodGenerator>> STATIC_METHODS =
ImmutableMap.<ScalarType, Map<String, PrimitiveStaticMethodGenerator>>builder()
.put(InternalCouscousValue.REF, INTERNAL_METHODS)
- .put(ObjectValues.BOXED_INT, BOXED_INT_STATIC_METHODS)
+ .put(Types.BOXED_INT, BOXED_INT_STATIC_METHODS)
.build();
public static Optional<PrimitiveMethodGenerator> getPrimitiveMethod(ScalarType type, String methodName) {
diff --git a/src/main/java/org/zwobble/couscous/backends/python/PythonSerializer.java b/src/main/java/org/zwobble/couscous/backends/python/PythonSerializer.java
index 7732a87..89711a2 100644
--- a/src/main/java/org/zwobble/couscous/backends/python/PythonSerializer.java
+++ b/src/main/java/org/zwobble/couscous/backends/python/PythonSerializer.java
@@ -13,6 +13,7 @@ public class PythonSerializer implements PythonNodeVisitor {
);
PythonSerializer serializer = new PythonSerializer(writer);
serializer.write(node);
+ System.out.println(writer.asString());
return writer.asString();
}
diff --git a/src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionReader.java b/src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionReader.java
index 75e0b6d..c0b69b3 100644
--- a/src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionReader.java
+++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionReader.java
@@ -4,9 +4,6 @@ import org.eclipse.jdt.core.dom.*;
import org.zwobble.couscous.ast.*;
import org.zwobble.couscous.types.Type;
import org.zwobble.couscous.types.Types;
-import org.zwobble.couscous.values.BooleanValue;
-import org.zwobble.couscous.values.IntegerValue;
-import org.zwobble.couscous.values.ObjectValues;
import java.util.List;
import java.util.stream.Collectors;
@@ -47,10 +44,10 @@ public class JavaExpressionReader {
}
private static Type unboxedType(Type type) {
- if (type.equals(ObjectValues.BOXED_INT)) {
- return IntegerValue.REF;
- } else if (type.equals(ObjectValues.BOXED_BOOLEAN)) {
- return BooleanValue.REF;
+ if (type.equals(Types.BOXED_INT)) {
+ return Types.INT;
+ } else if (type.equals(Types.BOXED_BOOLEAN)) {
+ return Types.BOOLEAN;
} else {
return type;
}
@@ -257,8 +254,8 @@ public class JavaExpressionReader {
expression.getLeftOperand(),
expression.getRightOperand());
} else {
- ExpressionNode left = readExpression(ObjectValues.OBJECT, expression.getLeftOperand());
- ExpressionNode right = readExpression(ObjectValues.OBJECT, expression.getRightOperand());
+ ExpressionNode left = readExpression(Types.OBJECT, expression.getLeftOperand());
+ ExpressionNode right = readExpression(Types.OBJECT, expression.getRightOperand());
if (expression.getOperator() == InfixExpression.Operator.EQUALS) {
return Operations.same(left, right);
} else if (expression.getOperator() == InfixExpression.Operator.NOT_EQUALS) {
@@ -279,12 +276,12 @@ public class JavaExpressionReader {
}
private static boolean isPrimitive(Type type) {
- return type.equals(BooleanValue.REF) || type.equals(IntegerValue.REF);
+ return type.equals(Types.BOOLEAN) || type.equals(Types.INT);
}
private ExpressionNode readPrefixExpression(PrefixExpression expression) {
if (expression.getOperator() == PrefixExpression.Operator.NOT) {
- return not(readExpression(BooleanValue.REF, expression.getOperand()));
+ return not(readExpression(Types.BOOLEAN, expression.getOperand()));
} else {
Operator operator = readOperator(expression.getOperator());
return AssignmentNode.assign(
@@ -292,16 +289,16 @@ public class JavaExpressionReader {
operation(
operator,
list(
- readExpression(IntegerValue.REF, expression.getOperand()),
+ readExpression(Types.INT, expression.getOperand()),
literal(1)),
- IntegerValue.REF));
+ Types.INT));
}
}
private ExpressionNode readConditionalExpression(ConditionalExpression expression) {
Type type = typeOf(expression);
return TernaryConditionalNode.ternaryConditional(
- readExpression(BooleanValue.REF, expression.getExpression()),
+ readExpression(Types.BOOLEAN, expression.getExpression()),
readExpression(type, expression.getThenExpression()),
readExpression(type, expression.getElseExpression()));
}
@@ -327,7 +324,7 @@ public class JavaExpressionReader {
return operation(
operator,
list(left, right),
- operator.isBoolean() ? BooleanValue.REF : left.getType());
+ operator.isBoolean() ? Types.BOOLEAN : left.getType());
}
private ExpressionNode readCastExpression(CastExpression expression) {
diff --git a/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java b/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java
index 0df0788..a6da3c3 100644
--- a/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java
+++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaReader.java
@@ -11,8 +11,8 @@ import org.zwobble.couscous.ast.sugar.TypeDeclarationBody;
import org.zwobble.couscous.types.ScalarType;
import org.zwobble.couscous.types.Type;
import org.zwobble.couscous.ast.visitors.NodeTransformer;
+import org.zwobble.couscous.types.Types;
import org.zwobble.couscous.util.ExtraLists;
-import org.zwobble.couscous.values.ObjectValues;
import java.io.IOException;
import java.nio.file.Path;
@@ -413,7 +413,7 @@ public class JavaReader {
eagerMap(arguments, argument -> reference(argument)),
methodNode.signature());
- StatementNode body = override.getReturnType().equals(ObjectValues.VOID)
+ StatementNode body = override.getReturnType().equals(Types.VOID)
? expressionStatement(call)
: returns(typeCoercion(call, override.getReturnType()));
diff --git a/src/main/java/org/zwobble/couscous/frontends/java/JavaStatementReader.java b/src/main/java/org/zwobble/couscous/frontends/java/JavaStatementReader.java
index b21b4d9..c668774 100644
--- a/src/main/java/org/zwobble/couscous/frontends/java/JavaStatementReader.java
+++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaStatementReader.java
@@ -4,8 +4,7 @@ import org.eclipse.jdt.core.dom.*;
import org.zwobble.couscous.ast.*;
import org.zwobble.couscous.ast.sugar.SwitchCaseNode;
import org.zwobble.couscous.types.Type;
-import org.zwobble.couscous.values.BooleanValue;
-import org.zwobble.couscous.values.ObjectValues;
+import org.zwobble.couscous.types.Types;
import java.util.List;
import java.util.Optional;
@@ -94,7 +93,7 @@ class JavaStatementReader {
? list()
: readStatement(statement.getElseStatement());
return ifStatement(
- readExpression(BooleanValue.REF, statement.getExpression()),
+ readExpression(Types.BOOLEAN, statement.getExpression()),
readStatement(statement.getThenStatement()),
falseBranch);
}
@@ -128,8 +127,8 @@ class JavaStatementReader {
methodCall(
reference(switchValueAssignment),
"equals",
- list(coerceExpression(ObjectValues.OBJECT, value)),
- BooleanValue.REF),
+ list(coerceExpression(Types.OBJECT, value)),
+ Types.BOOLEAN),
currentCase.getStatements(), handle)))
.orElse(handle)));
}
@@ -157,7 +156,7 @@ class JavaStatementReader {
private WhileNode readWhileStatement(WhileStatement statement) {
return whileLoop(
- readExpression(BooleanValue.REF, statement.getExpression()),
+ readExpression(Types.BOOLEAN, statement.getExpression()),
readStatement(statement.getBody()));
}
@@ -175,7 +174,7 @@ class JavaStatementReader {
return append(
readDeclarationFragments(fragments, typeOf(javaDeclaration.getType())),
whileLoop(
- readExpression(BooleanValue.REF, statement.getExpression()),
+ readExpression(Types.BOOLEAN, statement.getExpression()),
concat(
readStatement(statement.getBody()),
eagerMap(updaters, updater -> expressionStatement(readExpressionWithoutBoxing(updater))))));
diff --git a/src/main/java/org/zwobble/couscous/frontends/java/JavaTypes.java b/src/main/java/org/zwobble/couscous/frontends/java/JavaTypes.java
index d5f21d0..a196004 100644
--- a/src/main/java/org/zwobble/couscous/frontends/java/JavaTypes.java
+++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaTypes.java
@@ -2,11 +2,9 @@ package org.zwobble.couscous.frontends.java;
import com.google.common.collect.ImmutableSet;
import org.eclipse.jdt.core.dom.*;
+import org.zwobble.couscous.types.*;
import org.zwobble.couscous.types.ParameterizedType;
-import org.zwobble.couscous.types.ScalarType;
-import org.zwobble.couscous.types.Type;
import org.zwobble.couscous.types.TypeParameter;
-import org.zwobble.couscous.values.ObjectValues;
import java.util.List;
import java.util.Optional;
@@ -79,6 +77,6 @@ class JavaTypes {
private static Optional<Type> superClass(ITypeBinding typeBinding) {
return Optional.ofNullable(typeBinding.getSuperclass())
.map(JavaTypes::typeOf)
- .filter(type -> !type.equals(ObjectValues.OBJECT));
+ .filter(type -> !type.equals(Types.OBJECT));
}
}
diff --git a/src/main/java/org/zwobble/couscous/interpreter/Evaluator.java b/src/main/java/org/zwobble/couscous/interpreter/Evaluator.java
index 3a366e0..a721206 100644
--- a/src/main/java/org/zwobble/couscous/interpreter/Evaluator.java
+++ b/src/main/java/org/zwobble/couscous/interpreter/Evaluator.java
@@ -7,8 +7,7 @@ import org.zwobble.couscous.ast.visitors.ExpressionNodeMapper;
import org.zwobble.couscous.interpreter.errors.ConditionMustBeBoolean;
import org.zwobble.couscous.interpreter.errors.InvalidCast;
import org.zwobble.couscous.interpreter.values.*;
-import org.zwobble.couscous.values.BooleanValue;
-import org.zwobble.couscous.values.IntegerValue;
+import org.zwobble.couscous.types.Types;
import java.util.List;
import java.util.stream.Collectors;
@@ -136,23 +135,23 @@ public class Evaluator implements ExpressionNodeMapper<InterpreterValue> {
}
private static boolean isIntegerBox(TypeCoercionNode typeCoercion) {
- return typeCoercion.getExpression().getType().equals(IntegerValue.REF) &&
- !typeCoercion.getType().equals(IntegerValue.REF);
+ return typeCoercion.getExpression().getType().equals(Types.INT) &&
+ !typeCoercion.getType().equals(Types.INT);
}
private static boolean isIntegerUnbox(TypeCoercionNode typeCoercion) {
- return !typeCoercion.getExpression().getType().equals(IntegerValue.REF) &&
- typeCoercion.getType().equals(IntegerValue.REF);
+ return !typeCoercion.getExpression().getType().equals(Types.INT) &&
+ typeCoercion.getType().equals(Types.INT);
}
private static boolean isBooleanBox(TypeCoercionNode typeCoercion) {
- return typeCoercion.getExpression().getType().equals(BooleanValue.REF) &&
- !typeCoercion.getType().equals(BooleanValue.REF);
+ return typeCoercion.getExpression().getType().equals(Types.BOOLEAN) &&
+ !typeCoercion.getType().equals(Types.BOOLEAN);
}
private static boolean isBooleanUnbox(TypeCoercionNode typeCoercion) {
- return !typeCoercion.getExpression().getType().equals(BooleanValue.REF) &&
- typeCoercion.getType().equals(BooleanValue.REF);
+ return !typeCoercion.getExpression().getType().equals(Types.BOOLEAN) &&
+ typeCoercion.getType().equals(Types.BOOLEAN);
}
private List<InterpreterValue> evalArguments(List<? extends ExpressionNode> arguments) {
diff --git a/src/main/java/org/zwobble/couscous/interpreter/InterpreterTypes.java b/src/main/java/org/zwobble/couscous/interpreter/InterpreterTypes.java
index c6920c7..6c315bb 100644
--- a/src/main/java/org/zwobble/couscous/interpreter/InterpreterTypes.java
+++ b/src/main/java/org/zwobble/couscous/interpreter/InterpreterTypes.java
@@ -4,7 +4,7 @@ import org.zwobble.couscous.types.Type;
import org.zwobble.couscous.interpreter.errors.UnexpectedValueType;
import org.zwobble.couscous.interpreter.types.InterpreterType;
import org.zwobble.couscous.interpreter.values.InterpreterValue;
-import org.zwobble.couscous.values.ObjectValues;
+import org.zwobble.couscous.types.Types;
public class InterpreterTypes {
public static void checkIsInstance(Type type, InterpreterValue value) {
@@ -20,7 +20,7 @@ public class InterpreterTypes {
public static boolean isSubType(Type superType, InterpreterType subType) {
return
superType.equals(subType.getType()) ||
- superType.equals(ObjectValues.OBJECT) ||
+ superType.equals(Types.OBJECT) ||
subType.getSuperTypes().contains(superType);
}
}
diff --git a/src/main/java/org/zwobble/couscous/interpreter/values/BooleanInterpreterValue.java b/src/main/java/org/zwobble/couscous/interpreter/values/BooleanInterpreterValue.java
index a183206..6cebc21 100644
--- a/src/main/java/org/zwobble/couscous/interpreter/values/BooleanInterpreterValue.java
+++ b/src/main/java/org/zwobble/couscous/interpreter/values/BooleanInterpreterValue.java
@@ -4,7 +4,7 @@ import org.zwobble.couscous.ast.Operator;
import org.zwobble.couscous.interpreter.errors.NoSuchField;
import org.zwobble.couscous.interpreter.types.InterpreterType;
import org.zwobble.couscous.interpreter.types.IntrinsicInterpreterType;
-import org.zwobble.couscous.values.BooleanValue;
+import org.zwobble.couscous.types.Types;
import org.zwobble.couscous.values.PrimitiveValue;
import org.zwobble.couscous.values.PrimitiveValues;
@@ -22,15 +22,15 @@ public final class BooleanInterpreterValue implements InterpreterValue {
private static final InterpreterType TYPE = IntrinsicInterpreterType.builder(BooleanInterpreterValue.class, "boolean")
- .method(Operator.BOOLEAN_NOT.getSymbol(), list(), BooleanValue.REF, (environment, arguments) ->
+ .method(Operator.BOOLEAN_NOT.getSymbol(), list(), Types.BOOLEAN, (environment, arguments) ->
of(!arguments.getReceiver().getValue()))
- .method(Operator.BOOLEAN_AND.getSymbol(), list(BooleanValue.REF), BooleanValue.REF, (environment, arguments) -> {
+ .method(Operator.BOOLEAN_AND.getSymbol(), list(Types.BOOLEAN), Types.BOOLEAN, (environment, arguments) -> {
BooleanInterpreterValue right = (BooleanInterpreterValue)arguments.get(0);
return of(arguments.getReceiver().getValue() && right.getValue());
})
- .method(Operator.BOOLEAN_OR.getSymbol(), list(BooleanValue.REF), BooleanValue.REF, (environment, arguments) -> {
+ .method(Operator.BOOLEAN_OR.getSymbol(), list(Types.BOOLEAN), Types.BOOLEAN, (environment, arguments) -> {
BooleanInterpreterValue right = (BooleanInterpreterValue)arguments.get(0);
return of(arguments.getReceiver().getValue() || right.getValue());
})
diff --git a/src/main/java/org/zwobble/couscous/interpreter/values/BoxedIntegerInterpreterValue.java b/src/main/java/org/zwobble/couscous/interpreter/values/BoxedIntegerInterpreterValue.java
index 18d0c34..b4f8701 100644
--- a/src/main/java/org/zwobble/couscous/interpreter/values/BoxedIntegerInterpreterValue.java
+++ b/src/main/java/org/zwobble/couscous/interpreter/values/BoxedIntegerInterpreterValue.java
@@ -2,10 +2,7 @@ package org.zwobble.couscous.interpreter.values;
import org.zwobble.couscous.interpreter.types.InterpreterType;
import org.zwobble.couscous.interpreter.types.IntrinsicInterpreterType;
-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 static org.zwobble.couscous.util.ExtraLists.list;
@@ -21,24 +18,24 @@ public class BoxedIntegerInterpreterValue {
}
public static final InterpreterType TYPE = IntrinsicInterpreterType.classBuilder("java.lang.Integer")
- .field("value", IntegerValue.REF)
+ .field("value", Types.INT)
- .staticMethod("parseInt", list(StringValue.REF), IntegerValue.REF,
+ .staticMethod("parseInt", list(Types.STRING), Types.INT,
(environment, arguments) -> {
StringInterpreterValue value = (StringInterpreterValue)arguments.get(0);
return new IntegerInterpreterValue(Integer.parseInt(value.getValue()));
})
- .staticMethod("valueOf", list(IntegerValue.REF), ObjectValues.BOXED_INT,
+ .staticMethod("valueOf", list(Types.INT), Types.BOXED_INT,
(environment, arguments) -> {
IntegerInterpreterValue value = (IntegerInterpreterValue)arguments.get(0);
return of(value);
})
- .method("equals", list(ObjectValues.OBJECT), BooleanValue.REF,
+ .method("equals", list(Types.OBJECT), Types.BOOLEAN,
(environment, arguments) -> {
InterpreterValue right = arguments.getPositionalArguments().get(0);
- if (right.getType().getType().equals(ObjectValues.BOXED_INT)) {
+ if (right.getType().getType().equals(Types.BOXED_INT)) {
IntegerInterpreterValue leftValue = (IntegerInterpreterValue)arguments.getReceiver().getField("value");
IntegerInterpreterValue rightValue = (IntegerInterpreterValue)right.getField("value");
return BooleanInterpreterValue.of(leftValue.getValue() == rightValue.getValue());
@@ -47,7 +44,7 @@ public class BoxedIntegerInterpreterValue {
}
})
- .method("toString", list(), StringValue.REF,
+ .method("toString", list(), Types.STRING,
(environment, arguments) -> {
IntegerInterpreterValue value = (IntegerInterpreterValue)arguments.getReceiver().getField("value");
return StringInterpreterValue.of(Integer.toString(value.getValue()));
diff --git a/src/main/java/org/zwobble/couscous/interpreter/values/IntegerInterpreterValue.java b/src/main/java/org/zwobble/couscous/interpreter/values/IntegerInterpreterValue.java
index f0ce783..00d4aa5 100644
--- a/src/main/java/org/zwobble/couscous/interpreter/values/IntegerInterpreterValue.java
+++ b/src/main/java/org/zwobble/couscous/interpreter/values/IntegerInterpreterValue.java
@@ -5,8 +5,7 @@ import org.zwobble.couscous.interpreter.Environment;
import org.zwobble.couscous.interpreter.errors.NoSuchField;
import org.zwobble.couscous.interpreter.types.InterpreterType;
import org.zwobble.couscous.interpreter.types.IntrinsicInterpreterType;
-import org.zwobble.couscous.values.BooleanValue;
-import org.zwobble.couscous.values.IntegerValue;
+import org.zwobble.couscous.types.Types;
import org.zwobble.couscous.values.PrimitiveValue;
import org.zwobble.couscous.values.PrimitiveValues;
@@ -16,31 +15,31 @@ import java.util.function.BiFunction;
import static org.zwobble.couscous.util.ExtraLists.list;
public final class IntegerInterpreterValue implements InterpreterValue {
- public static final InterpreterType TYPE = IntrinsicInterpreterType.builder(IntegerInterpreterValue.class, IntegerValue.REF)
- .method(Operator.ADD.getSymbol(), list(IntegerValue.REF), IntegerValue.REF,
+ public static final InterpreterType TYPE = IntrinsicInterpreterType.builder(IntegerInterpreterValue.class, Types.INT)
+ .method(Operator.ADD.getSymbol(), list(Types.INT), Types.INT,
infixReturningInteger((left, right) -> left + right))
- .method(Operator.SUBTRACT.getSymbol(), list(IntegerValue.REF), IntegerValue.REF,
+ .method(Operator.SUBTRACT.getSymbol(), list(Types.INT), Types.INT,
infixReturningInteger((left, right) -> left - right))
- .method(Operator.MULTIPLY.getSymbol(), list(IntegerValue.REF), IntegerValue.REF,
+ .method(Operator.MULTIPLY.getSymbol(), list(Types.INT), Types.INT,
infixReturningInteger((left, right) -> left * right))
- .method(Operator.DIVIDE.getSymbol(), list(IntegerValue.REF), IntegerValue.REF,
+ .method(Operator.DIVIDE.getSymbol(), list(Types.INT), Types.INT,
infixReturningInteger((left, right) -> left / right))
- .method(Operator.MOD.getSymbol(), list(IntegerValue.REF), IntegerValue.REF,
+ .method(Operator.MOD.getSymbol(), list(Types.INT), Types.INT,
infixReturningInteger((left, right) -> left % right))
- .method(Operator.EQUALS.getSymbol(), list(IntegerValue.REF), BooleanValue.REF,
+ .method(Operator.EQUALS.getSymbol(), list(Types.INT), Types.BOOLEAN,
(environment, arguments) -> {
IntegerInterpreterValue right = (IntegerInterpreterValue)arguments.getPositionalArguments().get(0);
return integerEquals(arguments, right);
})
- .method(Operator.NOT_EQUALS.getSymbol(), list(IntegerValue.REF), BooleanValue.REF,
+ .method(Operator.NOT_EQUALS.getSymbol(), list(Types.INT), Types.BOOLEAN,
infixReturningBoolean((left, right) -> !left.equals(right)))
- .method(Operator.GREATER_THAN.getSymbol(), list(IntegerValue.REF), BooleanValue.REF,
+ .method(Operator.GREATER_THAN.getSymbol(), list(Types.INT), Types.BOOLEAN,
infixReturningBoolean((left, right) -> left > right))
- .method(Operator.GREATER_THAN_OR_EQUAL.getSymbol(), list(IntegerValue.REF), BooleanValue.REF,
+ .method(Operator.GREATER_THAN_OR_EQUAL.getSymbol(), list(Types.INT), Types.BOOLEAN,
infixReturningBoolean((left, right) -> left >= right))
- .method(Operator.LESS_THAN.getSymbol(), list(IntegerValue.REF), BooleanValue.REF,
+ .method(Operator.LESS_THAN.getSymbol(), list(Types.INT), Types.BOOLEAN,
infixReturningBoolean((left, right) -> left < right))
- .method(Operator.LESS_THAN_OR_EQUAL.getSymbol(), list(IntegerValue.REF), BooleanValue.REF,
+ .method(Operator.LESS_THAN_OR_EQUAL.getSymbol(), list(Types.INT), Types.BOOLEAN,
infixReturningBoolean((left, right) -> left <= right))
.build();
diff --git a/src/main/java/org/zwobble/couscous/interpreter/values/InternalCouscousInterpreterValue.java b/src/main/java/org/zwobble/couscous/interpreter/values/InternalCouscousInterpreterValue.java
index faab2a8..80635b2 100644
--- a/src/main/java/org/zwobble/couscous/interpreter/values/InternalCouscousInterpreterValue.java
+++ b/src/main/java/org/zwobble/couscous/interpreter/values/InternalCouscousInterpreterValue.java
@@ -2,14 +2,13 @@ package org.zwobble.couscous.interpreter.values;
import org.zwobble.couscous.interpreter.types.InterpreterType;
import org.zwobble.couscous.interpreter.types.IntrinsicInterpreterType;
-import org.zwobble.couscous.values.BooleanValue;
-import org.zwobble.couscous.values.ObjectValues;
+import org.zwobble.couscous.types.Types;
import static org.zwobble.couscous.util.ExtraLists.list;
public class InternalCouscousInterpreterValue {
public static final InterpreterType TYPE = IntrinsicInterpreterType.classBuilder("_couscous")
- .staticMethod("same", list(ObjectValues.OBJECT, ObjectValues.OBJECT), BooleanValue.REF,
+ .staticMethod("same", list(Types.OBJECT, Types.OBJECT), Types.BOOLEAN,
(environment, arguments) ->
BooleanInterpreterValue.of(arguments.get(0) == arguments.get(1)))
diff --git a/src/main/java/org/zwobble/couscous/interpreter/values/StringInterpreterValue.java b/src/main/java/org/zwobble/couscous/interpreter/values/StringInterpreterValue.java
index 2fe72d7..bd4d6ba 100644
--- a/src/main/java/org/zwobble/couscous/interpreter/values/StringInterpreterValue.java
+++ b/src/main/java/org/zwobble/couscous/interpreter/values/StringInterpreterValue.java
@@ -4,6 +4,7 @@ import org.zwobble.couscous.ast.Operator;
import org.zwobble.couscous.interpreter.errors.NoSuchField;
import org.zwobble.couscous.interpreter.types.InterpreterType;
import org.zwobble.couscous.interpreter.types.IntrinsicInterpreterType;
+import org.zwobble.couscous.types.Types;
import org.zwobble.couscous.values.*;
import java.util.Optional;
@@ -11,25 +12,25 @@ import java.util.Optional;
import static org.zwobble.couscous.util.ExtraLists.list;
public final class StringInterpreterValue implements InterpreterValue {
- public static final InterpreterType TYPE = IntrinsicInterpreterType.builder(StringInterpreterValue.class, StringValue.REF)
- .method("length", list(), IntegerValue.REF, (environment, arguments) ->
+ public static final InterpreterType TYPE = IntrinsicInterpreterType.builder(StringInterpreterValue.class, Types.STRING)
+ .method("length", list(), Types.INT, (environment, arguments) ->
new IntegerInterpreterValue(arguments.getReceiver().value.length()))
- .method("substring", list(IntegerValue.REF, IntegerValue.REF), StringValue.REF, (environment, arguments) -> {
+ .method("substring", list(Types.INT, Types.INT), Types.STRING, (environment, arguments) -> {
IntegerInterpreterValue startIndex = (IntegerInterpreterValue)arguments.get(0);
IntegerInterpreterValue endIndex = (IntegerInterpreterValue)arguments.get(1);
return of(arguments.getReceiver().value.substring(startIndex.getValue(), endIndex.getValue()));
})
- .method(Operator.ADD.getSymbol(), list(StringValue.REF), StringValue.REF, (environment, arguments) -> {
+ .method(Operator.ADD.getSymbol(), list(Types.STRING), Types.STRING, (environment, arguments) -> {
StringInterpreterValue right = (StringInterpreterValue)arguments.get(0);
return of(arguments.getReceiver().value + right.value);
})
- .method("toLowerCase", list(), StringValue.REF, (environment, arguments) ->
+ .method("toLowerCase", list(), Types.STRING, (environment, arguments) ->
of(arguments.getReceiver().value.toLowerCase()))
- .method("equals", list(ObjectValues.OBJECT), BooleanValue.REF, (environment, arguments) -> {
+ .method("equals", list(Types.OBJECT), Types.BOOLEAN, (environment, arguments) -> {
InterpreterValue right = arguments.get(0);
if (right instanceof StringInterpreterValue) {
return BooleanInterpreterValue.of(arguments.getReceiver().value.equals(((StringInterpreterValue)right).value));
diff --git a/src/main/java/org/zwobble/couscous/interpreter/values/TypeInterpreterValue.java b/src/main/java/org/zwobble/couscous/interpreter/values/TypeInterpreterValue.java
index b460d00..f941652 100644
--- a/src/main/java/org/zwobble/couscous/interpreter/values/TypeInterpreterValue.java
+++ b/src/main/java/org/zwobble/couscous/interpreter/values/TypeInterpreterValue.java
@@ -4,7 +4,7 @@ import org.zwobble.couscous.types.ScalarType;
import org.zwobble.couscous.interpreter.errors.NoSuchField;
import org.zwobble.couscous.interpreter.types.InterpreterType;
import org.zwobble.couscous.interpreter.types.IntrinsicInterpreterType;
-import org.zwobble.couscous.values.ObjectValues;
+import org.zwobble.couscous.types.Types;
import org.zwobble.couscous.values.PrimitiveValue;
import org.zwobble.couscous.values.PrimitiveValues;
@@ -12,7 +12,7 @@ import java.util.Optional;
public class TypeInterpreterValue implements InterpreterValue {
public static final InterpreterType TYPE = IntrinsicInterpreterType
- .builder(TypeInterpreterValue.class, ObjectValues.CLASS)
+ .builder(TypeInterpreterValue.class, Types.CLASS)
.build();
public static InterpreterValue of(ScalarType type) {
diff --git a/src/main/java/org/zwobble/couscous/types/Types.java b/src/main/java/org/zwobble/couscous/types/Types.java
index 20a3645..6902c33 100644
--- a/src/main/java/org/zwobble/couscous/types/Types.java
+++ b/src/main/java/org/zwobble/couscous/types/Types.java
@@ -1,8 +1,15 @@
package org.zwobble.couscous.types;
-import org.zwobble.couscous.values.ObjectValues;
-
public class Types {
+ public static final ScalarType VOID = ScalarType.of("void");
+ public static final ScalarType BOOLEAN = ScalarType.of("boolean");
+ public static final ScalarType INT = ScalarType.of("int");
+ public static final ScalarType STRING = ScalarType.of("java.lang.String");
+ public static final ScalarType CLASS = ScalarType.of("java.lang.Class");
+ public static final ScalarType OBJECT = ScalarType.of("java.lang.Object");
+ public static final ScalarType BOXED_INT = ScalarType.of("java.lang.Integer");
+ public static final ScalarType BOXED_BOOLEAN = ScalarType.of("java.lang.Boolean");
+
public static ScalarType erasure(Type type) {
return type.accept(new Type.Visitor<ScalarType>() {
@Override
@@ -12,7 +19,7 @@ public class Types {
@Override
public ScalarType visit(TypeParameter parameter) {
- return ObjectValues.OBJECT;
+ return OBJECT;
}
@Override
diff --git a/src/main/java/org/zwobble/couscous/values/BooleanValue.java b/src/main/java/org/zwobble/couscous/values/BooleanValue.java
index 8d42e4f..8f7d95b 100644
--- a/src/main/java/org/zwobble/couscous/values/BooleanValue.java
+++ b/src/main/java/org/zwobble/couscous/values/BooleanValue.java
@@ -1,10 +1,9 @@
package org.zwobble.couscous.values;
import org.zwobble.couscous.types.ScalarType;
+import org.zwobble.couscous.types.Types;
public final class BooleanValue implements PrimitiveValue {
- public static final ScalarType REF = ScalarType.of("boolean");
-
private final boolean value;
public BooleanValue(final boolean value) {
@@ -22,7 +21,7 @@ public final class BooleanValue implements PrimitiveValue {
@Override
public ScalarType getType() {
- return REF;
+ return Types.BOOLEAN;
}
@java.lang.Override
diff --git a/src/main/java/org/zwobble/couscous/values/IntegerValue.java b/src/main/java/org/zwobble/couscous/values/IntegerValue.java
index 86de00f..d657097 100644
--- a/src/main/java/org/zwobble/couscous/values/IntegerValue.java
+++ b/src/main/java/org/zwobble/couscous/values/IntegerValue.java
@@ -1,9 +1,9 @@
package org.zwobble.couscous.values;
import org.zwobble.couscous.types.ScalarType;
+import org.zwobble.couscous.types.Types;
public final class IntegerValue implements PrimitiveValue {
- public static final ScalarType REF = ScalarType.of("int");
private final int value;
@Override
@@ -13,7 +13,7 @@ public final class IntegerValue implements PrimitiveValue {
@Override
public ScalarType getType() {
- return REF;
+ return Types.INT;
}
public IntegerValue(final int value) {
diff --git a/src/main/java/org/zwobble/couscous/values/ObjectValues.java b/src/main/java/org/zwobble/couscous/values/ObjectValues.java
deleted file mode 100644
index 1df2de6..0000000
--- a/src/main/java/org/zwobble/couscous/values/ObjectValues.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package org.zwobble.couscous.values;
-
-import org.zwobble.couscous.types.ScalarType;
-
-public class ObjectValues {
- public static final ScalarType VOID = ScalarType.of("void");
- public static final ScalarType CLASS = ScalarType.of("java.lang.Class");
- public static final ScalarType OBJECT = ScalarType.of("java.lang.Object");
- public static final ScalarType BOXED_INT = ScalarType.of("java.lang.Integer");
- public static final ScalarType BOXED_BOOLEAN = ScalarType.of("java.lang.Boolean");
-}
diff --git a/src/main/java/org/zwobble/couscous/values/StringValue.java b/src/main/java/org/zwobble/couscous/values/StringValue.java
index 6a417f5..41bd5e9 100644
--- a/src/main/java/org/zwobble/couscous/values/StringValue.java
+++ b/src/main/java/org/zwobble/couscous/values/StringValue.java
@@ -1,13 +1,13 @@
package org.zwobble.couscous.values;
import org.zwobble.couscous.types.ScalarType;
+import org.zwobble.couscous.types.Types;
public final class StringValue implements PrimitiveValue {
-
public static StringValue of(String value) {
return new StringValue(value);
}
- public static final ScalarType REF = ScalarType.of("java.lang.String");
+
private final String value;
@Override
@@ -17,7 +17,7 @@ public final class StringValue implements PrimitiveValue {
@Override
public ScalarType getType() {
- return REF;
+ return Types.STRING;
}
private StringValue(final String value) {
diff --git a/src/main/java/org/zwobble/couscous/values/TypeValue.java b/src/main/java/org/zwobble/couscous/values/TypeValue.java
index 4a3b13d..d5234ac 100644
--- a/src/main/java/org/zwobble/couscous/values/TypeValue.java
+++ b/src/main/java/org/zwobble/couscous/values/TypeValue.java
@@ -3,6 +3,7 @@ package org.zwobble.couscous.values;
import org.zwobble.couscous.types.ParameterizedType;
import org.zwobble.couscous.types.ScalarType;
import org.zwobble.couscous.types.Type;
+import org.zwobble.couscous.types.Types;
import static org.zwobble.couscous.util.ExtraLists.list;
@@ -24,7 +25,7 @@ public class TypeValue implements PrimitiveValue {
@Override
public Type getType() {
- return new ParameterizedType(ObjectValues.CLASS, list(value));
+ return new ParameterizedType(Types.CLASS, list(value));
}
@Override
diff --git a/src/main/java/org/zwobble/couscous/values/UnitValue.java b/src/main/java/org/zwobble/couscous/values/UnitValue.java
index 3af8111..5b6698b 100644
--- a/src/main/java/org/zwobble/couscous/values/UnitValue.java
+++ b/src/main/java/org/zwobble/couscous/values/UnitValue.java
@@ -1,10 +1,9 @@
package org.zwobble.couscous.values;
import org.zwobble.couscous.types.ScalarType;
+import org.zwobble.couscous.types.Types;
public class UnitValue implements PrimitiveValue {
- public static final ScalarType REF = ScalarType.of("void");
-
static final UnitValue UNIT = new UnitValue();
private UnitValue() {
@@ -17,6 +16,6 @@ public class UnitValue implements PrimitiveValue {
@Override
public ScalarType getType() {
- return REF;
+ return Types.VOID;
}
}