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