From 538ff9e32c4b0a577db1e078c55d569c72ed9325 Mon Sep 17 00:00:00 2001 From: Roberto Lublinerman Date: Sat, 14 Nov 2015 02:04:38 +0000 Subject: [PATCH] Revert "Make object literal property names emitted consistently." This reverts commit 5d65009d83fc333d8b8c5fc558f1393b376d542e. Change-Id: I68795d5a28836abc8db1438aa5907761964199da --- .../dev/js/JsToStringGenerationVisitor.java | 19 ++++++++++++++++--- .../gwt/dev/js/JsLiteralInternerTest.java | 6 +++--- ...tringGenerationVisitorConcisenessTest.java | 6 +++--- 3 files changed, 22 insertions(+), 9 deletions(-) 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 92ca5876e6a..1f18c163a44 100644 --- a/dev/core/src/com/google/gwt/dev/js/JsToStringGenerationVisitor.java +++ b/dev/core/src/com/google/gwt/dev/js/JsToStringGenerationVisitor.java @@ -706,11 +706,24 @@ public boolean visit(JsNumericEntry x, JsContext ctx) { public boolean visit(JsObjectLiteral x, JsContext ctx) { _lbrace(); boolean sep = false; - for (JsPropertyInitializer element : x.getPropertyInitializers()) { + for (Object element : x.getPropertyInitializers()) { sep = _sepCommaOptSpace(sep); - accept(element.getLabelExpr()); + JsPropertyInitializer propInit = (JsPropertyInitializer) element; + printLabel : { + JsExpression labelExpr = propInit.getLabelExpr(); + // labels can be either string, integral, or decimal literals + if (labelExpr instanceof JsStringLiteral) { + String propName = ((JsStringLiteral) labelExpr).getValue(); + if (JsUtils.isValidJsIdentifier(propName) && !JsProtectedNames.isKeyword(propName)) { + // Print unquoted if the property name is a valid identifier. + p.print(propName); + break printLabel; + } + } + accept(labelExpr); + } _colon(); - JsExpression valueExpr = element.getValueExpr(); + JsExpression valueExpr = propInit.getValueExpr(); _parenPushIfCommaExpr(valueExpr); accept(valueExpr); _parenPopIfCommaExpr(valueExpr); diff --git a/dev/core/test/com/google/gwt/dev/js/JsLiteralInternerTest.java b/dev/core/test/com/google/gwt/dev/js/JsLiteralInternerTest.java index 649246e78d8..c6e631e11cf 100644 --- a/dev/core/test/com/google/gwt/dev/js/JsLiteralInternerTest.java +++ b/dev/core/test/com/google/gwt/dev/js/JsLiteralInternerTest.java @@ -67,14 +67,14 @@ public void testSimpleIntern() throws Exception { checkTranslation( String.format("var x={a:%1$s,b:%2$s}, y={a:%1$s,b:%2$s}, z={a:%1$s,b:%3$s};", ONES, TWOS, THREES), - String.format("var $intern_0={'a':%1$s,'b':%2$s};var x=$intern_0,y=$intern_0,z={'a':%1$s,'b':%3$s};", + String.format("var $intern_0={a:%1$s,b:%2$s};var x=$intern_0,y=$intern_0,z={a:%1$s,b:%3$s};", ONES, TWOS, THREES)); checkTranslation( String.format("var x={a:%1$s,b:%2$s}, y={a:%1$s,b:%2$s}, z={a:%1$s,b:%3$s};", ONES, TWOS, THREES), - String.format("var $intern_0=%1$s,$intern_1=%2$s;var x={'a':$intern_0,'b':$intern_1}," + - "y={'a':$intern_0,'b':$intern_1},z={'a':$intern_0,'b':%3$s};", ONES, TWOS, THREES), false); + String.format("var $intern_0=%1$s,$intern_1=%2$s;var x={a:$intern_0,b:$intern_1}," + + "y={a:$intern_0,b:$intern_1},z={a:$intern_0,b:%3$s};", ONES, TWOS, THREES), false); // Strings checkTranslation( diff --git a/dev/core/test/com/google/gwt/dev/js/JsToStringGenerationVisitorConcisenessTest.java b/dev/core/test/com/google/gwt/dev/js/JsToStringGenerationVisitorConcisenessTest.java index f37d7f0b9a8..7bd9cd5fae4 100644 --- a/dev/core/test/com/google/gwt/dev/js/JsToStringGenerationVisitorConcisenessTest.java +++ b/dev/core/test/com/google/gwt/dev/js/JsToStringGenerationVisitorConcisenessTest.java @@ -53,12 +53,12 @@ public void testIncrement() throws Exception { } public void testObjectLiteralAssignment() throws Exception { - assertEquals("var x={'a':b=2,'c':d}", parse("var x = {a : (b = 2), c : d}")); + assertEquals("var x={a:b=2,c:d}", parse("var x = {a : (b = 2), c : d}")); } public void testObjectLiteralConditional() throws Exception { // the parentheses are not required around the conditional - assertEquals("var x={'a':b?c:d,'e':f}", + assertEquals("var x={a:b?c:d,e:f}", parse("var x = {a : (b ? c : d), e : f}")); } @@ -66,7 +66,7 @@ public void testObjectLiteralDeclarationConcise() throws Exception { // quotes are not necessary around many property variables in object // literals assertEquals("var x={1:'b'}", parse("var x = {1 : 'b'}")); - assertEquals("var x={'$a_':'b'}", parse("var x = {'$a_' : 'b'}")); + assertEquals("var x={$a_:'b'}", parse("var x = {'$a_' : 'b'}")); assertEquals("var x={1.2:'b'}", parse("var x = {1.2 : 'b'}")); }