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);