blob: a098e8a1fd4ac0af16ec2c8140d494e3c5e5c86c [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010 xored software, Inc.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* xored software, Inc. - initial API and Implementation (Alex Panchenko)
*******************************************************************************/
package org.eclipse.dltk.javascript.core.tests.structure;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.dltk.compiler.CharOperation;
import org.eclipse.dltk.compiler.IElementRequestor.MethodInfo;
public class Method extends Member {
private String type;
private final List<Parameter> parameters = new ArrayList<Parameter>();
public Method(String name, Parameter... params) {
super(name);
for (Parameter param : params) {
parameters.add(param);
}
}
/**
* @param info
*/
public Method(MethodInfo mi) {
super(mi.name);
type = mi.returnType;
if (mi.parameterNames != null) {
for (String paramName : mi.parameterNames) {
final Parameter parameter = new Parameter(paramName);
if (mi.parameterTypes != null
&& parameters.size() < mi.parameterTypes.length) {
parameter.setType(mi.parameterTypes[parameters.size()]);
}
parameters.add(parameter);
}
}
}
public Method setType(String type) {
this.type = type;
return this;
}
public String getType() {
return type;
}
@Override
protected String describeMember() {
StringBuilder sb = new StringBuilder();
sb.append(super.describeMember());
sb.append("(");
for (int i = 0; i < parameters.size(); ++i) {
if (i != 0) {
sb.append(",");
}
sb.append(parameters.get(i));
}
sb.append(")");
if (type != null) {
sb.append(":").append(type);
}
return sb.toString();
}
@Override
protected boolean equals0(Member other) {
return super.equals0(other)
&& CharOperation.equals(type, ((Method) other).type)
&& parameters.equals(((Method) other).parameters);
}
}