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:45 UTC
[27/33] git commit: [flex-falcon] [refs/heads/develop] - improvements
to var declaration source maps
improvements to var declaration source maps
Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/7e47c2de
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/7e47c2de
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/7e47c2de
Branch: refs/heads/develop
Commit: 7e47c2de3e0d4b08ad33f02339e1c81051222e8e
Parents: 2e464ee
Author: Josh Tynjala <jo...@apache.org>
Authored: Fri Apr 1 14:34:13 2016 -0700
Committer: Josh Tynjala <jo...@apache.org>
Committed: Fri Apr 1 14:34:13 2016 -0700
----------------------------------------------------------------------
.../js/sourcemaps/TestSourceMapStatements.java | 54 ++++++++++++++++++++
.../codegen/js/jx/VarDeclarationEmitter.java | 9 ++--
2 files changed, 59 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/7e47c2de/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/sourcemaps/TestSourceMapStatements.java
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/sourcemaps/TestSourceMapStatements.java b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/sourcemaps/TestSourceMapStatements.java
new file mode 100644
index 0000000..edb4ed7
--- /dev/null
+++ b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/sourcemaps/TestSourceMapStatements.java
@@ -0,0 +1,54 @@
+package org.apache.flex.compiler.internal.codegen.js.sourcemaps;
+
+import org.apache.flex.compiler.driver.IBackend;
+import org.apache.flex.compiler.internal.driver.js.flexjs.FlexJSBackend;
+import org.apache.flex.compiler.internal.test.SourceMapTestBase;
+import org.apache.flex.compiler.tree.as.IVariableNode;
+
+import org.junit.Test;
+
+public class TestSourceMapStatements extends SourceMapTestBase
+{
+ //----------------------------------
+ // var declaration
+ //----------------------------------
+
+ @Test
+ public void testVarDeclaration()
+ {
+ IVariableNode node = (IVariableNode) getNode("var a;",
+ IVariableNode.class);
+ asBlockWalker.visitVariable(node);
+ //var /** @type {*} */ a
+ assertMapping(node, 0, 0, 0, 0, 0, 4);
+ assertMapping(node, 0, 5, 0, 4, 0, 21);
+ }
+
+ @Test
+ public void testVarDeclaration_withType()
+ {
+ IVariableNode node = (IVariableNode) getNode("var a:int;",
+ IVariableNode.class);
+ asBlockWalker.visitVariable(node);
+ //var /** @type {number} */ a
+ assertMapping(node, 0, 0, 0, 0, 0, 4);
+ assertMapping(node, 0, 5, 0, 4, 0, 26);
+ }
+
+ @Test
+ public void testVarDeclaration_withTypeAssignedValue()
+ {
+ IVariableNode node = (IVariableNode) getNode("var a:int = 42;",
+ IVariableNode.class);
+ asBlockWalker.visitVariable(node);
+ //var /** @type {number} */ a = 42
+ assertMapping(node, 0, 0, 0, 0, 0, 4);
+ assertMapping(node, 0, 5, 0, 4, 0, 26);
+ assertMapping(node, 0, 9, 0, 27, 0, 30);
+ }
+
+ protected IBackend createBackend()
+ {
+ return new FlexJSBackend();
+ }
+}
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/7e47c2de/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/VarDeclarationEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/VarDeclarationEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/VarDeclarationEmitter.java
index 3829b68..159a4f0 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/VarDeclarationEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/VarDeclarationEmitter.java
@@ -53,10 +53,13 @@ public class VarDeclarationEmitter extends JSSubEmitter implements
fjs.emitMemberKeyword(node);
}
+ //we could use getVariableTypeNode(), but it might not have a line
+ //and column. this can happen when the type is omitted in the code
+ //and the compiler generates a node for type *
+ getEmitter().startMapping(node, node.getNameExpressionNode().getAbsoluteEnd() - node.getAbsoluteStart());
IExpressionNode avnode = node.getAssignedValueNode();
if (avnode != null)
{
- getEmitter().startMapping(node.getVariableTypeNode());
IDefinition def = avnode.resolveType(getWalker().getProject());
String opcode = avnode.getNodeID().getParaphrase();
@@ -64,14 +67,12 @@ public class VarDeclarationEmitter extends JSSubEmitter implements
{
fjs.getDocEmitter().emitVarDoc(node, def, getWalker().getProject());
}
- getEmitter().endMapping(node.getVariableTypeNode());
}
else
{
- getEmitter().startMapping(node.getVariableTypeNode());
fjs.getDocEmitter().emitVarDoc(node, null, getWalker().getProject());
- getEmitter().endMapping(node.getVariableTypeNode());
}
+ getEmitter().endMapping(node);
if (!(node instanceof ChainedVariableNode) && node.isConst())
{