diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-03-21 08:13:45 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-03-21 08:13:45 +0000 |
| commit | fe113241971cfe87b163a9eb4dc51e9d5e32410e (patch) | |
| tree | f9e435c44020ffbbb9231df79719a4d407ea8000 /src/main/java | |
| parent | 22f5765125eea28ae158bab4d9e96ae6472b73d4 (diff) | |
Move standard type definitions into a Types class
Diffstat (limited to 'src/main/java')
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; } } |
