You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by jo...@apache.org on 2016/04/06 01:56:35 UTC

[17/33] git commit: [flex-falcon] [refs/heads/develop] - emit source map for ternary operator

emit source map for ternary operator


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

Branch: refs/heads/develop
Commit: e89e3756db4d404d8ecface3e252a10f46c37909
Parents: 673e088
Author: Josh Tynjala <jo...@apache.org>
Authored: Wed Mar 30 15:09:34 2016 -0700
Committer: Josh Tynjala <jo...@apache.org>
Committed: Wed Mar 30 15:09:34 2016 -0700

----------------------------------------------------------------------
 .../compiler/internal/codegen/js/JSEmitter.java | 31 ++++++++++++++++++++
 1 file changed, 31 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e89e3756/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSEmitter.java
index 72ceae9..aae2cfd 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSEmitter.java
@@ -49,15 +49,18 @@ import org.apache.flex.compiler.tree.as.ILiteralContainerNode;
 import org.apache.flex.compiler.tree.as.ILiteralNode;
 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;
 import org.apache.flex.compiler.tree.as.ITerminalNode;
+import org.apache.flex.compiler.tree.as.ITernaryOperatorNode;
 import org.apache.flex.compiler.tree.as.ITypeNode;
 import org.apache.flex.compiler.tree.as.ITypedExpressionNode;
 import org.apache.flex.compiler.tree.as.IUnaryOperatorNode;
 import org.apache.flex.compiler.tree.as.IVariableNode;
 import org.apache.flex.compiler.tree.as.IWhileLoopNode;
+import org.apache.flex.compiler.utils.ASNodeUtils;
 import org.apache.flex.compiler.visitor.IBlockWalker;
 
 import com.google.debugging.sourcemap.FilePosition;
@@ -374,6 +377,34 @@ public class JSEmitter extends ASEmitter implements IJSEmitter
     }
 
     @Override
+    public void emitTernaryOperator(ITernaryOperatorNode node)
+    {
+        if (ASNodeUtils.hasParenOpen((IOperatorNode) node))
+            write(ASEmitterTokens.PAREN_OPEN);
+        
+        IExpressionNode conditionalNode = node.getConditionalNode();
+        getWalker().walk(conditionalNode);
+        
+        startMapping(node, conditionalNode.getAbsoluteEnd() - node.getAbsoluteStart());
+        write(ASEmitterTokens.SPACE);
+        writeToken(ASEmitterTokens.TERNARY);
+        endMapping(node);
+        
+        IExpressionNode leftOperandNode = node.getLeftOperandNode();
+        getWalker().walk(leftOperandNode);
+
+        startMapping(node, leftOperandNode.getAbsoluteEnd() - node.getAbsoluteStart());
+        write(ASEmitterTokens.SPACE);
+        writeToken(ASEmitterTokens.COLON);
+        endMapping(node);
+        
+        getWalker().walk(node.getRightOperandNode());
+        
+        if (ASNodeUtils.hasParenClose((IOperatorNode) node))
+            write(ASEmitterTokens.PAREN_CLOSE);
+    }
+
+    @Override
     public void emitWhileLoop(IWhileLoopNode node)
     {
         IContainerNode cnode = (IContainerNode) node.getChild(1);