Changes:
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / compiler / ast / ListExpression.java
index 80f1887..425d0f3 100644 (file)
@@ -1,9 +1,6 @@
 package net.sourceforge.phpdt.internal.compiler.ast;
 
-import net.sourceforge.phpdt.internal.compiler.ast.declarations.VariableUsage;
-
 import java.util.List;
-import java.util.ArrayList;
 
 /**
  * A list expression.
@@ -12,10 +9,10 @@ import java.util.ArrayList;
  */
 public class ListExpression extends Expression {
 
-  public String[] vars;
+  public Expression[] vars;
   public Expression expression;
 
-  public ListExpression(final String[] vars,
+  public ListExpression(final Expression[] vars,
                         final Expression expression,
                         final int sourceStart,
                         final int sourceEnd) {
@@ -24,7 +21,7 @@ public class ListExpression extends Expression {
     this.expression = expression;
   }
 
-  public ListExpression(final String[] vars,
+  public ListExpression(final Expression[] vars,
                         final int sourceStart,
                         final int sourceEnd) {
     super(sourceStart, sourceEnd);
@@ -38,12 +35,11 @@ public class ListExpression extends Expression {
   public String toStringExpression() {
     final StringBuffer buff = new StringBuffer("list(");
     for (int i = 0; i < vars.length; i++) {
-      final String var = vars[i];
       if (i != 0) {
         buff.append(", ");
       }
-      if (var != null) {
-        buff.append(var);
+      if (vars[i] != null) {
+        buff.append(vars[i].toStringExpression());
       }
     }
     if (expression != null) {
@@ -53,38 +49,32 @@ public class ListExpression extends Expression {
     return buff.toString();
   }
 
-           /**
+  /**
    * Get the variables from outside (parameters, globals ...)
-   * @return the variables from outside
    */
-  public List getOutsideVariable() {
-    return new ArrayList();
+  public void getOutsideVariable(final List list) {
   }
 
   /**
    * get the modified variables.
-   * @return the variables from we change value
    */
-  public List getModifiedVariable() {
-    final ArrayList list = new ArrayList();
+  public void getModifiedVariable(final List list) {
     for (int i = 0; i < vars.length; i++) {
-      list.add(new VariableUsage(vars[i],sourceStart));
+      if (vars[i] != null) {
+        vars[i].getUsedVariable(list);
+      }
     }
     if (expression != null) {
-      list.addAll(expression.getModifiedVariable());
+      expression.getModifiedVariable(list);
     }
-    return list;
   }
 
   /**
    * Get the variables used.
-   * @return the variables used
    */
-  public List getUsedVariable() {
-    final ArrayList list = new ArrayList();
+  public void getUsedVariable(final List list) {
     if (expression != null) {
-      list.addAll(expression.getUsedVariable());
+      expression.getUsedVariable(list);
     }
-    return list;
   }
 }