package net.sourceforge.phpdt.internal.compiler.ast; import java.util.List; import net.sourceforge.phpdt.internal.compiler.parser.Outlineable; import net.sourceforge.phpdt.internal.ui.PHPUiImages; import net.sourceforge.phpeclipse.PHPeclipsePlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.text.Position; import test.PHPParserSuperclass; /** * A GlobalStatement statement in php. * @author Matthieu Casanova */ public class GlobalStatement extends Statement implements Outlineable { /** An array of the variables called by this global statement. */ public AbstractVariable[] variables; private Object parent; private Position position; public GlobalStatement(final Object parent, final AbstractVariable[] variables, final int sourceStart, final int sourceEnd) { super(sourceStart, sourceEnd); this.variables = variables; this.parent = parent; position = new Position(sourceStart, sourceEnd); } public String toString() { final StringBuffer buff = new StringBuffer("global ");//$NON-NLS-1$ for (int i = 0; i < variables.length; i++) { if (i != 0) { buff.append(", ");//$NON-NLS-1$ } buff.append(variables[i].toStringExpression()); } return buff.toString(); } public String toString(final int tab) { return tabString(tab) + toString(); } /** * This will return the image for the outline of the object. * @return an image */ public ImageDescriptor getImage() { return PHPUiImages.DESC_INC; } public Object getParent() { return parent; } public Position getPosition() { return position; } /** * Get the variables from outside (parameters, globals ...) */ public void getOutsideVariable(final List list) { for (int i = 0; i < variables.length; i++) { variables[i].getUsedVariable(list); } } /** * get the modified variables. */ public void getModifiedVariable(final List list) { } /** * Get the variables used. */ public void getUsedVariable(final List list) { } /** * We will analyse the code. * if we have in globals a special variable it will be reported as a warning. * @see Variable#SPECIAL_VARS */ public void analyzeCode() { for (int i = 0; i < variables.length; i++) { if (arrayContains(Variable.SPECIAL_VARS, variables[i].getName())) { try { PHPParserSuperclass.setMarker("warning, you shouldn't request " + variables[i].getName() + " as global", variables[i].sourceStart, variables[i].sourceEnd, PHPParserSuperclass.WARNING, ""); } catch (CoreException e) { PHPeclipsePlugin.log(e); } } } } }