Added unary prefix '+' operator to AST to fix, Issue #3942. Modified Js code-gen to insert spaces in appropriate places to maintain correct precedence. (e.g. a+ +b should not become a++b)






git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@5960 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/js/JsParser.java b/dev/core/src/com/google/gwt/dev/js/JsParser.java
index 7fdde5b..49fb876 100644
--- a/dev/core/src/com/google/gwt/dev/js/JsParser.java
+++ b/dev/core/src/com/google/gwt/dev/js/JsParser.java
@@ -1197,8 +1197,13 @@
         return mapPrefixOperation(JsUnaryOperator.TYPEOF, unOp);
 
       case TokenStream.ADD:
-        // Pretend we didn't see it.
-        return mapExpression(unOp.getFirstChild());
+        if (unOp.getFirstChild().getType() != TokenStream.NUMBER) {
+          return mapPrefixOperation(JsUnaryOperator.POS, unOp);
+        } else {
+          // Pretend we didn't see it.
+          return mapExpression(unOp.getFirstChild());
+        }
+
       case TokenStream.VOID:
         return mapPrefixOperation(JsUnaryOperator.VOID, unOp);
 
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 78dc37c..7cd109a 100644
--- a/dev/core/src/com/google/gwt/dev/js/JsToStringGenerationVisitor.java
+++ b/dev/core/src/com/google/gwt/dev/js/JsToStringGenerationVisitor.java
@@ -1188,7 +1188,8 @@
       JsOperator op2 = ((JsPrefixOperation) arg).getOperator();
       return (op == JsBinaryOperator.SUB || op == JsUnaryOperator.NEG)
           && (op2 == JsUnaryOperator.DEC || op2 == JsUnaryOperator.NEG)
-          || (op == JsBinaryOperator.ADD && op2 == JsUnaryOperator.INC);
+          || (op == JsBinaryOperator.ADD || op == JsUnaryOperator.POS)
+          && (op2 == JsUnaryOperator.INC || op2 == JsUnaryOperator.POS);
     }
     if (arg instanceof JsNumberLiteral) {
       JsNumberLiteral literal = (JsNumberLiteral) arg;