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/29 01:58:46 UTC

[4/5] git commit: [flex-falcon] [refs/heads/develop] - source maps for throw

source maps for throw


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

Branch: refs/heads/develop
Commit: effd71b4fb8564bb78cfcda71df746d7af80a857
Parents: 6f80354
Author: Josh Tynjala <jo...@gmail.com>
Authored: Thu Apr 28 16:39:17 2016 -0700
Committer: Josh Tynjala <jo...@gmail.com>
Committed: Thu Apr 28 16:39:17 2016 -0700

----------------------------------------------------------------------
 .../compiler/internal/codegen/js/JSEmitter.java | 10 +++++
 .../internal/codegen/js/jx/ThrowEmitter.java    | 44 ++++++++++++++++++++
 .../js/sourcemaps/TestSourceMapExpressions.java | 10 +++++
 3 files changed, 64 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/effd71b4/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/JSEmitter.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/JSEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/JSEmitter.java
index 6d4b15f..463a2fc 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/JSEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/JSEmitter.java
@@ -51,6 +51,7 @@ import org.apache.flex.compiler.internal.codegen.js.jx.SourceMapDirectiveEmitter
 import org.apache.flex.compiler.internal.codegen.js.jx.StatementEmitter;
 import org.apache.flex.compiler.internal.codegen.js.jx.SwitchEmitter;
 import org.apache.flex.compiler.internal.codegen.js.jx.TernaryOperatorEmitter;
+import org.apache.flex.compiler.internal.codegen.js.jx.ThrowEmitter;
 import org.apache.flex.compiler.internal.codegen.js.jx.TryEmitter;
 import org.apache.flex.compiler.internal.codegen.js.jx.UnaryOperatorEmitter;
 import org.apache.flex.compiler.internal.codegen.js.jx.WhileLoopEmitter;
@@ -75,6 +76,7 @@ import org.apache.flex.compiler.tree.as.IParameterNode;
 import org.apache.flex.compiler.tree.as.IReturnNode;
 import org.apache.flex.compiler.tree.as.ISwitchNode;
 import org.apache.flex.compiler.tree.as.ITernaryOperatorNode;
+import org.apache.flex.compiler.tree.as.IThrowNode;
 import org.apache.flex.compiler.tree.as.ITryNode;
 import org.apache.flex.compiler.tree.as.ITypeNode;
 import org.apache.flex.compiler.tree.as.ITypedExpressionNode;
@@ -111,6 +113,7 @@ public class JSEmitter extends ASEmitter implements IJSEmitter
     public IterationFlowEmitter interationFlowEmitter;
     public TryEmitter tryEmitter;
     public CatchEmitter catchEmitter;
+    public ThrowEmitter throwEmitter;
     public StatementEmitter statementEmitter;
     public LanguageIdentifierEmitter languageIdentifierEmitter;
     public SourceMapDirectiveEmitter sourceMapDirectiveEmitter;
@@ -160,6 +163,7 @@ public class JSEmitter extends ASEmitter implements IJSEmitter
         interationFlowEmitter = new IterationFlowEmitter(this);
         tryEmitter = new TryEmitter(this);
         catchEmitter = new CatchEmitter(this);
+        throwEmitter = new ThrowEmitter(this);
         statementEmitter = new StatementEmitter(this);
         languageIdentifierEmitter = new LanguageIdentifierEmitter(this);
         sourceMapDirectiveEmitter = new SourceMapDirectiveEmitter(this);
@@ -258,6 +262,12 @@ public class JSEmitter extends ASEmitter implements IJSEmitter
     }
 
     @Override
+    public void emitThrow(IThrowNode node)
+    {
+        throwEmitter.emit(node);
+    }
+
+    @Override
     public void emitReturn(IReturnNode node)
     {
         returnEmitter.emit(node);

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/effd71b4/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/ThrowEmitter.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/ThrowEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/ThrowEmitter.java
new file mode 100644
index 0000000..dbd53f7
--- /dev/null
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/ThrowEmitter.java
@@ -0,0 +1,44 @@
+/*
+ *
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+package org.apache.flex.compiler.internal.codegen.js.jx;
+
+import org.apache.flex.compiler.codegen.ISubEmitter;
+import org.apache.flex.compiler.codegen.js.IJSEmitter;
+import org.apache.flex.compiler.internal.codegen.as.ASEmitterTokens;
+import org.apache.flex.compiler.internal.codegen.js.JSSubEmitter;
+import org.apache.flex.compiler.tree.as.IThrowNode;
+
+public class ThrowEmitter extends JSSubEmitter implements
+        ISubEmitter<IThrowNode>
+{
+    public ThrowEmitter(IJSEmitter emitter)
+    {
+        super(emitter);
+    }
+
+    @Override
+    public void emit(IThrowNode node)
+    {
+        startMapping(node);
+        writeToken(ASEmitterTokens.THROW);
+        endMapping(node);
+        getWalker().walk(node.getThrownExpressionNode());
+    }
+}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/effd71b4/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/sourcemaps/TestSourceMapExpressions.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/sourcemaps/TestSourceMapExpressions.java b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/sourcemaps/TestSourceMapExpressions.java
index cf8b87c..b824aa7 100644
--- a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/sourcemaps/TestSourceMapExpressions.java
+++ b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/sourcemaps/TestSourceMapExpressions.java
@@ -30,6 +30,7 @@ import org.apache.flex.compiler.tree.as.IIterationFlowNode;
 import org.apache.flex.compiler.tree.as.IMemberAccessExpressionNode;
 import org.apache.flex.compiler.tree.as.IReturnNode;
 import org.apache.flex.compiler.tree.as.ITernaryOperatorNode;
+import org.apache.flex.compiler.tree.as.IThrowNode;
 import org.apache.flex.compiler.tree.as.IUnaryOperatorNode;
 
 import org.junit.Test;
@@ -733,6 +734,15 @@ public class TestSourceMapExpressions extends SourceMapTestBase
     }
 
     @Test
+    public void testThrow()
+    {
+        IThrowNode node = (IThrowNode) getNode("throw a", IThrowNode.class);
+        asBlockWalker.visitThrow(node);
+        assertMapping(node, 0, 0, 0, 0, 0, 6); // throw
+        assertMapping(node, 0, 6, 0, 6, 0, 7); // a
+    }
+
+    @Test
     public void testVisitFunctionCall_1()
     {
         IFunctionCallNode node = (IFunctionCallNode) getNode("a()", IFunctionCallNode.class);