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/01/11 20:54:56 UTC

[4/5] git commit: [flex-falcon] [refs/heads/develop] - compiler.jx: added support for functions and variables in packages, and functions and variables after package (similar to internal classes)

compiler.jx: added support for functions and variables in packages, and functions and variables after package (similar to internal classes)


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

Branch: refs/heads/develop
Commit: 5606078243b62fd965bf83f6e39993140d01de76
Parents: 8a7bdc6
Author: Josh Tynjala <jo...@apache.org>
Authored: Mon Jan 11 11:54:37 2016 -0800
Committer: Josh Tynjala <jo...@apache.org>
Committed: Mon Jan 11 11:54:37 2016 -0800

----------------------------------------------------------------------
 .../internal/codegen/as/ASBlockWalker.java      | 20 ++++++------
 .../codegen/js/flexjs/JSFlexJSEmitter.java      | 10 ++++++
 .../codegen/js/jx/PackageHeaderEmitter.java     | 33 ++++++++++++++++++--
 3 files changed, 49 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/56060782/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASBlockWalker.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASBlockWalker.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASBlockWalker.java
index fec44cc..b405bb0 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASBlockWalker.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASBlockWalker.java
@@ -190,7 +190,9 @@ public class ASBlockWalker implements IASBlockVisitor, IASBlockWalker
 	        if (pnode != null && 
 	        	(pnode instanceof IPackageNode || 
 	        	 pnode instanceof IInterfaceNode ||
-	        	 pnode instanceof IClassNode))
+	        	 pnode instanceof IClassNode ||
+                 pnode instanceof IFunctionNode ||
+                 pnode instanceof IVariableNode))
 	        {
 	            walk(pnode);
 	            
@@ -238,11 +240,9 @@ public class ASBlockWalker implements IASBlockVisitor, IASBlockWalker
     public void visitVariable(IVariableNode node)
     {
         debug("visitVariable()");
-        if (SemanticUtils.isPackageDefinition(node.getDefinition()))
-        {
-            //TODO: emit package-level variable
-        }
-        else if (SemanticUtils.isMemberDefinition(node.getDefinition()))
+        if (SemanticUtils.isPackageDefinition(node.getDefinition()) ||
+            SemanticUtils.isMemberDefinition(node.getDefinition()) ||
+            node.getParent() instanceof IFileNode)
         {
             emitter.emitField(node);
         }
@@ -256,11 +256,9 @@ public class ASBlockWalker implements IASBlockVisitor, IASBlockWalker
     public void visitFunction(IFunctionNode node)
     {
         debug("visitFunction()");
-        if (SemanticUtils.isPackageDefinition(node.getDefinition()))
-        {
-            //TODO: emit package-level function
-        }
-        else if (DefinitionUtils.isMemberDefinition(node.getDefinition()))
+        if (SemanticUtils.isPackageDefinition(node.getDefinition()) ||
+            DefinitionUtils.isMemberDefinition(node.getDefinition()) ||
+            node.getParent() instanceof IFileNode)
         {
             emitter.emitMethod(node);
         }

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/56060782/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
index a101a4c..1de63fe 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
@@ -342,6 +342,16 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
 	        	String className = ((IInterfaceNode)pnode).getQualifiedName();
 	        	getModel().getInternalClasses().put(className, mainClassName + "." + className);
 	        }
+            else if (pnode instanceof IFunctionNode)
+            {
+                String className = ((IFunctionNode)pnode).getQualifiedName();
+                getModel().getInternalClasses().put(className, mainClassName + "." + className);
+            }
+            else if (pnode instanceof IVariableNode)
+            {
+                String className = ((IVariableNode)pnode).getQualifiedName();
+                getModel().getInternalClasses().put(className, mainClassName + "." + className);
+            }
         }
 
         packageHeaderEmitter.emit(definition);

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/56060782/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/PackageHeaderEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/PackageHeaderEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/PackageHeaderEmitter.java
index d0e161b..21d3c01 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/PackageHeaderEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/PackageHeaderEmitter.java
@@ -27,8 +27,10 @@ import java.util.List;
 import org.apache.flex.compiler.asdoc.flexjs.ASDocComment;
 import org.apache.flex.compiler.codegen.ISubEmitter;
 import org.apache.flex.compiler.codegen.js.IJSEmitter;
+import org.apache.flex.compiler.definitions.IFunctionDefinition;
 import org.apache.flex.compiler.definitions.IPackageDefinition;
 import org.apache.flex.compiler.definitions.ITypeDefinition;
+import org.apache.flex.compiler.definitions.IVariableDefinition;
 import org.apache.flex.compiler.internal.codegen.as.ASEmitterTokens;
 import org.apache.flex.compiler.internal.codegen.js.JSSubEmitter;
 import org.apache.flex.compiler.internal.codegen.js.flexjs.JSFlexJSEmitter;
@@ -61,8 +63,33 @@ public class PackageHeaderEmitter extends JSSubEmitter implements
         IASScope containedScope = definition.getContainedScope();
         ITypeDefinition type = EmitterUtils.findType(containedScope
                 .getAllLocalDefinitions());
-        if (type == null)
+        String qname = null;
+        if (type != null)
+        {
+            qname = type.getQualifiedName();
+        }
+        if (qname == null)
+        {
+            IFunctionDefinition fn = EmitterUtils.findFunction(containedScope
+                    .getAllLocalDefinitions());
+            if(fn != null)
+            {
+                qname = fn.getQualifiedName();
+            }
+        }
+        if (qname == null)
+        {
+            IVariableDefinition variable = EmitterUtils.findVariable(containedScope
+                    .getAllLocalDefinitions());
+            if(variable != null)
+            {
+                qname = variable.getQualifiedName();
+            }
+        }
+        if (qname == null)
+        {
             return;
+        }
         
         FlexJSProject project = (FlexJSProject) getProject();
         List<File> sourcePaths = project.getSourcePath();
@@ -77,7 +104,7 @@ public class PackageHeaderEmitter extends JSSubEmitter implements
 
         writeNewline("/**");
         writeNewline(" * Generated by Apache Flex Cross-Compiler from " + sourceName);
-        writeNewline(" * " + type.getQualifiedName());
+        writeNewline(" * " + qname);
         writeNewline(" *");
         writeNewline(" * @fileoverview");
         writeNewline(" *");
@@ -91,7 +118,7 @@ public class PackageHeaderEmitter extends JSSubEmitter implements
         write(JSGoogEmitterTokens.GOOG_PROVIDE);
         write(ASEmitterTokens.PAREN_OPEN);
         write(ASEmitterTokens.SINGLE_QUOTE);
-        write(getEmitter().formatQualifiedName(type.getQualifiedName()));
+        write(getEmitter().formatQualifiedName(qname));
         write(ASEmitterTokens.SINGLE_QUOTE);
         write(ASEmitterTokens.PAREN_CLOSE);
         writeNewline(ASEmitterTokens.SEMICOLON);


Re: [4/5] git commit: [flex-falcon] [refs/heads/develop] - compiler.jx: added support for functions and variables in packages, and functions and variables after package (similar to internal classes)

Posted by Josh Tynjala <jo...@gmail.com>.
Yes, it should be resolved. Package-level functions are now working.

- Josh
On Jan 12, 2016 8:36 AM, "Andy Dufilie" <an...@gmail.com> wrote:

> Josh, does this commit resolve
> https://issues.apache.org/jira/browse/FLEX-35004 ?
>
> On Tue, Jan 12, 2016 at 11:24 AM, Alex Harui <ah...@adobe.com> wrote:
>
>> I haven't done thorough research, but I think this change is causing the
>> last remaining failure in the Falcon build.  The failing case is
>>
>> org.apache.flex.compiler.internal.codegen.js.vf2js.TestVF2JSFile.testVersio
>> n in compiler.jx.tests.  The test case is dealing with an variable defined
>> in an included file which has means the parent of the variable node will
>> be a file node and look a lot like a file-level definition when it isn't.
>>
>> -Alex
>>
>> On 1/11/16, 11:54 AM, "joshtynjala@apache.org" <jo...@apache.org>
>> wrote:
>>
>> >compiler.jx: added support for functions and variables in packages, and
>> >functions and variables after package (similar to internal classes)
>> >
>> >
>> >Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
>> >Commit:
>> http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/56060782
>> >Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/56060782
>> >Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/56060782
>> >
>> >Branch: refs/heads/develop
>> >Commit: 5606078243b62fd965bf83f6e39993140d01de76
>> >Parents: 8a7bdc6
>> >Author: Josh Tynjala <jo...@apache.org>
>> >Authored: Mon Jan 11 11:54:37 2016 -0800
>> >Committer: Josh Tynjala <jo...@apache.org>
>> >Committed: Mon Jan 11 11:54:37 2016 -0800
>> >
>> >----------------------------------------------------------------------
>> > .../internal/codegen/as/ASBlockWalker.java      | 20 ++++++------
>> > .../codegen/js/flexjs/JSFlexJSEmitter.java      | 10 ++++++
>> > .../codegen/js/jx/PackageHeaderEmitter.java     | 33
>> ++++++++++++++++++--
>> > 3 files changed, 49 insertions(+), 14 deletions(-)
>> >----------------------------------------------------------------------
>> >
>> >
>> >
>> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/56060782/compiler
>> .
>> >jx/src/org/apache/flex/compiler/internal/codegen/as/ASBlockWalker.java
>> >----------------------------------------------------------------------
>> >diff --git
>>
>> >a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASBlockWalk
>> >er.java
>>
>> >b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASBlockWalk
>> >er.java
>> >index fec44cc..b405bb0 100644
>> >---
>>
>> >a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASBlockWalk
>> >er.java
>> >+++
>>
>> >b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASBlockWalk
>> >er.java
>> >@@ -190,7 +190,9 @@ public class ASBlockWalker implements
>> >IASBlockVisitor, IASBlockWalker
>> >               if (pnode != null &&
>> >                       (pnode instanceof IPackageNode ||
>> >                        pnode instanceof IInterfaceNode ||
>> >-                       pnode instanceof IClassNode))
>> >+                       pnode instanceof IClassNode ||
>> >+                 pnode instanceof IFunctionNode ||
>> >+                 pnode instanceof IVariableNode))
>> >               {
>> >                   walk(pnode);
>> >
>> >@@ -238,11 +240,9 @@ public class ASBlockWalker implements
>> >IASBlockVisitor, IASBlockWalker
>> >     public void visitVariable(IVariableNode node)
>> >     {
>> >         debug("visitVariable()");
>> >-        if (SemanticUtils.isPackageDefinition(node.getDefinition()))
>> >-        {
>> >-            //TODO: emit package-level variable
>> >-        }
>> >-        else if (SemanticUtils.isMemberDefinition(node.getDefinition()))
>> >+        if (SemanticUtils.isPackageDefinition(node.getDefinition()) ||
>> >+            SemanticUtils.isMemberDefinition(node.getDefinition()) ||
>> >+            node.getParent() instanceof IFileNode)
>> >         {
>> >             emitter.emitField(node);
>> >         }
>> >@@ -256,11 +256,9 @@ public class ASBlockWalker implements
>> >IASBlockVisitor, IASBlockWalker
>> >     public void visitFunction(IFunctionNode node)
>> >     {
>> >         debug("visitFunction()");
>> >-        if (SemanticUtils.isPackageDefinition(node.getDefinition()))
>> >-        {
>> >-            //TODO: emit package-level function
>> >-        }
>> >-        else if
>> >(DefinitionUtils.isMemberDefinition(node.getDefinition()))
>> >+        if (SemanticUtils.isPackageDefinition(node.getDefinition()) ||
>> >+            DefinitionUtils.isMemberDefinition(node.getDefinition()) ||
>> >+            node.getParent() instanceof IFileNode)
>> >         {
>> >             emitter.emitMethod(node);
>> >         }
>> >
>> >
>> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/56060782/compiler
>> .
>>
>> >jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter
>> >.java
>> >----------------------------------------------------------------------
>> >diff --git
>>
>> >a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFl
>> >exJSEmitter.java
>>
>> >b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFl
>> >exJSEmitter.java
>> >index a101a4c..1de63fe 100644
>> >---
>>
>> >a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFl
>> >exJSEmitter.java
>> >+++
>>
>> >b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFl
>> >exJSEmitter.java
>> >@@ -342,6 +342,16 @@ public class JSFlexJSEmitter extends JSGoogEmitter
>> >implements IJSFlexJSEmitter
>> >                       String className =
>> ((IInterfaceNode)pnode).getQualifiedName();
>> >                       getModel().getInternalClasses().put(className,
>> mainClassName +
>> >"." + className);
>> >               }
>> >+            else if (pnode instanceof IFunctionNode)
>> >+            {
>> >+                String className =
>> >((IFunctionNode)pnode).getQualifiedName();
>> >+                getModel().getInternalClasses().put(className,
>> >mainClassName + "." + className);
>> >+            }
>> >+            else if (pnode instanceof IVariableNode)
>> >+            {
>> >+                String className =
>> >((IVariableNode)pnode).getQualifiedName();
>> >+                getModel().getInternalClasses().put(className,
>> >mainClassName + "." + className);
>> >+            }
>> >         }
>> >
>> >         packageHeaderEmitter.emit(definition);
>> >
>> >
>> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/56060782/compiler
>> .
>>
>> >jx/src/org/apache/flex/compiler/internal/codegen/js/jx/PackageHeaderEmitte
>> >r.java
>> >----------------------------------------------------------------------
>> >diff --git
>>
>> >a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/PackageH
>> >eaderEmitter.java
>>
>> >b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/PackageH
>> >eaderEmitter.java
>> >index d0e161b..21d3c01 100644
>> >---
>>
>> >a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/PackageH
>> >eaderEmitter.java
>> >+++
>>
>> >b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/PackageH
>> >eaderEmitter.java
>> >@@ -27,8 +27,10 @@ import java.util.List;
>> > import org.apache.flex.compiler.asdoc.flexjs.ASDocComment;
>> > import org.apache.flex.compiler.codegen.ISubEmitter;
>> > import org.apache.flex.compiler.codegen.js.IJSEmitter;
>> >+import org.apache.flex.compiler.definitions.IFunctionDefinition;
>> > import org.apache.flex.compiler.definitions.IPackageDefinition;
>> > import org.apache.flex.compiler.definitions.ITypeDefinition;
>> >+import org.apache.flex.compiler.definitions.IVariableDefinition;
>> > import org.apache.flex.compiler.internal.codegen.as.ASEmitterTokens;
>> > import org.apache.flex.compiler.internal.codegen.js.JSSubEmitter;
>> > import
>> >org.apache.flex.compiler.internal.codegen.js.flexjs.JSFlexJSEmitter;
>> >@@ -61,8 +63,33 @@ public class PackageHeaderEmitter extends JSSubEmitter
>> >implements
>> >         IASScope containedScope = definition.getContainedScope();
>> >         ITypeDefinition type = EmitterUtils.findType(containedScope
>> >                 .getAllLocalDefinitions());
>> >-        if (type == null)
>> >+        String qname = null;
>> >+        if (type != null)
>> >+        {
>> >+            qname = type.getQualifiedName();
>> >+        }
>> >+        if (qname == null)
>> >+        {
>> >+            IFunctionDefinition fn =
>> >EmitterUtils.findFunction(containedScope
>> >+                    .getAllLocalDefinitions());
>> >+            if(fn != null)
>> >+            {
>> >+                qname = fn.getQualifiedName();
>> >+            }
>> >+        }
>> >+        if (qname == null)
>> >+        {
>> >+            IVariableDefinition variable =
>> >EmitterUtils.findVariable(containedScope
>> >+                    .getAllLocalDefinitions());
>> >+            if(variable != null)
>> >+            {
>> >+                qname = variable.getQualifiedName();
>> >+            }
>> >+        }
>> >+        if (qname == null)
>> >+        {
>> >             return;
>> >+        }
>> >
>> >         FlexJSProject project = (FlexJSProject) getProject();
>> >         List<File> sourcePaths = project.getSourcePath();
>> >@@ -77,7 +104,7 @@ public class PackageHeaderEmitter extends JSSubEmitter
>> >implements
>> >
>> >         writeNewline("/**");
>> >         writeNewline(" * Generated by Apache Flex Cross-Compiler from "
>> >+ sourceName);
>> >-        writeNewline(" * " + type.getQualifiedName());
>> >+        writeNewline(" * " + qname);
>> >         writeNewline(" *");
>> >         writeNewline(" * @fileoverview");
>> >         writeNewline(" *");
>> >@@ -91,7 +118,7 @@ public class PackageHeaderEmitter extends JSSubEmitter
>> >implements
>> >         write(JSGoogEmitterTokens.GOOG_PROVIDE);
>> >         write(ASEmitterTokens.PAREN_OPEN);
>> >         write(ASEmitterTokens.SINGLE_QUOTE);
>> >-
>> write(getEmitter().formatQualifiedName(type.getQualifiedName()));
>> >+        write(getEmitter().formatQualifiedName(qname));
>> >         write(ASEmitterTokens.SINGLE_QUOTE);
>> >         write(ASEmitterTokens.PAREN_CLOSE);
>> >         writeNewline(ASEmitterTokens.SEMICOLON);
>> >
>>
>>
>

Re: [4/5] git commit: [flex-falcon] [refs/heads/develop] - compiler.jx: added support for functions and variables in packages, and functions and variables after package (similar to internal classes)

Posted by Andy Dufilie <an...@gmail.com>.
Josh, does this commit resolve
https://issues.apache.org/jira/browse/FLEX-35004 ?

On Tue, Jan 12, 2016 at 11:24 AM, Alex Harui <ah...@adobe.com> wrote:

> I haven't done thorough research, but I think this change is causing the
> last remaining failure in the Falcon build.  The failing case is
> org.apache.flex.compiler.internal.codegen.js.vf2js.TestVF2JSFile.testVersio
> n in compiler.jx.tests.  The test case is dealing with an variable defined
> in an included file which has means the parent of the variable node will
> be a file node and look a lot like a file-level definition when it isn't.
>
> -Alex
>
> On 1/11/16, 11:54 AM, "joshtynjala@apache.org" <jo...@apache.org>
> wrote:
>
> >compiler.jx: added support for functions and variables in packages, and
> >functions and variables after package (similar to internal classes)
> >
> >
> >Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
> >Commit:
> http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/56060782
> >Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/56060782
> >Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/56060782
> >
> >Branch: refs/heads/develop
> >Commit: 5606078243b62fd965bf83f6e39993140d01de76
> >Parents: 8a7bdc6
> >Author: Josh Tynjala <jo...@apache.org>
> >Authored: Mon Jan 11 11:54:37 2016 -0800
> >Committer: Josh Tynjala <jo...@apache.org>
> >Committed: Mon Jan 11 11:54:37 2016 -0800
> >
> >----------------------------------------------------------------------
> > .../internal/codegen/as/ASBlockWalker.java      | 20 ++++++------
> > .../codegen/js/flexjs/JSFlexJSEmitter.java      | 10 ++++++
> > .../codegen/js/jx/PackageHeaderEmitter.java     | 33 ++++++++++++++++++--
> > 3 files changed, 49 insertions(+), 14 deletions(-)
> >----------------------------------------------------------------------
> >
> >
> >http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/56060782/compiler
> .
> >jx/src/org/apache/flex/compiler/internal/codegen/as/ASBlockWalker.java
> >----------------------------------------------------------------------
> >diff --git
> >a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASBlockWalk
> >er.java
> >b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASBlockWalk
> >er.java
> >index fec44cc..b405bb0 100644
> >---
> >a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASBlockWalk
> >er.java
> >+++
> >b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASBlockWalk
> >er.java
> >@@ -190,7 +190,9 @@ public class ASBlockWalker implements
> >IASBlockVisitor, IASBlockWalker
> >               if (pnode != null &&
> >                       (pnode instanceof IPackageNode ||
> >                        pnode instanceof IInterfaceNode ||
> >-                       pnode instanceof IClassNode))
> >+                       pnode instanceof IClassNode ||
> >+                 pnode instanceof IFunctionNode ||
> >+                 pnode instanceof IVariableNode))
> >               {
> >                   walk(pnode);
> >
> >@@ -238,11 +240,9 @@ public class ASBlockWalker implements
> >IASBlockVisitor, IASBlockWalker
> >     public void visitVariable(IVariableNode node)
> >     {
> >         debug("visitVariable()");
> >-        if (SemanticUtils.isPackageDefinition(node.getDefinition()))
> >-        {
> >-            //TODO: emit package-level variable
> >-        }
> >-        else if (SemanticUtils.isMemberDefinition(node.getDefinition()))
> >+        if (SemanticUtils.isPackageDefinition(node.getDefinition()) ||
> >+            SemanticUtils.isMemberDefinition(node.getDefinition()) ||
> >+            node.getParent() instanceof IFileNode)
> >         {
> >             emitter.emitField(node);
> >         }
> >@@ -256,11 +256,9 @@ public class ASBlockWalker implements
> >IASBlockVisitor, IASBlockWalker
> >     public void visitFunction(IFunctionNode node)
> >     {
> >         debug("visitFunction()");
> >-        if (SemanticUtils.isPackageDefinition(node.getDefinition()))
> >-        {
> >-            //TODO: emit package-level function
> >-        }
> >-        else if
> >(DefinitionUtils.isMemberDefinition(node.getDefinition()))
> >+        if (SemanticUtils.isPackageDefinition(node.getDefinition()) ||
> >+            DefinitionUtils.isMemberDefinition(node.getDefinition()) ||
> >+            node.getParent() instanceof IFileNode)
> >         {
> >             emitter.emitMethod(node);
> >         }
> >
> >http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/56060782/compiler
> .
> >jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter
> >.java
> >----------------------------------------------------------------------
> >diff --git
> >a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFl
> >exJSEmitter.java
> >b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFl
> >exJSEmitter.java
> >index a101a4c..1de63fe 100644
> >---
> >a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFl
> >exJSEmitter.java
> >+++
> >b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFl
> >exJSEmitter.java
> >@@ -342,6 +342,16 @@ public class JSFlexJSEmitter extends JSGoogEmitter
> >implements IJSFlexJSEmitter
> >                       String className =
> ((IInterfaceNode)pnode).getQualifiedName();
> >                       getModel().getInternalClasses().put(className,
> mainClassName +
> >"." + className);
> >               }
> >+            else if (pnode instanceof IFunctionNode)
> >+            {
> >+                String className =
> >((IFunctionNode)pnode).getQualifiedName();
> >+                getModel().getInternalClasses().put(className,
> >mainClassName + "." + className);
> >+            }
> >+            else if (pnode instanceof IVariableNode)
> >+            {
> >+                String className =
> >((IVariableNode)pnode).getQualifiedName();
> >+                getModel().getInternalClasses().put(className,
> >mainClassName + "." + className);
> >+            }
> >         }
> >
> >         packageHeaderEmitter.emit(definition);
> >
> >http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/56060782/compiler
> .
> >jx/src/org/apache/flex/compiler/internal/codegen/js/jx/PackageHeaderEmitte
> >r.java
> >----------------------------------------------------------------------
> >diff --git
> >a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/PackageH
> >eaderEmitter.java
> >b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/PackageH
> >eaderEmitter.java
> >index d0e161b..21d3c01 100644
> >---
> >a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/PackageH
> >eaderEmitter.java
> >+++
> >b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/PackageH
> >eaderEmitter.java
> >@@ -27,8 +27,10 @@ import java.util.List;
> > import org.apache.flex.compiler.asdoc.flexjs.ASDocComment;
> > import org.apache.flex.compiler.codegen.ISubEmitter;
> > import org.apache.flex.compiler.codegen.js.IJSEmitter;
> >+import org.apache.flex.compiler.definitions.IFunctionDefinition;
> > import org.apache.flex.compiler.definitions.IPackageDefinition;
> > import org.apache.flex.compiler.definitions.ITypeDefinition;
> >+import org.apache.flex.compiler.definitions.IVariableDefinition;
> > import org.apache.flex.compiler.internal.codegen.as.ASEmitterTokens;
> > import org.apache.flex.compiler.internal.codegen.js.JSSubEmitter;
> > import
> >org.apache.flex.compiler.internal.codegen.js.flexjs.JSFlexJSEmitter;
> >@@ -61,8 +63,33 @@ public class PackageHeaderEmitter extends JSSubEmitter
> >implements
> >         IASScope containedScope = definition.getContainedScope();
> >         ITypeDefinition type = EmitterUtils.findType(containedScope
> >                 .getAllLocalDefinitions());
> >-        if (type == null)
> >+        String qname = null;
> >+        if (type != null)
> >+        {
> >+            qname = type.getQualifiedName();
> >+        }
> >+        if (qname == null)
> >+        {
> >+            IFunctionDefinition fn =
> >EmitterUtils.findFunction(containedScope
> >+                    .getAllLocalDefinitions());
> >+            if(fn != null)
> >+            {
> >+                qname = fn.getQualifiedName();
> >+            }
> >+        }
> >+        if (qname == null)
> >+        {
> >+            IVariableDefinition variable =
> >EmitterUtils.findVariable(containedScope
> >+                    .getAllLocalDefinitions());
> >+            if(variable != null)
> >+            {
> >+                qname = variable.getQualifiedName();
> >+            }
> >+        }
> >+        if (qname == null)
> >+        {
> >             return;
> >+        }
> >
> >         FlexJSProject project = (FlexJSProject) getProject();
> >         List<File> sourcePaths = project.getSourcePath();
> >@@ -77,7 +104,7 @@ public class PackageHeaderEmitter extends JSSubEmitter
> >implements
> >
> >         writeNewline("/**");
> >         writeNewline(" * Generated by Apache Flex Cross-Compiler from "
> >+ sourceName);
> >-        writeNewline(" * " + type.getQualifiedName());
> >+        writeNewline(" * " + qname);
> >         writeNewline(" *");
> >         writeNewline(" * @fileoverview");
> >         writeNewline(" *");
> >@@ -91,7 +118,7 @@ public class PackageHeaderEmitter extends JSSubEmitter
> >implements
> >         write(JSGoogEmitterTokens.GOOG_PROVIDE);
> >         write(ASEmitterTokens.PAREN_OPEN);
> >         write(ASEmitterTokens.SINGLE_QUOTE);
> >-        write(getEmitter().formatQualifiedName(type.getQualifiedName()));
> >+        write(getEmitter().formatQualifiedName(qname));
> >         write(ASEmitterTokens.SINGLE_QUOTE);
> >         write(ASEmitterTokens.PAREN_CLOSE);
> >         writeNewline(ASEmitterTokens.SEMICOLON);
> >
>
>

Re: [4/5] git commit: [flex-falcon] [refs/heads/develop] - compiler.jx: added support for functions and variables in packages, and functions and variables after package (similar to internal classes)

Posted by Andy Dufilie <an...@gmail.com>.
Josh, does this commit resolve
https://issues.apache.org/jira/browse/FLEX-35004 ?

On Tue, Jan 12, 2016 at 11:24 AM, Alex Harui <ah...@adobe.com> wrote:

> I haven't done thorough research, but I think this change is causing the
> last remaining failure in the Falcon build.  The failing case is
> org.apache.flex.compiler.internal.codegen.js.vf2js.TestVF2JSFile.testVersio
> n in compiler.jx.tests.  The test case is dealing with an variable defined
> in an included file which has means the parent of the variable node will
> be a file node and look a lot like a file-level definition when it isn't.
>
> -Alex
>
> On 1/11/16, 11:54 AM, "joshtynjala@apache.org" <jo...@apache.org>
> wrote:
>
> >compiler.jx: added support for functions and variables in packages, and
> >functions and variables after package (similar to internal classes)
> >
> >
> >Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
> >Commit:
> http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/56060782
> >Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/56060782
> >Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/56060782
> >
> >Branch: refs/heads/develop
> >Commit: 5606078243b62fd965bf83f6e39993140d01de76
> >Parents: 8a7bdc6
> >Author: Josh Tynjala <jo...@apache.org>
> >Authored: Mon Jan 11 11:54:37 2016 -0800
> >Committer: Josh Tynjala <jo...@apache.org>
> >Committed: Mon Jan 11 11:54:37 2016 -0800
> >
> >----------------------------------------------------------------------
> > .../internal/codegen/as/ASBlockWalker.java      | 20 ++++++------
> > .../codegen/js/flexjs/JSFlexJSEmitter.java      | 10 ++++++
> > .../codegen/js/jx/PackageHeaderEmitter.java     | 33 ++++++++++++++++++--
> > 3 files changed, 49 insertions(+), 14 deletions(-)
> >----------------------------------------------------------------------
> >
> >
> >http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/56060782/compiler
> .
> >jx/src/org/apache/flex/compiler/internal/codegen/as/ASBlockWalker.java
> >----------------------------------------------------------------------
> >diff --git
> >a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASBlockWalk
> >er.java
> >b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASBlockWalk
> >er.java
> >index fec44cc..b405bb0 100644
> >---
> >a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASBlockWalk
> >er.java
> >+++
> >b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASBlockWalk
> >er.java
> >@@ -190,7 +190,9 @@ public class ASBlockWalker implements
> >IASBlockVisitor, IASBlockWalker
> >               if (pnode != null &&
> >                       (pnode instanceof IPackageNode ||
> >                        pnode instanceof IInterfaceNode ||
> >-                       pnode instanceof IClassNode))
> >+                       pnode instanceof IClassNode ||
> >+                 pnode instanceof IFunctionNode ||
> >+                 pnode instanceof IVariableNode))
> >               {
> >                   walk(pnode);
> >
> >@@ -238,11 +240,9 @@ public class ASBlockWalker implements
> >IASBlockVisitor, IASBlockWalker
> >     public void visitVariable(IVariableNode node)
> >     {
> >         debug("visitVariable()");
> >-        if (SemanticUtils.isPackageDefinition(node.getDefinition()))
> >-        {
> >-            //TODO: emit package-level variable
> >-        }
> >-        else if (SemanticUtils.isMemberDefinition(node.getDefinition()))
> >+        if (SemanticUtils.isPackageDefinition(node.getDefinition()) ||
> >+            SemanticUtils.isMemberDefinition(node.getDefinition()) ||
> >+            node.getParent() instanceof IFileNode)
> >         {
> >             emitter.emitField(node);
> >         }
> >@@ -256,11 +256,9 @@ public class ASBlockWalker implements
> >IASBlockVisitor, IASBlockWalker
> >     public void visitFunction(IFunctionNode node)
> >     {
> >         debug("visitFunction()");
> >-        if (SemanticUtils.isPackageDefinition(node.getDefinition()))
> >-        {
> >-            //TODO: emit package-level function
> >-        }
> >-        else if
> >(DefinitionUtils.isMemberDefinition(node.getDefinition()))
> >+        if (SemanticUtils.isPackageDefinition(node.getDefinition()) ||
> >+            DefinitionUtils.isMemberDefinition(node.getDefinition()) ||
> >+            node.getParent() instanceof IFileNode)
> >         {
> >             emitter.emitMethod(node);
> >         }
> >
> >http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/56060782/compiler
> .
> >jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter
> >.java
> >----------------------------------------------------------------------
> >diff --git
> >a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFl
> >exJSEmitter.java
> >b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFl
> >exJSEmitter.java
> >index a101a4c..1de63fe 100644
> >---
> >a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFl
> >exJSEmitter.java
> >+++
> >b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFl
> >exJSEmitter.java
> >@@ -342,6 +342,16 @@ public class JSFlexJSEmitter extends JSGoogEmitter
> >implements IJSFlexJSEmitter
> >                       String className =
> ((IInterfaceNode)pnode).getQualifiedName();
> >                       getModel().getInternalClasses().put(className,
> mainClassName +
> >"." + className);
> >               }
> >+            else if (pnode instanceof IFunctionNode)
> >+            {
> >+                String className =
> >((IFunctionNode)pnode).getQualifiedName();
> >+                getModel().getInternalClasses().put(className,
> >mainClassName + "." + className);
> >+            }
> >+            else if (pnode instanceof IVariableNode)
> >+            {
> >+                String className =
> >((IVariableNode)pnode).getQualifiedName();
> >+                getModel().getInternalClasses().put(className,
> >mainClassName + "." + className);
> >+            }
> >         }
> >
> >         packageHeaderEmitter.emit(definition);
> >
> >http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/56060782/compiler
> .
> >jx/src/org/apache/flex/compiler/internal/codegen/js/jx/PackageHeaderEmitte
> >r.java
> >----------------------------------------------------------------------
> >diff --git
> >a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/PackageH
> >eaderEmitter.java
> >b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/PackageH
> >eaderEmitter.java
> >index d0e161b..21d3c01 100644
> >---
> >a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/PackageH
> >eaderEmitter.java
> >+++
> >b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/PackageH
> >eaderEmitter.java
> >@@ -27,8 +27,10 @@ import java.util.List;
> > import org.apache.flex.compiler.asdoc.flexjs.ASDocComment;
> > import org.apache.flex.compiler.codegen.ISubEmitter;
> > import org.apache.flex.compiler.codegen.js.IJSEmitter;
> >+import org.apache.flex.compiler.definitions.IFunctionDefinition;
> > import org.apache.flex.compiler.definitions.IPackageDefinition;
> > import org.apache.flex.compiler.definitions.ITypeDefinition;
> >+import org.apache.flex.compiler.definitions.IVariableDefinition;
> > import org.apache.flex.compiler.internal.codegen.as.ASEmitterTokens;
> > import org.apache.flex.compiler.internal.codegen.js.JSSubEmitter;
> > import
> >org.apache.flex.compiler.internal.codegen.js.flexjs.JSFlexJSEmitter;
> >@@ -61,8 +63,33 @@ public class PackageHeaderEmitter extends JSSubEmitter
> >implements
> >         IASScope containedScope = definition.getContainedScope();
> >         ITypeDefinition type = EmitterUtils.findType(containedScope
> >                 .getAllLocalDefinitions());
> >-        if (type == null)
> >+        String qname = null;
> >+        if (type != null)
> >+        {
> >+            qname = type.getQualifiedName();
> >+        }
> >+        if (qname == null)
> >+        {
> >+            IFunctionDefinition fn =
> >EmitterUtils.findFunction(containedScope
> >+                    .getAllLocalDefinitions());
> >+            if(fn != null)
> >+            {
> >+                qname = fn.getQualifiedName();
> >+            }
> >+        }
> >+        if (qname == null)
> >+        {
> >+            IVariableDefinition variable =
> >EmitterUtils.findVariable(containedScope
> >+                    .getAllLocalDefinitions());
> >+            if(variable != null)
> >+            {
> >+                qname = variable.getQualifiedName();
> >+            }
> >+        }
> >+        if (qname == null)
> >+        {
> >             return;
> >+        }
> >
> >         FlexJSProject project = (FlexJSProject) getProject();
> >         List<File> sourcePaths = project.getSourcePath();
> >@@ -77,7 +104,7 @@ public class PackageHeaderEmitter extends JSSubEmitter
> >implements
> >
> >         writeNewline("/**");
> >         writeNewline(" * Generated by Apache Flex Cross-Compiler from "
> >+ sourceName);
> >-        writeNewline(" * " + type.getQualifiedName());
> >+        writeNewline(" * " + qname);
> >         writeNewline(" *");
> >         writeNewline(" * @fileoverview");
> >         writeNewline(" *");
> >@@ -91,7 +118,7 @@ public class PackageHeaderEmitter extends JSSubEmitter
> >implements
> >         write(JSGoogEmitterTokens.GOOG_PROVIDE);
> >         write(ASEmitterTokens.PAREN_OPEN);
> >         write(ASEmitterTokens.SINGLE_QUOTE);
> >-        write(getEmitter().formatQualifiedName(type.getQualifiedName()));
> >+        write(getEmitter().formatQualifiedName(qname));
> >         write(ASEmitterTokens.SINGLE_QUOTE);
> >         write(ASEmitterTokens.PAREN_CLOSE);
> >         writeNewline(ASEmitterTokens.SEMICOLON);
> >
>
>

Re: [4/5] git commit: [flex-falcon] [refs/heads/develop] - compiler.jx: added support for functions and variables in packages, and functions and variables after package (similar to internal classes)

Posted by Alex Harui <ah...@adobe.com>.
I haven't done thorough research, but I think this change is causing the
last remaining failure in the Falcon build.  The failing case is
org.apache.flex.compiler.internal.codegen.js.vf2js.TestVF2JSFile.testVersio
n in compiler.jx.tests.  The test case is dealing with an variable defined
in an included file which has means the parent of the variable node will
be a file node and look a lot like a file-level definition when it isn't.

-Alex

On 1/11/16, 11:54 AM, "joshtynjala@apache.org" <jo...@apache.org>
wrote:

>compiler.jx: added support for functions and variables in packages, and
>functions and variables after package (similar to internal classes)
>
>
>Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
>Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/56060782
>Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/56060782
>Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/56060782
>
>Branch: refs/heads/develop
>Commit: 5606078243b62fd965bf83f6e39993140d01de76
>Parents: 8a7bdc6
>Author: Josh Tynjala <jo...@apache.org>
>Authored: Mon Jan 11 11:54:37 2016 -0800
>Committer: Josh Tynjala <jo...@apache.org>
>Committed: Mon Jan 11 11:54:37 2016 -0800
>
>----------------------------------------------------------------------
> .../internal/codegen/as/ASBlockWalker.java      | 20 ++++++------
> .../codegen/js/flexjs/JSFlexJSEmitter.java      | 10 ++++++
> .../codegen/js/jx/PackageHeaderEmitter.java     | 33 ++++++++++++++++++--
> 3 files changed, 49 insertions(+), 14 deletions(-)
>----------------------------------------------------------------------
>
>
>http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/56060782/compiler.
>jx/src/org/apache/flex/compiler/internal/codegen/as/ASBlockWalker.java
>----------------------------------------------------------------------
>diff --git 
>a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASBlockWalk
>er.java 
>b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASBlockWalk
>er.java
>index fec44cc..b405bb0 100644
>--- 
>a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASBlockWalk
>er.java
>+++ 
>b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASBlockWalk
>er.java
>@@ -190,7 +190,9 @@ public class ASBlockWalker implements
>IASBlockVisitor, IASBlockWalker
> 	        if (pnode != null &&
> 	        	(pnode instanceof IPackageNode ||
> 	        	 pnode instanceof IInterfaceNode ||
>-	        	 pnode instanceof IClassNode))
>+	        	 pnode instanceof IClassNode ||
>+                 pnode instanceof IFunctionNode ||
>+                 pnode instanceof IVariableNode))
> 	        {
> 	            walk(pnode);
> 	            
>@@ -238,11 +240,9 @@ public class ASBlockWalker implements
>IASBlockVisitor, IASBlockWalker
>     public void visitVariable(IVariableNode node)
>     {
>         debug("visitVariable()");
>-        if (SemanticUtils.isPackageDefinition(node.getDefinition()))
>-        {
>-            //TODO: emit package-level variable
>-        }
>-        else if (SemanticUtils.isMemberDefinition(node.getDefinition()))
>+        if (SemanticUtils.isPackageDefinition(node.getDefinition()) ||
>+            SemanticUtils.isMemberDefinition(node.getDefinition()) ||
>+            node.getParent() instanceof IFileNode)
>         {
>             emitter.emitField(node);
>         }
>@@ -256,11 +256,9 @@ public class ASBlockWalker implements
>IASBlockVisitor, IASBlockWalker
>     public void visitFunction(IFunctionNode node)
>     {
>         debug("visitFunction()");
>-        if (SemanticUtils.isPackageDefinition(node.getDefinition()))
>-        {
>-            //TODO: emit package-level function
>-        }
>-        else if 
>(DefinitionUtils.isMemberDefinition(node.getDefinition()))
>+        if (SemanticUtils.isPackageDefinition(node.getDefinition()) ||
>+            DefinitionUtils.isMemberDefinition(node.getDefinition()) ||
>+            node.getParent() instanceof IFileNode)
>         {
>             emitter.emitMethod(node);
>         }
>
>http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/56060782/compiler.
>jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter
>.java
>----------------------------------------------------------------------
>diff --git 
>a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFl
>exJSEmitter.java 
>b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFl
>exJSEmitter.java
>index a101a4c..1de63fe 100644
>--- 
>a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFl
>exJSEmitter.java
>+++ 
>b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFl
>exJSEmitter.java
>@@ -342,6 +342,16 @@ public class JSFlexJSEmitter extends JSGoogEmitter
>implements IJSFlexJSEmitter
> 	        	String className = ((IInterfaceNode)pnode).getQualifiedName();
> 	        	getModel().getInternalClasses().put(className, mainClassName +
>"." + className);
> 	        }
>+            else if (pnode instanceof IFunctionNode)
>+            {
>+                String className =
>((IFunctionNode)pnode).getQualifiedName();
>+                getModel().getInternalClasses().put(className,
>mainClassName + "." + className);
>+            }
>+            else if (pnode instanceof IVariableNode)
>+            {
>+                String className =
>((IVariableNode)pnode).getQualifiedName();
>+                getModel().getInternalClasses().put(className,
>mainClassName + "." + className);
>+            }
>         }
> 
>         packageHeaderEmitter.emit(definition);
>
>http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/56060782/compiler.
>jx/src/org/apache/flex/compiler/internal/codegen/js/jx/PackageHeaderEmitte
>r.java
>----------------------------------------------------------------------
>diff --git 
>a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/PackageH
>eaderEmitter.java 
>b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/PackageH
>eaderEmitter.java
>index d0e161b..21d3c01 100644
>--- 
>a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/PackageH
>eaderEmitter.java
>+++ 
>b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/PackageH
>eaderEmitter.java
>@@ -27,8 +27,10 @@ import java.util.List;
> import org.apache.flex.compiler.asdoc.flexjs.ASDocComment;
> import org.apache.flex.compiler.codegen.ISubEmitter;
> import org.apache.flex.compiler.codegen.js.IJSEmitter;
>+import org.apache.flex.compiler.definitions.IFunctionDefinition;
> import org.apache.flex.compiler.definitions.IPackageDefinition;
> import org.apache.flex.compiler.definitions.ITypeDefinition;
>+import org.apache.flex.compiler.definitions.IVariableDefinition;
> import org.apache.flex.compiler.internal.codegen.as.ASEmitterTokens;
> import org.apache.flex.compiler.internal.codegen.js.JSSubEmitter;
> import 
>org.apache.flex.compiler.internal.codegen.js.flexjs.JSFlexJSEmitter;
>@@ -61,8 +63,33 @@ public class PackageHeaderEmitter extends JSSubEmitter
>implements
>         IASScope containedScope = definition.getContainedScope();
>         ITypeDefinition type = EmitterUtils.findType(containedScope
>                 .getAllLocalDefinitions());
>-        if (type == null)
>+        String qname = null;
>+        if (type != null)
>+        {
>+            qname = type.getQualifiedName();
>+        }
>+        if (qname == null)
>+        {
>+            IFunctionDefinition fn =
>EmitterUtils.findFunction(containedScope
>+                    .getAllLocalDefinitions());
>+            if(fn != null)
>+            {
>+                qname = fn.getQualifiedName();
>+            }
>+        }
>+        if (qname == null)
>+        {
>+            IVariableDefinition variable =
>EmitterUtils.findVariable(containedScope
>+                    .getAllLocalDefinitions());
>+            if(variable != null)
>+            {
>+                qname = variable.getQualifiedName();
>+            }
>+        }
>+        if (qname == null)
>+        {
>             return;
>+        }
>         
>         FlexJSProject project = (FlexJSProject) getProject();
>         List<File> sourcePaths = project.getSourcePath();
>@@ -77,7 +104,7 @@ public class PackageHeaderEmitter extends JSSubEmitter
>implements
> 
>         writeNewline("/**");
>         writeNewline(" * Generated by Apache Flex Cross-Compiler from "
>+ sourceName);
>-        writeNewline(" * " + type.getQualifiedName());
>+        writeNewline(" * " + qname);
>         writeNewline(" *");
>         writeNewline(" * @fileoverview");
>         writeNewline(" *");
>@@ -91,7 +118,7 @@ public class PackageHeaderEmitter extends JSSubEmitter
>implements
>         write(JSGoogEmitterTokens.GOOG_PROVIDE);
>         write(ASEmitterTokens.PAREN_OPEN);
>         write(ASEmitterTokens.SINGLE_QUOTE);
>-        write(getEmitter().formatQualifiedName(type.getQualifiedName()));
>+        write(getEmitter().formatQualifiedName(qname));
>         write(ASEmitterTokens.SINGLE_QUOTE);
>         write(ASEmitterTokens.PAREN_CLOSE);
>         writeNewline(ASEmitterTokens.SEMICOLON);
>


Re: [4/5] git commit: [flex-falcon] [refs/heads/develop] - compiler.jx: added support for functions and variables in packages, and functions and variables after package (similar to internal classes)

Posted by Alex Harui <ah...@adobe.com>.
I haven't done thorough research, but I think this change is causing the
last remaining failure in the Falcon build.  The failing case is
org.apache.flex.compiler.internal.codegen.js.vf2js.TestVF2JSFile.testVersio
n in compiler.jx.tests.  The test case is dealing with an variable defined
in an included file which has means the parent of the variable node will
be a file node and look a lot like a file-level definition when it isn't.

-Alex

On 1/11/16, 11:54 AM, "joshtynjala@apache.org" <jo...@apache.org>
wrote:

>compiler.jx: added support for functions and variables in packages, and
>functions and variables after package (similar to internal classes)
>
>
>Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
>Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/56060782
>Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/56060782
>Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/56060782
>
>Branch: refs/heads/develop
>Commit: 5606078243b62fd965bf83f6e39993140d01de76
>Parents: 8a7bdc6
>Author: Josh Tynjala <jo...@apache.org>
>Authored: Mon Jan 11 11:54:37 2016 -0800
>Committer: Josh Tynjala <jo...@apache.org>
>Committed: Mon Jan 11 11:54:37 2016 -0800
>
>----------------------------------------------------------------------
> .../internal/codegen/as/ASBlockWalker.java      | 20 ++++++------
> .../codegen/js/flexjs/JSFlexJSEmitter.java      | 10 ++++++
> .../codegen/js/jx/PackageHeaderEmitter.java     | 33 ++++++++++++++++++--
> 3 files changed, 49 insertions(+), 14 deletions(-)
>----------------------------------------------------------------------
>
>
>http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/56060782/compiler.
>jx/src/org/apache/flex/compiler/internal/codegen/as/ASBlockWalker.java
>----------------------------------------------------------------------
>diff --git 
>a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASBlockWalk
>er.java 
>b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASBlockWalk
>er.java
>index fec44cc..b405bb0 100644
>--- 
>a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASBlockWalk
>er.java
>+++ 
>b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASBlockWalk
>er.java
>@@ -190,7 +190,9 @@ public class ASBlockWalker implements
>IASBlockVisitor, IASBlockWalker
> 	        if (pnode != null &&
> 	        	(pnode instanceof IPackageNode ||
> 	        	 pnode instanceof IInterfaceNode ||
>-	        	 pnode instanceof IClassNode))
>+	        	 pnode instanceof IClassNode ||
>+                 pnode instanceof IFunctionNode ||
>+                 pnode instanceof IVariableNode))
> 	        {
> 	            walk(pnode);
> 	            
>@@ -238,11 +240,9 @@ public class ASBlockWalker implements
>IASBlockVisitor, IASBlockWalker
>     public void visitVariable(IVariableNode node)
>     {
>         debug("visitVariable()");
>-        if (SemanticUtils.isPackageDefinition(node.getDefinition()))
>-        {
>-            //TODO: emit package-level variable
>-        }
>-        else if (SemanticUtils.isMemberDefinition(node.getDefinition()))
>+        if (SemanticUtils.isPackageDefinition(node.getDefinition()) ||
>+            SemanticUtils.isMemberDefinition(node.getDefinition()) ||
>+            node.getParent() instanceof IFileNode)
>         {
>             emitter.emitField(node);
>         }
>@@ -256,11 +256,9 @@ public class ASBlockWalker implements
>IASBlockVisitor, IASBlockWalker
>     public void visitFunction(IFunctionNode node)
>     {
>         debug("visitFunction()");
>-        if (SemanticUtils.isPackageDefinition(node.getDefinition()))
>-        {
>-            //TODO: emit package-level function
>-        }
>-        else if 
>(DefinitionUtils.isMemberDefinition(node.getDefinition()))
>+        if (SemanticUtils.isPackageDefinition(node.getDefinition()) ||
>+            DefinitionUtils.isMemberDefinition(node.getDefinition()) ||
>+            node.getParent() instanceof IFileNode)
>         {
>             emitter.emitMethod(node);
>         }
>
>http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/56060782/compiler.
>jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter
>.java
>----------------------------------------------------------------------
>diff --git 
>a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFl
>exJSEmitter.java 
>b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFl
>exJSEmitter.java
>index a101a4c..1de63fe 100644
>--- 
>a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFl
>exJSEmitter.java
>+++ 
>b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFl
>exJSEmitter.java
>@@ -342,6 +342,16 @@ public class JSFlexJSEmitter extends JSGoogEmitter
>implements IJSFlexJSEmitter
> 	        	String className = ((IInterfaceNode)pnode).getQualifiedName();
> 	        	getModel().getInternalClasses().put(className, mainClassName +
>"." + className);
> 	        }
>+            else if (pnode instanceof IFunctionNode)
>+            {
>+                String className =
>((IFunctionNode)pnode).getQualifiedName();
>+                getModel().getInternalClasses().put(className,
>mainClassName + "." + className);
>+            }
>+            else if (pnode instanceof IVariableNode)
>+            {
>+                String className =
>((IVariableNode)pnode).getQualifiedName();
>+                getModel().getInternalClasses().put(className,
>mainClassName + "." + className);
>+            }
>         }
> 
>         packageHeaderEmitter.emit(definition);
>
>http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/56060782/compiler.
>jx/src/org/apache/flex/compiler/internal/codegen/js/jx/PackageHeaderEmitte
>r.java
>----------------------------------------------------------------------
>diff --git 
>a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/PackageH
>eaderEmitter.java 
>b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/PackageH
>eaderEmitter.java
>index d0e161b..21d3c01 100644
>--- 
>a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/PackageH
>eaderEmitter.java
>+++ 
>b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/PackageH
>eaderEmitter.java
>@@ -27,8 +27,10 @@ import java.util.List;
> import org.apache.flex.compiler.asdoc.flexjs.ASDocComment;
> import org.apache.flex.compiler.codegen.ISubEmitter;
> import org.apache.flex.compiler.codegen.js.IJSEmitter;
>+import org.apache.flex.compiler.definitions.IFunctionDefinition;
> import org.apache.flex.compiler.definitions.IPackageDefinition;
> import org.apache.flex.compiler.definitions.ITypeDefinition;
>+import org.apache.flex.compiler.definitions.IVariableDefinition;
> import org.apache.flex.compiler.internal.codegen.as.ASEmitterTokens;
> import org.apache.flex.compiler.internal.codegen.js.JSSubEmitter;
> import 
>org.apache.flex.compiler.internal.codegen.js.flexjs.JSFlexJSEmitter;
>@@ -61,8 +63,33 @@ public class PackageHeaderEmitter extends JSSubEmitter
>implements
>         IASScope containedScope = definition.getContainedScope();
>         ITypeDefinition type = EmitterUtils.findType(containedScope
>                 .getAllLocalDefinitions());
>-        if (type == null)
>+        String qname = null;
>+        if (type != null)
>+        {
>+            qname = type.getQualifiedName();
>+        }
>+        if (qname == null)
>+        {
>+            IFunctionDefinition fn =
>EmitterUtils.findFunction(containedScope
>+                    .getAllLocalDefinitions());
>+            if(fn != null)
>+            {
>+                qname = fn.getQualifiedName();
>+            }
>+        }
>+        if (qname == null)
>+        {
>+            IVariableDefinition variable =
>EmitterUtils.findVariable(containedScope
>+                    .getAllLocalDefinitions());
>+            if(variable != null)
>+            {
>+                qname = variable.getQualifiedName();
>+            }
>+        }
>+        if (qname == null)
>+        {
>             return;
>+        }
>         
>         FlexJSProject project = (FlexJSProject) getProject();
>         List<File> sourcePaths = project.getSourcePath();
>@@ -77,7 +104,7 @@ public class PackageHeaderEmitter extends JSSubEmitter
>implements
> 
>         writeNewline("/**");
>         writeNewline(" * Generated by Apache Flex Cross-Compiler from "
>+ sourceName);
>-        writeNewline(" * " + type.getQualifiedName());
>+        writeNewline(" * " + qname);
>         writeNewline(" *");
>         writeNewline(" * @fileoverview");
>         writeNewline(" *");
>@@ -91,7 +118,7 @@ public class PackageHeaderEmitter extends JSSubEmitter
>implements
>         write(JSGoogEmitterTokens.GOOG_PROVIDE);
>         write(ASEmitterTokens.PAREN_OPEN);
>         write(ASEmitterTokens.SINGLE_QUOTE);
>-        write(getEmitter().formatQualifiedName(type.getQualifiedName()));
>+        write(getEmitter().formatQualifiedName(qname));
>         write(ASEmitterTokens.SINGLE_QUOTE);
>         write(ASEmitterTokens.PAREN_CLOSE);
>         writeNewline(ASEmitterTokens.SEMICOLON);
>