Revert "Make object literal property names emitted consistently."

This reverts commit 5d65009d83fc333d8b8c5fc558f1393b376d542e.

Change-Id: I68795d5a28836abc8db1438aa5907761964199da
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 92ca587..1f18c16 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(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 649246e..c6e631e 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 @@
     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 f37d7f0..7bd9cd5 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 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 @@
     // 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'}"));
   }