package code.ast;
import java.util.List;
/**
* Represents a super method invocation in AST (Abstract Syntax Tree)
*
* @author s-yamagiwa
* @apiNote Type arguments aren't supported because it isn't necessary in DTRAM code generator.
*/
public class SuperMethodInvocation extends Expression {
private String methodName;
private List<Expression> arguments;
public SuperMethodInvocation(String methodName) {
this(methodName, List.of());
}
public SuperMethodInvocation(String methodName, List<Expression> arguments) {
this.methodName = methodName;
this.arguments = arguments;
}
public String getMethodName() {
return methodName;
}
public void setMethodName(String methodName) {
this.methodName = methodName;
}
public List<Expression> getArguments() {
return arguments;
}
public void setArguments(List<Expression> arguments) {
this.arguments = arguments;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("super.").append(methodName).append("(");
if (!arguments.isEmpty()) {
for (int i = 0; i < arguments.size(); i++) {
Expression argument = arguments.get(i);
builder.append(argument.toString());
if (i < arguments.size() - 1) {
builder.append(", ");
}
}
}
builder.append(");");
return builder.toString();
}
}