aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/ast/StaticMethodCallNode.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/zwobble/couscous/ast/StaticMethodCallNode.java')
-rw-r--r--src/main/java/org/zwobble/couscous/ast/StaticMethodCallNode.java120
1 files changed, 7 insertions, 113 deletions
diff --git a/src/main/java/org/zwobble/couscous/ast/StaticMethodCallNode.java b/src/main/java/org/zwobble/couscous/ast/StaticMethodCallNode.java
index 4676b67..f16005a 100644
--- a/src/main/java/org/zwobble/couscous/ast/StaticMethodCallNode.java
+++ b/src/main/java/org/zwobble/couscous/ast/StaticMethodCallNode.java
@@ -1,20 +1,17 @@
package org.zwobble.couscous.ast;
-import java.util.List;
-import java.util.function.Function;
-
-import org.zwobble.couscous.ast.visitors.ExpressionNodeMapper;
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 static java.util.Arrays.asList;
+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.eagerMap;
import static org.zwobble.couscous.util.ExtraLists.list;
-public class StaticMethodCallNode implements ExpressionNode {
+public class StaticMethodCallNode {
public static ExpressionNode same(ExpressionNode left, ExpressionNode right) {
return staticMethodCall(InternalCouscousValue.REF, "same", list(left, right), BooleanValue.REF);
}
@@ -27,7 +24,7 @@ public class StaticMethodCallNode implements ExpressionNode {
return typeCoercion(value, IntegerValue.REF);
}
- public static StaticMethodCallNode staticMethodCall(
+ public static ExpressionNode staticMethodCall(
String className,
String methodName,
List<ExpressionNode> arguments,
@@ -35,114 +32,11 @@ public class StaticMethodCallNode implements ExpressionNode {
return staticMethodCall(TypeName.of(className), methodName, arguments, type);
}
- public static StaticMethodCallNode staticMethodCall(
- TypeName className,
- String methodName,
- List<ExpressionNode> arguments,
- TypeName type) {
- return new StaticMethodCallNode(className, methodName, arguments, type);
- }
-
- private final TypeName className;
- private final String methodName;
- private final List<ExpressionNode> arguments;
- private final TypeName type;
-
- public StaticMethodCallNode(
+ public static ExpressionNode staticMethodCall(
TypeName className,
String methodName,
List<ExpressionNode> arguments,
TypeName type) {
- this.className = className;
- this.methodName = methodName;
- this.arguments = arguments;
- this.type = type;
- }
-
- public TypeName getClassName() {
- return className;
- }
-
- public String getMethodName() {
- return methodName;
- }
-
- public List<ExpressionNode> getArguments() {
- return arguments;
- }
-
- public TypeName getType() {
- return type;
- }
-
- public MethodSignature signature() {
- return new MethodSignature(methodName, eagerMap(arguments, argument -> argument.getType()));
- }
-
- @Override
- public <T> T accept(ExpressionNodeMapper<T> visitor) {
- return visitor.visit(this);
- }
-
- @Override
- public ExpressionNode replaceExpressions(Function<ExpressionNode, ExpressionNode> replace) {
- return new StaticMethodCallNode(
- className,
- methodName,
- eagerMap(arguments, replace::apply),
- type);
- }
-
- @Override
- public String toString() {
- return "StaticMethodCallNode(className=" + className + ", methodName="
- + methodName + ", arguments=" + arguments + ", type=" + type
- + ")";
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result
- + ((arguments == null) ? 0 : arguments.hashCode());
- result = prime * result
- + ((className == null) ? 0 : className.hashCode());
- result = prime * result
- + ((methodName == null) ? 0 : methodName.hashCode());
- result = prime * result + ((type == null) ? 0 : type.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- StaticMethodCallNode other = (StaticMethodCallNode) obj;
- if (arguments == null) {
- if (other.arguments != null)
- return false;
- } else if (!arguments.equals(other.arguments))
- return false;
- if (className == null) {
- if (other.className != null)
- return false;
- } else if (!className.equals(other.className))
- return false;
- if (methodName == null) {
- if (other.methodName != null)
- return false;
- } else if (!methodName.equals(other.methodName))
- return false;
- if (type == null) {
- if (other.type != null)
- return false;
- } else if (!type.equals(other.type))
- return false;
- return true;
+ return MethodCallNode.methodCall(staticReceiver(className), methodName, arguments, type);
}
}