aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/ast/Operations.java
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/couscous/ast/Operations.java
parent72cd9d3ef576c3bb9037b1692781a1b46297e998 (diff)
Remove StaticMethodCallNode
Diffstat (limited to 'src/main/java/org/zwobble/couscous/ast/Operations.java')
-rw-r--r--src/main/java/org/zwobble/couscous/ast/Operations.java17
1 files changed, 17 insertions, 0 deletions
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);
+ }
+
}