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/10/17 22:54:51 UTC

[1/5] git commit: [flex-falcon] [refs/heads/develop] - ParameterEmitter: fixed issue where this wasn't called due to an old override

Repository: flex-falcon
Updated Branches:
  refs/heads/develop 47cf23cd6 -> b36131959


ParameterEmitter: fixed issue where this wasn't called due to an old override


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

Branch: refs/heads/develop
Commit: 626b617cfb20d4c073775090ca7500d39eb32f48
Parents: 47cf23c
Author: Josh Tynjala <jo...@gmail.com>
Authored: Mon Oct 17 14:01:37 2016 -0700
Committer: Josh Tynjala <jo...@gmail.com>
Committed: Mon Oct 17 14:01:37 2016 -0700

----------------------------------------------------------------------
 .../internal/codegen/js/goog/JSGoogEmitter.java |  6 ------
 .../codegen/js/jx/ParameterEmitter.java         | 21 +-------------------
 2 files changed, 1 insertion(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/626b617c/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java
index a4cbefc..b0af5b1 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java
@@ -887,12 +887,6 @@ public class JSGoogEmitter extends JSEmitter implements IJSGoogEmitter
     }
 
     @Override
-    public void emitParameter(IParameterNode node)
-    {
-        getWalker().walk(node.getNameExpressionNode());
-    }
-
-    @Override
     public void emitAssignedValue(IExpressionNode node)
     {
         if (node == null)

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/626b617c/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/ParameterEmitter.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/ParameterEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/ParameterEmitter.java
index 832d691..e04e4ff 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/ParameterEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/ParameterEmitter.java
@@ -37,25 +37,6 @@ public class ParameterEmitter extends JSSubEmitter implements
     @Override
     public void emit(IParameterNode node)
     {
-        startMapping(node);
-        if (node.isRest())
-        {
-            write(ASEmitterTokens.ELLIPSIS);
-            write(node.getName());
-        }
-        else
-        {
-            getWalker().walk(node.getNameExpressionNode());
-            write(ASEmitterTokens.COLON);
-            getWalker().walk(node.getVariableTypeNode());
-            IExpressionNode anode = node.getAssignedValueNode();
-            if (anode != null)
-            {
-                write(ASEmitterTokens.SPACE);
-                writeToken(ASEmitterTokens.EQUAL);
-                getWalker().walk(anode);
-            }
-        }
-        endMapping(node);
+        getWalker().walk(node.getNameExpressionNode());
     }
 }


[5/5] git commit: [flex-falcon] [refs/heads/develop] - compiler-jx: increased timeout for Ant tests

Posted by jo...@apache.org.
compiler-jx: increased timeout for Ant tests


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

Branch: refs/heads/develop
Commit: b3613195936ec830cef032a1aca51c13c923da2c
Parents: 4543308
Author: Josh Tynjala <jo...@gmail.com>
Authored: Mon Oct 17 15:54:37 2016 -0700
Committer: Josh Tynjala <jo...@gmail.com>
Committed: Mon Oct 17 15:54:37 2016 -0700

----------------------------------------------------------------------
 compiler-jx/src/test/build.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/b3613195/compiler-jx/src/test/build.xml
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/build.xml b/compiler-jx/src/test/build.xml
index 2452b16..771f3c8 100644
--- a/compiler-jx/src/test/build.xml
+++ b/compiler-jx/src/test/build.xml
@@ -27,7 +27,7 @@
 
     <property environment="env"/>
 	<property file="unittest.properties" />
-	<property name="test.timeout" value="300000" />
+	<property name="test.timeout" value="400000" />
 	<property name="maxmem" value="512" />
 	
     <property name="compiler" value="${compiler.tests}/../.."/>


[2/5] git commit: [flex-falcon] [refs/heads/develop] - IJSEmitter: no longer has pushSourceMapName() and popSourceMapName() because they were confusing Chrome and they don't appear to be necessary

Posted by jo...@apache.org.
IJSEmitter: no longer has pushSourceMapName() and popSourceMapName() because they were confusing Chrome and they don't appear to be necessary


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

Branch: refs/heads/develop
Commit: 838a0fcd6925c38ec5927ae0c385e9561da22cff
Parents: 626b617
Author: Josh Tynjala <jo...@gmail.com>
Authored: Mon Oct 17 14:18:36 2016 -0700
Committer: Josh Tynjala <jo...@gmail.com>
Committed: Mon Oct 17 14:18:36 2016 -0700

----------------------------------------------------------------------
 .../flex/compiler/codegen/js/IJSEmitter.java    |  3 --
 .../compiler/internal/codegen/js/JSEmitter.java | 49 +-------------------
 .../internal/codegen/js/jx/ClassEmitter.java    |  3 --
 .../internal/codegen/js/jx/MethodEmitter.java   |  2 -
 .../codegen/js/jx/PackageFooterEmitter.java     |  1 -
 .../codegen/js/jx/PackageHeaderEmitter.java     |  2 -
 6 files changed, 1 insertion(+), 59 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/838a0fcd/compiler-jx/src/main/java/org/apache/flex/compiler/codegen/js/IJSEmitter.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/codegen/js/IJSEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/codegen/js/IJSEmitter.java
index eb0d748..b686a3a 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/codegen/js/IJSEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/codegen/js/IJSEmitter.java
@@ -66,9 +66,6 @@ public interface IJSEmitter extends IASEmitter
      * Commits a mapping to the source map.
      */
     void endMapping(ISourceLocation node);
-
-    void pushSourceMapName(ISourceLocation node);
-    void popSourceMapName();
     
     void emitSourceMapDirective(ITypeNode node);
     

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/838a0fcd/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 7824a87..94155df 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
@@ -132,8 +132,6 @@ public class JSEmitter extends ASEmitter implements IJSEmitter
     
     private SourceMapMapping lastMapping;
     
-    private Stack<String> nameStack = new Stack<String>();
-    
     private List<SourceMapMapping> sourceMapMappings;
     
     public List<SourceMapMapping> getSourceMapMappings()
@@ -382,45 +380,6 @@ public class JSEmitter extends ASEmitter implements IJSEmitter
         blockCloseEmitter.emit(node);
     }
 
-    public void pushSourceMapName(ISourceLocation node)
-    {
-        boolean isValidMappingScope = node instanceof ITypeNode
-                || node instanceof IPackageNode
-                || node instanceof IFunctionNode;
-        if(!isValidMappingScope)
-        {
-            throw new IllegalStateException("A source mapping scope must be a package, type, or function.");
-        }
-        
-        IDefinitionNode definitionNode = (IDefinitionNode) node;
-        String nodeName = definitionNode.getQualifiedName();
-        ITypeDefinition typeDef = EmitterUtils.getTypeDefinition(definitionNode);
-        if (typeDef != null)
-        {
-            boolean isConstructor = node instanceof IFunctionNode &&
-                    ((IFunctionNode) node).isConstructor();
-            boolean isStatic = definitionNode.hasModifier(ASModifier.STATIC);
-            if (isConstructor)
-            {
-                nodeName = typeDef.getQualifiedName() + ".constructor";
-            }
-            else if (isStatic)
-            {
-                nodeName = typeDef.getQualifiedName() + "." + nodeName;
-            }
-            else
-            {
-                nodeName = typeDef.getQualifiedName() + ".prototype." + nodeName;
-            }
-        }
-        nameStack.push(nodeName);
-    }
-    
-    public void popSourceMapName()
-    {
-        nameStack.pop();
-    }
-
     public void startMapping(ISourceLocation node)
     {
         startMapping(node, node.getLine(), node.getColumn());
@@ -454,15 +413,9 @@ public class JSEmitter extends ASEmitter implements IJSEmitter
                 }
             }
         }
-        
-        String nodeName = null;
-        if (nameStack.size() > 0)
-        {
-            nodeName = nameStack.lastElement();
-        }
+
         SourceMapMapping mapping = new SourceMapMapping();
         mapping.sourcePath = sourcePath;
-        mapping.name = nodeName;
         mapping.sourceStartPosition = new FilePosition(line, column);
         mapping.destStartPosition = new FilePosition(getCurrentLine(), getCurrentColumn());
         lastMapping = mapping;

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/838a0fcd/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/ClassEmitter.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/ClassEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/ClassEmitter.java
index d629b5d..5cb397c 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/ClassEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/ClassEmitter.java
@@ -58,8 +58,6 @@ public class ClassEmitter extends JSSubEmitter implements
         // TODO (mschmalle) will remove this cast as more things get abstracted
         JSFlexJSEmitter fjs = (JSFlexJSEmitter) getEmitter();
         
-        getEmitter().pushSourceMapName(node);
-
         ASDocComment asDoc = (ASDocComment) node.getASDocComment();
         if (asDoc != null && MXMLJSC.keepASDoc)
             DocEmitterUtils.loadImportIgnores(fjs, asDoc.commentNoEnd());
@@ -204,7 +202,6 @@ public class ClassEmitter extends JSSubEmitter implements
         
         fjs.getPackageFooterEmitter().emitClassInfo(node);
 
-        getEmitter().popSourceMapName();
         getModel().popClass();
     }
     

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/838a0fcd/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/MethodEmitter.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/MethodEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/MethodEmitter.java
index d26f9f5..85078fd 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/MethodEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/MethodEmitter.java
@@ -142,9 +142,7 @@ public class MethodEmitter extends JSSubEmitter implements
 
         if (!isConstructor || node.getScopedNode().getChildCount() > 0)
         {
-            getEmitter().pushSourceMapName(node);
             fjs.emitMethodScope(node.getScopedNode());
-            getEmitter().popSourceMapName();
         }
 
         if (isConstructor)

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/838a0fcd/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/PackageFooterEmitter.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/PackageFooterEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/PackageFooterEmitter.java
index feaceb0..57393e9 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/PackageFooterEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/PackageFooterEmitter.java
@@ -59,7 +59,6 @@ public class PackageFooterEmitter extends JSSubEmitter implements
     @Override
     public void emit(IPackageDefinition definition)
     {
-        getEmitter().popSourceMapName();
         IASScope containedScope = definition.getContainedScope();
         ITypeDefinition type = EmitterUtils.findType(containedScope
                 .getAllLocalDefinitions());

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/838a0fcd/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/PackageHeaderEmitter.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/PackageHeaderEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/PackageHeaderEmitter.java
index 56bfeb8..e71d497 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/PackageHeaderEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/PackageHeaderEmitter.java
@@ -142,8 +142,6 @@ public class PackageHeaderEmitter extends JSSubEmitter implements
         // TODO (mschmalle) will remove this cast as more things get abstracted
         JSFlexJSEmitter fjs = (JSFlexJSEmitter) getEmitter();
 
-        getEmitter().pushSourceMapName(definition.getNode());
-
         PackageScope containedScope = (PackageScope) definition
                 .getContainedScope();
 


[4/5] git commit: [flex-falcon] [refs/heads/develop] - FieldEmitter: improved source map output for fields

Posted by jo...@apache.org.
FieldEmitter: improved source map output for fields


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

Branch: refs/heads/develop
Commit: 454330835b2748e167bb2e8a9714a0a546486b16
Parents: 1753f4e
Author: Josh Tynjala <jo...@gmail.com>
Authored: Mon Oct 17 15:20:25 2016 -0700
Committer: Josh Tynjala <jo...@gmail.com>
Committed: Mon Oct 17 15:20:25 2016 -0700

----------------------------------------------------------------------
 .../internal/codegen/js/jx/FieldEmitter.java    |   9 +-
 .../sourcemaps/TestSourceMapFieldMembers.java   | 205 +++++++++++++++++++
 2 files changed, 213 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/45433083/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/FieldEmitter.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/FieldEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/FieldEmitter.java
index c330c56..1b0d579 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/FieldEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/FieldEmitter.java
@@ -113,11 +113,18 @@ public class FieldEmitter extends JSSubEmitter implements
         			(!ndef.isStatic() && EmitterUtils.isScalar(vnode)) ||
         			isPackageOrFileMember)
 	        {
-	            startMapping(node);
+                IExpressionNode beforeNode = node.getVariableTypeNode();
+                if (beforeNode.getAbsoluteStart() == -1)
+                {
+                    beforeNode = node.getNameExpressionNode();
+                }
+	            startMapping(node, beforeNode);
 	            write(ASEmitterTokens.SPACE);
 	            writeToken(ASEmitterTokens.EQUAL);
 	            endMapping(node);
+                startMapping(vnode);
 	            write(vnodeString);
+                endMapping(vnode);
 	        }
 	        else if (ndef.isStatic() && EmitterUtils.needsStaticInitializer(vnodeString, className))
 	        {

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/45433083/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/sourcemaps/TestSourceMapFieldMembers.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/sourcemaps/TestSourceMapFieldMembers.java b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/sourcemaps/TestSourceMapFieldMembers.java
new file mode 100644
index 0000000..55bbb46
--- /dev/null
+++ b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/sourcemaps/TestSourceMapFieldMembers.java
@@ -0,0 +1,205 @@
+/*
+ *
+ *  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.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 TestSourceMapFieldMembers extends SourceMapTestBase
+{
+    @Test
+    public void testField()
+    {
+        IVariableNode node = getField("var foo;");
+        asBlockWalker.visitVariable(node);
+        ///**\n * @export\n * @type {*}\n */\nFalconTest_A.prototype.foo
+        assertMapping(node, 0, 4, 4, 0, 4, 26);  // foo
+    }
+
+    @Test
+    public void testField_withStringSetToNull()
+    {
+        IVariableNode node = getField("var foo:String = null;");
+        asBlockWalker.visitVariable(node);
+        //**\n * @export\n * @type {string}\n */\nFalconTest_A.prototype.foo = null
+        assertMapping(node, 0, 4, 4, 0, 4, 26);  // foo
+        assertMapping(node, 0, 14, 4, 26, 4, 29);  // =
+        assertMapping(node, 0, 17, 4, 29, 4, 33);  // null
+    }
+
+    @Test
+    public void testField_withType()
+    {
+        IVariableNode node = getField("var foo:int;");
+        asBlockWalker.visitVariable(node);
+        ///**\n * @export\n * @type {number}\n */\nFalconTest_A.prototype.foo = 0
+        assertMapping(node, 0, 4, 4, 0, 4, 26);  // foo
+    }
+
+    @Test
+    public void testField_withValue()
+    {
+        IVariableNode node = getField("var foo = 420;");
+        asBlockWalker.visitVariable(node);
+        ///**\n * @export\n * @type {*}\n */\nFalconTest_A.prototype.foo = 420
+        assertMapping(node, 0, 4, 4, 0, 4, 26);  // foo
+        assertMapping(node, 0, 7, 4, 26, 4, 29);  // =
+        assertMapping(node, 0, 10, 4, 29, 4, 32);  // 420
+    }
+
+    @Test
+    public void testField_withTypeValue()
+    {
+        IVariableNode node = getField("var foo:int = 420;");
+        asBlockWalker.visitVariable(node);
+        ///**\n * @export\n * @type {number}\n */\nFalconTest_A.prototype.foo = 420
+        assertMapping(node, 0, 4, 4, 0, 4, 26);  // foo
+        assertMapping(node, 0, 11, 4, 26, 4, 29);  // =
+        assertMapping(node, 0, 14, 4, 29, 4, 32);  // 420
+    }
+
+    @Test
+    public void testStaticField()
+    {
+        IVariableNode node = getField("static var foo;");
+        asBlockWalker.visitVariable(node);
+        ////**\n * @export\n * @type {*}\n */\nFalconTest_A.foo
+        assertMapping(node, 0, 11, 4, 0, 4, 16);  // foo
+    }
+
+    @Test
+    public void testStaticField_withType()
+    {
+        IVariableNode node = getField("static var foo:int;");
+        asBlockWalker.visitVariable(node);
+        ///**\n * @export\n * @type {number}\n */\nFalconTest_A.foo = 0
+        assertMapping(node, 0, 11, 4, 0, 4, 16);  // foo
+    }
+
+    @Test
+    public void testStaticField_withValue()
+    {
+        IVariableNode node = getField("static var foo = 420;");
+        asBlockWalker.visitVariable(node);
+        ///**\n * @export\n * @type {*}\n */\nFalconTest_A.foo = 420
+        assertMapping(node, 0, 11, 4, 0, 4, 16);   // foo
+        assertMapping(node, 0, 14, 4, 16, 4, 19);  // =
+        assertMapping(node, 0, 17, 4, 19, 4, 22);  // 420
+    }
+
+    @Test
+    public void testStaticField_withTypeValue()
+    {
+        IVariableNode node = getField("static var foo:int = 420;");
+        asBlockWalker.visitVariable(node);
+        ///**\n * @export\n * @type {number}\n */\nFalconTest_A.foo = 420
+        assertMapping(node, 0, 11, 4, 0, 4, 16);  // foo
+        assertMapping(node, 0, 18, 4, 16, 4, 19);  // =
+        assertMapping(node, 0, 21, 4, 19, 4, 22);  // 420
+    }
+
+    @Test
+    public void testConstant()
+    {
+        IVariableNode node = getField("const foo;");
+        asBlockWalker.visitVariable(node);
+        ///**\n * @export\n * @const\n * @type {*}\n */\nFalconTest_A.prototype.foo
+        assertMapping(node, 0, 6, 5, 0, 5, 26);  // foo
+    }
+
+    @Test
+    public void testConstant_withType()
+    {
+        IVariableNode node = getField("const foo:int;");
+        asBlockWalker.visitVariable(node);
+        ///**\n * @export\n * @const\n * @type {number}\n */\nFalconTest_A.prototype.foo = 0
+        assertMapping(node, 0, 6, 5, 0, 5, 26);  // foo
+    }
+
+    @Test
+    public void testConstant_withValue()
+    {
+        IVariableNode node = getField("const foo = 420;");
+        asBlockWalker.visitVariable(node);
+        ///**\n * @export\n * @const\n * @type {*}\n */\nFalconTest_A.prototype.foo = 420
+        assertMapping(node, 0, 6, 5, 0, 5, 26);  // foo
+        assertMapping(node, 0, 9, 5, 26, 5, 29);  // =
+        assertMapping(node, 0, 12, 5, 29, 5, 32);  // 420
+    }
+
+    @Test
+    public void testConstant_withTypeValue()
+    {
+        IVariableNode node = getField("const foo:int = 420;");
+        asBlockWalker.visitVariable(node);
+        ///**\n * @export\n * @const\n * @type {number}\n */\nFalconTest_A.prototype.foo = 420
+        assertMapping(node, 0, 6, 5, 0, 5, 26);  // foo
+        assertMapping(node, 0, 13, 5, 26, 5, 29);  // =
+        assertMapping(node, 0, 16, 5, 29, 5, 32);  // 420
+    }
+
+    @Test
+    public void testStaticConstant()
+    {
+        IVariableNode node = getField("static const foo;");
+        asBlockWalker.visitVariable(node);
+        ///**\n * @export\n * @const\n * @type {*}\n */\nFalconTest_A.foo
+        assertMapping(node, 0, 13, 5, 0, 5, 16);  // foo
+    }
+
+    @Test
+    public void testStaticConstant_withType()
+    {
+        IVariableNode node = getField("static const foo:int;");
+        asBlockWalker.visitVariable(node);
+        ///**\n * @export\n * @const\n * @type {number}\n */\nFalconTest_A.foo = 0
+        assertMapping(node, 0, 13, 5, 0, 5, 16);  // foo
+    }
+
+    @Test
+    public void testStaticConstant_withValue()
+    {
+        IVariableNode node = getField("static const foo = 420;");
+        asBlockWalker.visitVariable(node);
+        ///**\n * @export\n * @const\n * @type {*}\n */\nFalconTest_A.foo = 420
+        assertMapping(node, 0, 13, 5, 0, 5, 16);  // foo
+        assertMapping(node, 0, 16, 5, 16, 5, 19);  // =
+        assertMapping(node, 0, 19, 5, 19, 5, 22);  // 420
+    }
+
+    @Test
+    public void testStaticConstant_withTypeValue()
+    {
+        IVariableNode node = getField("static const foo:int = 420;");
+        asBlockWalker.visitVariable(node);
+        ///**\n * @export\n * @const\n * @type {number}\n */\nFalconTest_A.foo = 420
+        assertMapping(node, 0, 13, 5, 0, 5, 16);  // foo
+        assertMapping(node, 0, 20, 5, 16, 5, 19);  // =
+        assertMapping(node, 0, 23, 5, 19, 5, 22);  // 420
+    }
+
+    protected IBackend createBackend()
+    {
+        return new FlexJSBackend();
+    }
+}


[3/5] git commit: [flex-falcon] [refs/heads/develop] - ASEmitter, JSEmitter: fixed issue where line and column numbers could be wrong when stringifyNode() is used and source map offset could be wrong too

Posted by jo...@apache.org.
ASEmitter, JSEmitter: fixed issue where line and column numbers could be wrong when stringifyNode() is used and source map offset could be wrong too


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

Branch: refs/heads/develop
Commit: 1753f4e238f8523b5f3fb367d8ba745cb54d268d
Parents: 838a0fc
Author: Josh Tynjala <jo...@gmail.com>
Authored: Mon Oct 17 15:18:43 2016 -0700
Committer: Josh Tynjala <jo...@gmail.com>
Committed: Mon Oct 17 15:18:43 2016 -0700

----------------------------------------------------------------------
 .../compiler/internal/codegen/as/ASEmitter.java | 22 ++++++++++++--------
 .../compiler/internal/codegen/js/JSEmitter.java |  8 +++++++
 2 files changed, 21 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/1753f4e2/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/as/ASEmitter.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/as/ASEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/as/ASEmitter.java
index 6f48f8e..f25d6c9 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/as/ASEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/as/ASEmitter.java
@@ -220,20 +220,24 @@ public class ASEmitter implements IASEmitter, IEmitter
     {
         try
         {
-            int newLineCount = value.length() - value.replace("\n", "").length();
-            currentLine += newLineCount;
-            if (newLineCount > 0)
+            if (!bufferWrite)
             {
-                currentColumn = value.length() - value.lastIndexOf("\n") - 1;
+                int newLineCount = value.length() - value.replace("\n", "").length();
+                currentLine += newLineCount;
+                if (newLineCount > 0)
+                {
+                    currentColumn = value.length() - value.lastIndexOf("\n") - 1;
+                }
+                else
+                {
+                    currentColumn += value.length();
+                }
+                out.write(value);
             }
             else
             {
-                currentColumn += value.length();
-            }
-            if (!bufferWrite)
-                out.write(value);
-            else
                 builder.append(value);
+            }
         }
         catch (IOException e)
         {

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/1753f4e2/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 94155df..5b1f770 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
@@ -387,6 +387,10 @@ public class JSEmitter extends ASEmitter implements IJSEmitter
     
     public void startMapping(ISourceLocation node, int line, int column)
     {
+        if (isBufferWrite())
+        {
+            return;
+        }
         if (lastMapping != null)
         {
             FilePosition sourceStartPosition = lastMapping.sourceStartPosition;
@@ -428,6 +432,10 @@ public class JSEmitter extends ASEmitter implements IJSEmitter
 
     public void endMapping(ISourceLocation node)
     {
+        if (isBufferWrite())
+        {
+            return;
+        }
         if (lastMapping == null)
         {
             throw new IllegalStateException("Cannot end mapping when a mapping has not been started");