aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-01-10 16:24:22 +0000
committerMichael Williamson <mike@zwobble.org>2016-01-10 16:24:22 +0000
commit647e0df77671564527e4bd8a0d4cad673d0656f3 (patch)
treecb436dda239e5cdfc716e86ffea1020587559dde /src/main/java/org/zwobble
parent72cd9d3ef576c3bb9037b1692781a1b46297e998 (diff)
Remove StaticMethodCallNode
Diffstat (limited to 'src/main/java/org/zwobble')
-rw-r--r--src/main/java/org/zwobble/couscous/ast/MethodCallNode.java17
-rw-r--r--src/main/java/org/zwobble/couscous/ast/Operations.java17
-rw-r--r--src/main/java/org/zwobble/couscous/ast/StaticMethodCallNode.java42
-rw-r--r--src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionMethodReferenceReader.java2
-rw-r--r--src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionReader.java7
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());
}