package org.jetbrains.plugins.ruby.motion.bridgesupport; import com.intellij.openapi.util.Pair; import java.util.ArrayList; import java.util.List; /** * @author Dennis.Ushakov */ public class Function extends Sealable { private String myName; private final boolean myVariadic; private final boolean myClassMethod; private String myReturnValue; private List<Pair<String, String>> myArguments = new ArrayList<>(); public Function(final String name, final boolean isVariadic, final boolean isClassMethod) { myName = name; myVariadic = isVariadic; myClassMethod = isClassMethod; } public String getName() { return myName; } public String getReturnValue() { return myReturnValue; } public List<Pair<String, String>> getArguments() { return myArguments; } void addArgument(final String name, final String declaredType) { checkSeal(); myArguments.add(Pair.create(name, declaredType)); } void setReturnValue(String returnValue) { checkSeal(); myReturnValue = returnValue; } public boolean isVariadic() { return myVariadic; } public boolean isClassMethod() { return myClassMethod; } public boolean isId() { return "id".equals(getReturnValue()) || "instancetype".equals(getReturnValue()); } }