diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-01-10 16:24:22 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-01-10 16:24:22 +0000 |
| commit | 647e0df77671564527e4bd8a0d4cad673d0656f3 (patch) | |
| tree | cb436dda239e5cdfc716e86ffea1020587559dde /src/main/java/org | |
| parent | 72cd9d3ef576c3bb9037b1692781a1b46297e998 (diff) | |
Remove StaticMethodCallNode
Diffstat (limited to 'src/main/java/org')
5 files changed, 39 insertions, 46 deletions
diff --git a/src/main/java/org/zwobble/couscous/ast/MethodCallNode.java b/src/main/java/org/zwobble/couscous/ast/MethodCallNode.java index b385eec..b50250d 100644 --- a/src/main/java/org/zwobble/couscous/ast/MethodCallNode.java +++ b/src/main/java/org/zwobble/couscous/ast/MethodCallNode.java @@ -6,9 +6,26 @@ import java.util.List; import java.util.function.Function; import static org.zwobble.couscous.ast.InstanceReceiver.instanceReceiver; +import static org.zwobble.couscous.ast.StaticReceiver.staticReceiver; import static org.zwobble.couscous.util.ExtraLists.eagerMap; public class MethodCallNode implements ExpressionNode { + public static ExpressionNode staticMethodCall( + String className, + String methodName, + List<ExpressionNode> arguments, + TypeName type) { + return staticMethodCall(TypeName.of(className), methodName, arguments, type); + } + + public static ExpressionNode staticMethodCall( + TypeName className, + String methodName, + List<ExpressionNode> arguments, + TypeName type) { + return MethodCallNode.methodCall(staticReceiver(className), methodName, arguments, type); + } + public static MethodCallNode methodCall( ExpressionNode receiver, String methodName, diff --git a/src/main/java/org/zwobble/couscous/ast/Operations.java b/src/main/java/org/zwobble/couscous/ast/Operations.java index 5691891..40d9672 100644 --- a/src/main/java/org/zwobble/couscous/ast/Operations.java +++ b/src/main/java/org/zwobble/couscous/ast/Operations.java @@ -2,13 +2,21 @@ package org.zwobble.couscous.ast; import org.zwobble.couscous.values.BooleanValue; import org.zwobble.couscous.values.IntegerValue; +import org.zwobble.couscous.values.InternalCouscousValue; +import org.zwobble.couscous.values.ObjectValues; import java.util.Collections; import static org.zwobble.couscous.ast.MethodCallNode.methodCall; +import static org.zwobble.couscous.ast.MethodCallNode.staticMethodCall; +import static org.zwobble.couscous.ast.TypeCoercionNode.typeCoercion; 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); + } + public static ExpressionNode not(ExpressionNode value) { if (value.getType().equals(BooleanValue.REF)) { return methodCall(value, "negate", Collections.emptyList(), BooleanValue.REF); @@ -76,4 +84,13 @@ public class Operations { private static ExpressionNode booleanOperation(String methodName, ExpressionNode left, ExpressionNode right) { return methodCall(left, methodName, list(right), BooleanValue.REF); } + + public static ExpressionNode boxInt(ExpressionNode value) { + return typeCoercion(value, ObjectValues.BOXED_INT); + } + + public static ExpressionNode unboxInt(ExpressionNode value) { + return typeCoercion(value, IntegerValue.REF); + } + } diff --git a/src/main/java/org/zwobble/couscous/ast/StaticMethodCallNode.java b/src/main/java/org/zwobble/couscous/ast/StaticMethodCallNode.java deleted file mode 100644 index f16005a..0000000 --- a/src/main/java/org/zwobble/couscous/ast/StaticMethodCallNode.java +++ /dev/null @@ -1,42 +0,0 @@ -package org.zwobble.couscous.ast; - -import org.zwobble.couscous.values.BooleanValue; -import org.zwobble.couscous.values.IntegerValue; -import org.zwobble.couscous.values.InternalCouscousValue; -import org.zwobble.couscous.values.ObjectValues; - -import java.util.List; - -import static org.zwobble.couscous.ast.StaticReceiver.staticReceiver; -import static org.zwobble.couscous.ast.TypeCoercionNode.typeCoercion; -import static org.zwobble.couscous.util.ExtraLists.list; - -public class StaticMethodCallNode { - public static ExpressionNode same(ExpressionNode left, ExpressionNode right) { - return staticMethodCall(InternalCouscousValue.REF, "same", list(left, right), BooleanValue.REF); - } - - public static ExpressionNode boxInt(ExpressionNode value) { - return typeCoercion(value, ObjectValues.BOXED_INT); - } - - public static ExpressionNode unboxInt(ExpressionNode value) { - return typeCoercion(value, IntegerValue.REF); - } - - public static ExpressionNode staticMethodCall( - String className, - String methodName, - List<ExpressionNode> arguments, - TypeName type) { - return staticMethodCall(TypeName.of(className), methodName, arguments, type); - } - - public static ExpressionNode staticMethodCall( - TypeName className, - String methodName, - List<ExpressionNode> arguments, - TypeName type) { - return MethodCallNode.methodCall(staticReceiver(className), methodName, arguments, type); - } -} diff --git a/src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionMethodReferenceReader.java b/src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionMethodReferenceReader.java index ab78bdb..545b1c0 100644 --- a/src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionMethodReferenceReader.java +++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionMethodReferenceReader.java @@ -11,8 +11,8 @@ import org.zwobble.couscous.ast.sugar.Lambda; import java.util.List; import static org.zwobble.couscous.ast.MethodCallNode.methodCall; +import static org.zwobble.couscous.ast.MethodCallNode.staticMethodCall; import static org.zwobble.couscous.ast.ReturnNode.returns; -import static org.zwobble.couscous.ast.StaticMethodCallNode.staticMethodCall; import static org.zwobble.couscous.ast.sugar.Lambda.lambda; import static org.zwobble.couscous.frontends.java.JavaTypes.typeOf; import static org.zwobble.couscous.util.ExtraLists.eagerMap; 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 21d7112..4200a98 100644 --- a/src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionReader.java +++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionReader.java @@ -12,6 +12,7 @@ import java.util.stream.IntStream; import static org.zwobble.couscous.ast.ConstructorCallNode.constructorCall; import static org.zwobble.couscous.ast.LiteralNode.literal; +import static org.zwobble.couscous.ast.MethodCallNode.staticMethodCall; import static org.zwobble.couscous.ast.Operations.not; import static org.zwobble.couscous.ast.TypeCoercionNode.typeCoercion; import static org.zwobble.couscous.frontends.java.JavaOperators.readOperator; @@ -158,7 +159,7 @@ public class JavaExpressionReader { IMethodBinding methodBinding = expression.resolveMethodBinding(); TypeName receiverType = typeOf(methodBinding.getDeclaringClass()); if ((Modifier.isStatic(methodBinding.getModifiers()))) { - return StaticMethodCallNode.staticMethodCall( + return staticMethodCall( receiverType, methodName, arguments, @@ -229,9 +230,9 @@ public class JavaExpressionReader { ExpressionNode left = readExpression(ObjectValues.OBJECT, expression.getLeftOperand()); ExpressionNode right = readExpression(ObjectValues.OBJECT, expression.getRightOperand()); if (expression.getOperator() == InfixExpression.Operator.EQUALS) { - return StaticMethodCallNode.same(left, right); + return Operations.same(left, right); } else if (expression.getOperator() == InfixExpression.Operator.NOT_EQUALS) { - return not(StaticMethodCallNode.same(left, right)); + return not(Operations.same(left, right)); } else { throw new IllegalArgumentException("Unsupported operator: " + expression.getOperator()); } |
