X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/Variable.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/Variable.java index bd3c0fd..add462f 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/Variable.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/Variable.java @@ -4,7 +4,6 @@ import net.sourceforge.phpdt.internal.compiler.ast.declarations.VariableUsage; import java.util.List; import java.util.ArrayList; -import java.util.Arrays; /** * A variable. @@ -19,6 +18,9 @@ public class Variable extends AbstractVariable { /** A variable inside ($$varname). */ private AbstractVariable variable; + /** the variable is defined like this ${expression} */ + private Expression expression; + public static final String _GET = "_GET"; public static final String _POST = "_POST"; public static final String _REQUEST = "_REQUEST"; @@ -69,6 +71,19 @@ public class Variable extends AbstractVariable { } /** + * Create a special variable ($$toto for example). + * @param expression the variable contained + * @param sourceStart the starting position + * @param sourceEnd the ending position + */ + public Variable(final Expression expression, + final int sourceStart, + final int sourceEnd) { + super(sourceStart, sourceEnd); + this.expression = expression; + } + + /** * Return the expression as String. * @return the expression */ @@ -77,10 +92,13 @@ public class Variable extends AbstractVariable { } public String getName() { - if (variable == null) { + if (name != null) { return name; } - return variable.toStringExpression(); + if (variable != null) { + return variable.toStringExpression(); + } + return "{" + expression.toStringExpression() + "}"; } /** @@ -105,10 +123,12 @@ public class Variable extends AbstractVariable { */ public List getUsedVariable() { final String varName; - if (name == null) { + if (name != null) { + varName = name; + } else if (variable != null) { varName = variable.getName(); } else { - varName = name; + varName = expression.toStringExpression();//todo : do a better thing like evaluate this ?? } if (arrayContains(SPECIAL_VARS, name)) { return new ArrayList(1);