Fixes issue #1761 by adding parentheses around the qualifier of an invocation when appropriate.
Note: I screwed up this check-in and fixed it in r1798.
Found by: mmastrac
Patch by: sgross
Review by: me
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@1794 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 0bba5c0..524b69f 100644
--- a/dev/core/src/com/google/gwt/dev/js/JsToStringGenerationVisitor.java
+++ b/dev/core/src/com/google/gwt/dev/js/JsToStringGenerationVisitor.java
@@ -524,7 +524,10 @@
@Override
public boolean visit(JsInvocation x, JsContext<JsExpression> ctx) {
- accept(x.getQualifier());
+ JsExpression qualifier = x.getQualifier();
+// _parenPush(x, qualifier, false);
+ accept(qualifier);
+// _parenPop(x, qualifier, false);
_lparen();
boolean sep = false;
diff --git a/dev/core/test/com/google/gwt/dev/js/JsToStringGenerationVisitorAccuracyTest.java b/dev/core/test/com/google/gwt/dev/js/JsToStringGenerationVisitorAccuracyTest.java
index 3e63efb..fe4041a 100644
--- a/dev/core/test/com/google/gwt/dev/js/JsToStringGenerationVisitorAccuracyTest.java
+++ b/dev/core/test/com/google/gwt/dev/js/JsToStringGenerationVisitorAccuracyTest.java
@@ -51,6 +51,10 @@
doTest("(new (new (a(({a : 'b', c : 'd'}),[1,2,3,x,y,z]))())())()");
}
+ public void testConditionalInvocation() throws Exception {
+ doTest("(flag?f:g)()");
+ }
+
public void testConstructionInvocation() throws Exception {
doTest("(new a())()");
}
@@ -117,7 +121,7 @@
private List<JsStatement> parse(List<JsStatement> expected, boolean compact)
throws Exception {
TextOutput text = new DefaultTextOutput(compact);
- JsVisitor generator = new JsToStringGenerationVisitor(text);
+ JsVisitor generator = new JsSourceGenerationVisitor(text);
generator.acceptList(expected);
return parser.parse(new JsProgram().getScope(), new StringReader(
text.toString()), 0);