X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/VariableDeclaration.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/VariableDeclaration.java index 9fafb2f..6b9facd 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/VariableDeclaration.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/VariableDeclaration.java @@ -1,7 +1,6 @@ package net.sourceforge.phpdt.internal.compiler.ast; import net.sourceforge.phpdt.internal.compiler.parser.Outlineable; -import net.sourceforge.phpdt.internal.compiler.ast.declarations.VariableUsage; import net.sourceforge.phpdt.internal.ui.PHPUiImages; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.text.Position; @@ -13,7 +12,7 @@ import java.util.ArrayList; * A variable declaration. * @author Matthieu Casanova */ -public class VariableDeclaration extends AbstractVariableDeclaration implements Outlineable { +public class VariableDeclaration extends Expression implements Outlineable { public static final int EQUAL = 0; public static final int PLUS_EQUAL = 1; @@ -29,6 +28,7 @@ public class VariableDeclaration extends AbstractVariableDeclaration implements public static final int LSHIFT_EQUAL = 11; public static final int RSIGNEDSHIFT_EQUAL = 12; + protected AbstractVariable variable; /** The value for variable initialization. */ public Expression initialization; @@ -38,19 +38,22 @@ public class VariableDeclaration extends AbstractVariableDeclaration implements private Position position; private int operator; + /** * Create a variable. + * @param variable the name of the variable * @param initialization the initialization - * @param name the name of the variable + * @param operator the assign operator * @param sourceStart the start point */ public VariableDeclaration(final Object parent, - final char[] name, + final AbstractVariable variable, final Expression initialization, final int operator, final int sourceStart) { - super(name, sourceStart, initialization.sourceEnd); + super(sourceStart, initialization.sourceEnd); this.initialization = initialization; + this.variable = variable; this.operator = operator; this.parent = parent; position = new Position(sourceStart, sourceEnd); @@ -58,14 +61,15 @@ public class VariableDeclaration extends AbstractVariableDeclaration implements /** * Create a variable. - * @param name the name of the variable + * @param variable a variable (in case of $$variablename) * @param sourceStart the start point */ public VariableDeclaration(final Object parent, - final char[] name, + final AbstractVariable variable, final int sourceStart, final int sourceEnd) { - super(name, sourceStart, sourceEnd); + super(sourceStart, sourceEnd); + this.variable = variable; this.parent = parent; } @@ -76,29 +80,31 @@ public class VariableDeclaration extends AbstractVariableDeclaration implements /** * Create a variable. * @param initialization the initialization - * @param name the name of the variable + * @param variable a variable (in case of $$variablename) * @param sourceStart the start point */ - public VariableDeclaration(final char[] name, + public VariableDeclaration(final AbstractVariable variable, final Expression initialization, final int operator, final int sourceStart) { - super(name, sourceStart, initialization.sourceEnd); + super(sourceStart, initialization.sourceEnd); + this.variable = variable; this.initialization = initialization; this.operator = operator; } /** * Create a variable. - * @param name the name of the variable + * @param variable a variable (in case of $$variablename) * @param sourceStart the start point */ - public VariableDeclaration(final char[] name, + public VariableDeclaration(final AbstractVariable variable, final int sourceStart) { - super(name, sourceStart, sourceStart + name.length); + super(sourceStart, variable.sourceEnd); + this.variable = variable; } - /** + /** * Return the operator as String. * @return the operator */ @@ -141,11 +147,11 @@ public class VariableDeclaration extends AbstractVariableDeclaration implements public String toStringExpression() { final StringBuffer buff; if (reference) { - buff = new StringBuffer("&$"); //$NON-NLS-1$ + buff = new StringBuffer("&"); //$NON-NLS-1$ } else { - buff = new StringBuffer("$");//$NON-NLS-1$ + buff = new StringBuffer();//$NON-NLS-1$ } - buff.append(name); + buff.append(variable.toStringExpression()); if (initialization != null) { buff.append(operatorToString()); //$NON-NLS-1$ buff.append(initialization.toStringExpression()); @@ -178,7 +184,7 @@ public class VariableDeclaration extends AbstractVariableDeclaration implements * @return the name of the String */ public String name() { - return new String(name); + return variable.getName(); } /** @@ -186,7 +192,7 @@ public class VariableDeclaration extends AbstractVariableDeclaration implements * @return the variables from outside */ public List getOutsideVariable() { - return new ArrayList(); + return new ArrayList(1); } /** @@ -194,8 +200,7 @@ public class VariableDeclaration extends AbstractVariableDeclaration implements * @return the variables from we change value */ public List getModifiedVariable() { - final ArrayList list = new ArrayList(); - list.add(new VariableUsage(new String(name), sourceStart)); + final List list = variable.getUsedVariable(); if (initialization != null) { list.addAll(initialization.getModifiedVariable()); } @@ -207,10 +212,9 @@ public class VariableDeclaration extends AbstractVariableDeclaration implements * @return the variables used */ public List getUsedVariable() { - final ArrayList list = new ArrayList(); if (initialization != null) { - list.addAll(initialization.getModifiedVariable());//yes it's getModified variable (in a variable declaration $a = $b, $a is modified, event if you have only $a and no initialization + return initialization.getModifiedVariable();//yes it's getModified variable (in a variable declaration $a = $b, $a is modified, event if you have only $a and no initialization } - return list; + return new ArrayList(1); } }