Yes, it should be resolved. Package-level functions are now working.

- Josh
On Jan 12, 2016 8:36 AM, "Andy Dufilie" <andy.dufi...@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 <aha...@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, "joshtynj...@apache.org" <joshtynj...@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 <joshtynj...@apache.org>
>> >Authored: Mon Jan 11 11:54:37 2016 -0800
>> >Committer: Josh Tynjala <joshtynj...@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);
>> >
>>
>>
>

Reply via email to