package x10.wala.loader; import com.ibm.wala.cast.loader.AstFunctionClass; import com.ibm.wala.cast.tree.CAstSourcePositionMap; import com.ibm.wala.classLoader.IClassLoader; import com.ibm.wala.classLoader.IMethod; import com.ibm.wala.ipa.cha.IClassHierarchy; import com.ibm.wala.types.Selector; import com.ibm.wala.types.TypeReference; import com.ibm.wala.util.debug.Assertions; // TODO refactor to share code with X10AsyncObject public class X10ClosureObject extends AstFunctionClass { private final IClassHierarchy cha; public X10ClosureObject(TypeReference reference, IClassLoader loader, CAstSourcePositionMap.Position fileName, IClassHierarchy cha) { super(reference, loader, fileName); this.cha= cha; } @Override public IMethod getMethod(Selector selector) { if (functionBody.getSelector().equals(selector)) { return functionBody; } else { return null; } } public void setCodeBody(IMethod method) { Assertions.productionAssertion(method.getReference().getDeclaringClass().equals(getReference())); functionBody= method; } public String toString() { return "Closure@" + getSourcePosition(); } public IClassHierarchy getClassHierarchy() { return cha; } }