/******************************************************************************* * Copyright (c) 2009 IBM Corporation and others. * 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: * IBM Corporation - initial API and implementation * Zend Technologies *******************************************************************************/ package org.eclipse.php.core.compiler.ast.nodes; import org.eclipse.dltk.ast.ASTNode; import org.eclipse.dltk.ast.ASTVisitor; import org.eclipse.dltk.ast.expressions.CallArgumentsList; import org.eclipse.dltk.ast.expressions.CallExpression; import org.eclipse.dltk.ast.references.SimpleReference; import org.eclipse.dltk.utils.CorePrinter; import org.eclipse.php.internal.core.compiler.ast.visitor.ASTPrintVisitor; public class PHPCallExpression extends CallExpression implements Dereferencable { public PHPCallExpression(int start, int end, ASTNode receiver, String name, CallArgumentsList args) { super(start, end, receiver, name, args); } public PHPCallExpression(int start, int end, ASTNode receiver, SimpleReference name, CallArgumentsList args) { super(start, end, receiver, name, args); } public PHPCallExpression(ASTNode receiver, String name, CallArgumentsList args) { super(receiver, name, args); } public void setReceiver(ASTNode receiver) { this.receiver = receiver; } public void traverse(ASTVisitor pVisitor) throws Exception { if (pVisitor.visit(this)) { if (receiver != null) { receiver.traverse(pVisitor); } getCallName().traverse(pVisitor); if (getArgs() != null) { getArgs().traverse(pVisitor); } pVisitor.endvisit(this); } } public int getKind() { return ASTNodeKinds.METHOD_INVOCATION; } /** * We don't print anything - we use {@link ASTPrintVisitor} instead */ public final void printNode(CorePrinter output) { } public String toString() { return ASTPrintVisitor.toXMLString(this); } }