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/org/zwobble/couscous/frontends | |
| parent | 22f5765125eea28ae158bab4d9e96ae6472b73d4 (diff) | |
Move standard type definitions into a Types class
Diffstat (limited to 'src/main/java/org/zwobble/couscous/frontends')
4 files changed, 22 insertions, 28 deletions
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)); } } |
