You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2015/12/22 07:14:26 UTC

git commit: [flex-falcon] [refs/heads/develop] - FLEX-34987 fix parens for ternary

Repository: flex-falcon
Updated Branches:
  refs/heads/develop 34160e46f -> 3ee42de4b


FLEX-34987 fix parens for ternary


Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/3ee42de4
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/3ee42de4
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/3ee42de4

Branch: refs/heads/develop
Commit: 3ee42de4bc8ffefcc8df5a09bf2739ed33db6194
Parents: 34160e4
Author: Alex Harui <ah...@apache.org>
Authored: Mon Dec 21 22:14:19 2015 -0800
Committer: Alex Harui <ah...@apache.org>
Committed: Mon Dec 21 22:14:19 2015 -0800

----------------------------------------------------------------------
 .../internal/codegen/as/TestParenthesis.java        | 11 +++++++++++
 .../compiler/internal/codegen/as/ASEmitter.java     | 16 ++++++----------
 2 files changed, 17 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/3ee42de4/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/as/TestParenthesis.java
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/as/TestParenthesis.java b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/as/TestParenthesis.java
index dd6f2e5..5674dd9 100644
--- a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/as/TestParenthesis.java
+++ b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/as/TestParenthesis.java
@@ -21,6 +21,7 @@ package org.apache.flex.compiler.internal.codegen.as;
 
 import org.apache.flex.compiler.internal.test.ASTestBase;
 import org.apache.flex.compiler.tree.as.IBinaryOperatorNode;
+import org.apache.flex.compiler.tree.as.IReturnNode;
 import org.apache.flex.compiler.tree.as.IVariableNode;
 import org.junit.Test;
 
@@ -84,4 +85,14 @@ public class TestParenthesis extends ASTestBase
         asBlockWalker.visitBinaryOperator(node);
         assertOut("a = '' + 2 + '' + '' * 4");
     }
+    
+    @Test
+    public void testParentheses_Ternary()
+    {
+        IReturnNode node = (IReturnNode) getNode(
+        		"return \"a \" + (a < b ? \"<\" : \">=\") + \" b\";", IReturnNode.class);
+        asBlockWalker.visitReturn(node);
+        assertOut("return \"a \" + (a < b ? \"<\" : \">=\") + \" b\"");
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/3ee42de4/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASEmitter.java
index 5150917..8223ee9 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASEmitter.java
@@ -74,6 +74,7 @@ import org.apache.flex.compiler.tree.as.INamespaceAccessExpressionNode;
 import org.apache.flex.compiler.tree.as.INamespaceNode;
 import org.apache.flex.compiler.tree.as.INumericLiteralNode;
 import org.apache.flex.compiler.tree.as.IObjectLiteralValuePairNode;
+import org.apache.flex.compiler.tree.as.IOperatorNode;
 import org.apache.flex.compiler.tree.as.IPackageNode;
 import org.apache.flex.compiler.tree.as.IParameterNode;
 import org.apache.flex.compiler.tree.as.IReturnNode;
@@ -1352,6 +1353,8 @@ public class ASEmitter implements IASEmitter, IEmitter
     @Override
     public void emitTernaryOperator(ITernaryOperatorNode node)
     {
+    	if (ASNodeUtils.hasParenOpen((IOperatorNode) node))
+    		write(ASEmitterTokens.PAREN_OPEN);
         getWalker().walk(node.getConditionalNode());
         write(ASEmitterTokens.SPACE);
         writeToken(ASEmitterTokens.TERNARY);
@@ -1359,6 +1362,8 @@ public class ASEmitter implements IASEmitter, IEmitter
         write(ASEmitterTokens.SPACE);
         writeToken(ASEmitterTokens.COLON);
         getWalker().walk(node.getRightOperandNode());
+        if (ASNodeUtils.hasParenClose((IOperatorNode) node))
+            write(ASEmitterTokens.PAREN_CLOSE);
     }
 
     @Override
@@ -1401,16 +1406,7 @@ public class ASEmitter implements IASEmitter, IEmitter
         {
             write(node.getOperator().getOperatorText());
             IExpressionNode opNode = node.getOperandNode();
-            if (opNode instanceof TernaryOperatorNode)
-            {
-                write(ASEmitterTokens.PAREN_OPEN);
-                getWalker().walk(node.getOperandNode());
-                write(ASEmitterTokens.PAREN_CLOSE);
-            }
-            else
-            {
-                getWalker().walk(node.getOperandNode());
-            }
+            getWalker().walk(node.getOperandNode());
         }
 
         else if (node.getNodeID() == ASTNodeID.Op_PostIncrID