Some minor changes
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / compiler / ast / ArgumentDeclaration.java
index cffc971..c961dd1 100644 (file)
@@ -3,42 +3,66 @@ package net.sourceforge.phpdt.internal.compiler.ast;
 
 /**
  * An argument declaration.
+ * 
  * @author Matthieu Casanova
  */
-public class ArgumentDeclaration extends VariableDeclaration {
-
-  public boolean reference;
+public final class ArgumentDeclaration extends VariableDeclaration {
 
   /**
    * Create an argument.
+   * 
+   * @param name           the name
+   * @param reference      the variable is a reference ?
    * @param initialization the initialization
-   * @param name the name
+   * @param sourceStart    the start point
+   */
+  public ArgumentDeclaration(final Variable name,
+                             final boolean reference,
+                             final Expression initialization,
+                             final int sourceStart) {
+    super(name, initialization, VariableDeclaration.EQUAL, sourceStart);
+    this.reference = reference;
+  }
+
+  /**
+   * Create an argument.
+   * 
+   * @param name        the name
+   * @param reference   the variable is a reference ?
    * @param sourceStart the start point
    */
-  public ArgumentDeclaration(char[] name,
-                             Expression initialization,
-                             int sourceStart,
-                             boolean reference) {
-    super(name, initialization, sourceStart);
+  public ArgumentDeclaration(final Variable name,
+                             final boolean reference,
+                             final int sourceStart) {
+    super(name, sourceStart);
     this.reference = reference;
   }
 
   /**
    * Return the expression as String.
+   * 
    * @return the expression
    */
   public String toStringExpression() {
-    final StringBuffer buff;
-    if (reference) {
-      buff = new StringBuffer("&$");
+    if (initialization == null) {
+      if (reference) {
+        return '&' + variable.toStringExpression();
+      } else {
+        return variable.toStringExpression();
+      }
     } else {
-      buff = new StringBuffer("$");
-    }
-    buff.append(name);
-    if (initialization != null) {
+      final String variableString = variable.toStringExpression();
+      final String initializationString = initialization.toStringExpression();
+      final StringBuffer buff = new StringBuffer(4 +
+                                                 variableString.length() +
+                                                 initializationString.length());
+      if (reference) {
+        buff.append('&');
+      }
+      buff.append(variableString);
       buff.append(" = ");
-      buff.append(initialization.toStringExpression());
+      buff.append(initializationString);
+      return buff.toString();
     }
-    return buff.toString();
   }
 }