Remove trailing parentheses from "new Constructor()" expressions. See http://code.google.com/p/google-web-toolkit/wiki/NewParenthesisRemovalOptimization
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@5685 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/js/JsToStringGenerationVisitor.java b/dev/core/src/com/google/gwt/dev/js/JsToStringGenerationVisitor.java
index 71df4d5..8b0b03e 100644
--- a/dev/core/src/com/google/gwt/dev/js/JsToStringGenerationVisitor.java
+++ b/dev/core/src/com/google/gwt/dev/js/JsToStringGenerationVisitor.java
@@ -76,6 +76,7 @@
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Set;
+import java.util.List;
import java.util.regex.Pattern;
/**
@@ -583,16 +584,22 @@
_rparen();
}
- _lparen();
- boolean sep = false;
- for (Object element : x.getArguments()) {
- JsExpression arg = (JsExpression) element;
- sep = _sepCommaOptSpace(sep);
- _parenPushIfCommaExpr(arg);
- accept(arg);
- _parenPopIfCommaExpr(arg);
+ /*
+ * If a constructor call has no arguments, it may simply be
+ * replaced with "new Constructor" with no parentheses.
+ */
+ List<JsExpression> args = x.getArguments();
+ if (args.size() > 0) {
+ _lparen();
+ boolean sep = false;
+ for (JsExpression arg : args) {
+ sep = _sepCommaOptSpace(sep);
+ _parenPushIfCommaExpr(arg);
+ accept(arg);
+ _parenPopIfCommaExpr(arg);
+ }
+ _rparen();
}
- _rparen();
return false;
}