new version with WorkingCopy Management
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / compiler / ast / ListExpression.java
index 80f1887..a277078 100644 (file)
@@ -1,21 +1,18 @@
 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.
  * it could be list($v1,$v2), list(,$v2) ...
  * @author Matthieu Casanova
  */
-public class ListExpression extends Expression {
+public final class ListExpression extends Expression {
 
-  public String[] vars;
-  public Expression expression;
+  private final Expression[] vars;
+  private 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,37 @@ public class ListExpression extends Expression {
     return buff.toString();
   }
 
-           /**
+  /**
    * Get the variables from outside (parameters, globals ...)
-   * @return the variables from outside
+   *
+   * @param list the list where we will put variables
    */
-  public List getOutsideVariable() {
-    return new ArrayList();
-  }
+  public void getOutsideVariable(final List list) {}
 
   /**
    * get the modified variables.
-   * @return the variables from we change value
+   *
+   * @param list the list where we will put variables
    */
-  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
+   *
+   * @param list the list where we will put variables
    */
-  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;
   }
 }