You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by pi...@apache.org on 2017/08/13 22:03:39 UTC

[01/13] git commit: [flex-falcon] [refs/heads/feature/amf] - compiler-jx: new -js-default-initializers option works for member variables too

Repository: flex-falcon
Updated Branches:
  refs/heads/feature/amf c500b3fe5 -> 7bc6f7025


compiler-jx: new -js-default-initializers option works for member variables 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/d51eb8a4
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/d51eb8a4
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/d51eb8a4

Branch: refs/heads/feature/amf
Commit: d51eb8a48acc357bc592ef5c965e9c1995fdb689
Parents: c500b3f
Author: Josh Tynjala <jo...@apache.org>
Authored: Wed Aug 2 15:35:47 2017 -0700
Committer: Josh Tynjala <jo...@apache.org>
Committed: Wed Aug 2 15:35:47 2017 -0700

----------------------------------------------------------------------
 .../internal/codegen/js/jx/FieldEmitter.java    | 37 ++++++++++++++++++++
 1 file changed, 37 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/d51eb8a4/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 ef62ad2..0f11c0d 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
@@ -24,6 +24,7 @@ import org.apache.flex.compiler.codegen.js.IJSEmitter;
 import org.apache.flex.compiler.codegen.js.goog.IJSGoogDocEmitter;
 import org.apache.flex.compiler.common.ASModifier;
 import org.apache.flex.compiler.common.ModifiersSet;
+import org.apache.flex.compiler.constants.IASKeywordConstants;
 import org.apache.flex.compiler.definitions.IDefinition;
 import org.apache.flex.compiler.definitions.IVariableDefinition;
 import org.apache.flex.compiler.internal.codegen.as.ASEmitterTokens;
@@ -32,9 +33,11 @@ import org.apache.flex.compiler.internal.codegen.js.JSSessionModel.BindableVarIn
 import org.apache.flex.compiler.internal.codegen.js.JSSubEmitter;
 import org.apache.flex.compiler.internal.codegen.js.utils.EmitterUtils;
 import org.apache.flex.compiler.internal.definitions.FunctionDefinition;
+import org.apache.flex.compiler.internal.projects.FlexJSProject;
 import org.apache.flex.compiler.internal.tree.as.ChainedVariableNode;
 import org.apache.flex.compiler.internal.tree.as.FunctionCallNode;
 import org.apache.flex.compiler.internal.tree.as.IdentifierNode;
+import org.apache.flex.compiler.projects.ICompilerProject;
 import org.apache.flex.compiler.tree.ASTNodeID;
 import org.apache.flex.compiler.tree.as.IASNode;
 import org.apache.flex.compiler.tree.as.IExpressionNode;
@@ -165,6 +168,40 @@ public class FieldEmitter extends JSSubEmitter implements
                 writeToken(ASEmitterTokens.EQUAL);
                 write("0");
         	}
+            boolean defaultInitializers = false;
+            ICompilerProject project = getProject();
+            if(project instanceof FlexJSProject)
+            {
+                FlexJSProject fjsProject = (FlexJSProject) project;
+                if(fjsProject.config != null)
+                {
+                    defaultInitializers = fjsProject.config.getJsDefaultInitializers();
+                }
+            }
+            if (defaultInitializers)
+            {
+                if (defName.equals("Number"))
+                {
+                    write(ASEmitterTokens.SPACE);
+                    writeToken(ASEmitterTokens.EQUAL);
+                    write(IASKeywordConstants.NA_N);
+                }
+                else if (defName.equals("Boolean"))
+                {
+                    write(ASEmitterTokens.SPACE);
+                    writeToken(ASEmitterTokens.EQUAL);
+                    write(IASKeywordConstants.FALSE);
+                }
+                else if (!defName.equals("*"))
+                {
+                    //type * is meant to default to undefined, so it
+                    //doesn't need to be initialized, but everything
+                    //else should default to null
+                    write(ASEmitterTokens.SPACE);
+                    writeToken(ASEmitterTokens.EQUAL);
+                    write(IASKeywordConstants.NULL);
+                }
+            }
         }
 
         if (!(node instanceof ChainedVariableNode))


[11/13] git commit: [flex-falcon] [refs/heads/feature/amf] - some binding expressions don't return a definition

Posted by pi...@apache.org.
some binding expressions don't return a definition


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

Branch: refs/heads/feature/amf
Commit: c2cedaec79be573ed2987bc279bd3fc934c5cc6e
Parents: 43883be
Author: Alex Harui <ah...@apache.org>
Authored: Sat Aug 12 08:43:47 2017 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Sat Aug 12 08:43:59 2017 -0700

----------------------------------------------------------------------
 .../internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java       | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c2cedaec/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
index 5d29850..56b49e1 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
@@ -1163,8 +1163,11 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
             	IMXMLSingleDataBindingNode sbdn = (IMXMLSingleDataBindingNode)node;
             	FlexJSProject project = (FlexJSProject)getMXMLWalker().getProject();
             	IDefinition bdef = sbdn.getExpressionNode().resolve(project);
-            	IDefinition cdef = bdef.getParent();
-            	project.addExportedName(/*cdef.getQualifiedName() + "." + */bdef.getBaseName());            	
+            	if (bdef != null)
+            	{
+	            	IDefinition cdef = bdef.getParent();
+	            	project.addExportedName(/*cdef.getQualifiedName() + "." + */bdef.getBaseName());
+            	}
             }
             s = bi.getSourceString();
             if (s == null && bi.isSourceSimplePublicProperty())


[09/13] git commit: [flex-falcon] [refs/heads/feature/amf] - control which getter/setters get renamed by GCC by faking a set of externs. AFAICT that is what @export on the Object.defineProperties object did. It didn't actually create an export alias li

Posted by pi...@apache.org.
control which getter/setters get renamed by GCC by faking a set of externs.  AFAICT that is what @export on the Object.defineProperties object did.  It didn't actually create an export alias like exportSymbol per class, it just prevented renaming of the object keys with that name


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

Branch: refs/heads/feature/amf
Commit: 207a95872e4928a5af40209a6f436c51e7c14ace
Parents: 6331b80
Author: Alex Harui <ah...@apache.org>
Authored: Fri Aug 11 20:55:06 2017 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Fri Aug 11 20:55:06 2017 -0700

----------------------------------------------------------------------
 .../codegen/mxml/flexjs/MXMLFlexJSEmitter.java  | 45 ++++++++++++++++++++
 .../mxml/flexjs/MXMLFlexJSPublisher.java        | 36 ++++++++++++++++
 .../internal/projects/FlexJSProject.java        | 12 ++++++
 3 files changed, 93 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/207a9587/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
index c79bfea..5d29850 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
@@ -43,6 +43,7 @@ import org.apache.flex.compiler.constants.IASKeywordConstants;
 import org.apache.flex.compiler.constants.IASLanguageConstants;
 import org.apache.flex.compiler.definitions.IClassDefinition;
 import org.apache.flex.compiler.definitions.IDefinition;
+import org.apache.flex.compiler.definitions.ITypeDefinition;
 import org.apache.flex.compiler.internal.codegen.as.ASEmitterTokens;
 import org.apache.flex.compiler.internal.codegen.databinding.BindingDatabase;
 import org.apache.flex.compiler.internal.codegen.databinding.BindingInfo;
@@ -753,6 +754,8 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
             MXMLDescriptorSpecifier root = currentStateOverrides;
             root.isTopNode = true;
     
+            collectExportedNames(root);
+            
 	        writeNewline("/**");
 	        if (emitExports)
 	        	writeNewline(" * @export");
@@ -788,6 +791,8 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
             MXMLDescriptorSpecifier root = propertiesTree;
             root.isTopNode = true;
             writeNewline(root.output(true));
+            
+            collectExportedNames(root);
     
             write(ASEmitterTokens.SQUARE_CLOSE);
             write(ASEmitterTokens.PAREN_CLOSE);
@@ -1152,6 +1157,15 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
         for (BindingInfo bi : bindingInfo)
         {
             String s;
+            IMXMLNode node = bi.node;
+            if (node instanceof IMXMLSingleDataBindingNode)
+            {
+            	IMXMLSingleDataBindingNode sbdn = (IMXMLSingleDataBindingNode)node;
+            	FlexJSProject project = (FlexJSProject)getMXMLWalker().getProject();
+            	IDefinition bdef = sbdn.getExpressionNode().resolve(project);
+            	IDefinition cdef = bdef.getParent();
+            	project.addExportedName(/*cdef.getQualifiedName() + "." + */bdef.getBaseName());            	
+            }
             s = bi.getSourceString();
             if (s == null && bi.isSourceSimplePublicProperty())
                 s = getSourceStringFromGetter(bi.getExpressionNodesForGetter());
@@ -1652,6 +1666,8 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
             MXMLDescriptorSpecifier root = descriptorTree.get(0);
             root.isTopNode = false;
     
+            collectExportedNames(root);
+            
             indentPush();
             writeNewline("'MXMLDescriptor': {");
             writeNewline("/** @this {" + formatQualifiedName(cname) + "} */");
@@ -1697,6 +1713,35 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
    
     }
 
+    private void collectExportedNames(MXMLDescriptorSpecifier descriptor)
+    {
+        ICompilerProject project = getMXMLWalker().getProject();
+        FlexJSProject flexJSProject = null;
+        if (project instanceof FlexJSProject)
+        {
+            flexJSProject = (FlexJSProject) project;
+            String name = descriptor.name;
+            if (name == null)
+            	name = this.classDefinition.getQualifiedName();
+            for (MXMLDescriptorSpecifier prop : descriptor.propertySpecifiers)
+            {
+            	String propName = prop.name;
+            	flexJSProject.addExportedName(/*name + "." + */propName);
+            	if (prop.propertySpecifiers.size() > 0)
+            	{
+                    collectExportedNames(prop.propertySpecifiers.get(0));            		
+            	}
+            }
+            if (descriptor.childrenSpecifier != null)
+            {
+                for (MXMLDescriptorSpecifier prop : descriptor.childrenSpecifier.propertySpecifiers)
+                {
+                	collectExportedNames(prop);
+                }
+            }
+        }
+    }
+    
     //--------------------------------------------------------------------------    
 
     private HashMap<IMXMLEventSpecifierNode, String> eventHandlerNameMap = new HashMap<IMXMLEventSpecifierNode, String>();

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/207a9587/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java
index c0c382f..a46c9ba 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java
@@ -266,6 +266,7 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher implements IJSPublisher
             compilerWrapper.addJSSourceFile(closureSourceFile);
         }
 
+        writeExportedNames(compilerWrapper);
 
         /////////////////////////////////////////////////////////////////////////////////
         // Add all the externs to the compilation
@@ -766,5 +767,40 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher implements IJSPublisher
         }
         return true;
     }
+    
+    private void writeExportedNames(JSClosureCompilerWrapper compilerWrapper)
+    {
+    	if (!googConfiguration.getExportPublicSymbols())
+    	{
+    		// if not generating exports for every public symbol
+    		// generate an externs file that blocks renaming
+    		// of properties used by MXML and dataBinding.
+	        Set<String> exportedNames = project.getExportedNames();
+	        if (exportedNames.size() > 0)
+	        {
+	        	StringBuilder sb = new StringBuilder();
+	        	sb.append("/**\n");
+	        	sb.append(" * generated by Apache FlexJS compiler\n");
+	        	sb.append(" * @externs\n");
+	        	sb.append(" */\n");
+	        	for (String name : exportedNames)
+	        	{
+	        		sb.append("\n\n");
+		        	sb.append("/**\n");
+		        	sb.append(" * @export\n");
+		        	sb.append(" */\n");
+		        	sb.append("Object.prototype." + name + ";\n");
+	        	}
+	        	File exportsFile = new File(outputFolder, "dontrename.js");
+	        	try {
+					writeFile(exportsFile, sb.toString(), false);
+				} catch (IOException e) {
+					// TODO Auto-generated catch block
+					e.printStackTrace();
+				}
+	        	compilerWrapper.addJSExternsFile(exportsFile.getAbsolutePath());
+	        }
+    	}
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/207a9587/compiler-jx/src/main/java/org/apache/flex/compiler/internal/projects/FlexJSProject.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/projects/FlexJSProject.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/projects/FlexJSProject.java
index 8dc88b0..8c2b232 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/projects/FlexJSProject.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/projects/FlexJSProject.java
@@ -21,6 +21,7 @@ package org.apache.flex.compiler.internal.projects;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
@@ -431,4 +432,15 @@ public class FlexJSProject extends FlexProject
 		return true;
 	}
 
+	private HashSet<String> exportedNames = new HashSet<String>();
+	
+	public void addExportedName(String name)
+	{
+		exportedNames.add(name);
+	}
+	
+	public Set<String> getExportedNames()
+	{
+		return exportedNames;
+	}
 }


[10/13] git commit: [flex-falcon] [refs/heads/feature/amf] - upgrade to GCC 20170626

Posted by pi...@apache.org.
upgrade to GCC 20170626


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

Branch: refs/heads/feature/amf
Commit: 43883bef53593554a7c8f065131b3eb91b92ce0c
Parents: 207a958
Author: Alex Harui <ah...@apache.org>
Authored: Sat Aug 12 07:54:01 2017 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Sat Aug 12 07:54:01 2017 -0700

----------------------------------------------------------------------
 compiler-jx/pom.xml | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/43883bef/compiler-jx/pom.xml
----------------------------------------------------------------------
diff --git a/compiler-jx/pom.xml b/compiler-jx/pom.xml
index 3f2bdf5..10b3582 100644
--- a/compiler-jx/pom.xml
+++ b/compiler-jx/pom.xml
@@ -99,14 +99,9 @@
       <version>2.0.28</version>
     </dependency>
     <dependency>
-      <groupId>org.codeartisans</groupId>
-      <artifactId>org.json</artifactId>
-      <version>20131017</version>
-    </dependency>
-    <dependency>
       <groupId>com.google.javascript</groupId>
       <artifactId>closure-compiler</artifactId>
-      <version>v20161201</version>
+      <version>v20170626</version>
     </dependency>
     <dependency>
       <groupId>org.clojure</groupId>


[03/13] git commit: [flex-falcon] [refs/heads/feature/amf] - add 'transform' to the list of CSS functions. Maybe we should allow all functions, but then it won't catch misspelled functions. If other functions are needed, add it to these two files

Posted by pi...@apache.org.
add 'transform' to the list of CSS functions.  Maybe we should allow all functions, but then it won't catch misspelled functions.  If other functions are needed, add it to these two files


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

Branch: refs/heads/feature/amf
Commit: 84170a2e868079f81f0369635591c77d97557832
Parents: 9827b9f
Author: Alex Harui <ah...@apache.org>
Authored: Sat Aug 5 21:00:13 2017 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Sat Aug 5 21:00:13 2017 -0700

----------------------------------------------------------------------
 .../internal/driver/js/flexjs/JSCSSCompilationSession.java      | 5 ++++-
 .../src/main/antlr3/org/apache/flex/compiler/internal/css/CSS.g | 1 +
 2 files changed, 5 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/84170a2e/compiler-jx/src/main/java/org/apache/flex/compiler/internal/driver/js/flexjs/JSCSSCompilationSession.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/driver/js/flexjs/JSCSSCompilationSession.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/driver/js/flexjs/JSCSSCompilationSession.java
index 902b624..b96e410 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/driver/js/flexjs/JSCSSCompilationSession.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/driver/js/flexjs/JSCSSCompilationSession.java
@@ -45,7 +45,8 @@ public class JSCSSCompilationSession extends CSSCompilationSession
 	         "linear-gradient",
 	         "progid:DXImageTransform.Microsoft.gradient",
 	         "translateX",
-	         "translateY"	
+	         "translateY",
+	         "translate"	
 	);
 	
     private ArrayList<String> requires;
@@ -443,6 +444,7 @@ public class JSCSSCompilationSession extends CSSCompilationSession
                 else if ("calc".equals(functionCall.name))
                 {
                     // TODO: implement me
+                	result.append("null");
                 }
                 else if ("Embed".equals(functionCall.name))
                 {
@@ -456,6 +458,7 @@ public class JSCSSCompilationSession extends CSSCompilationSession
                 else if (otherCSSFunctions.contains(functionCall.name))
                 {
                 	// ignore for now?
+                	result.append("null");
                 }
                 else
                 {

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/84170a2e/compiler/src/main/antlr3/org/apache/flex/compiler/internal/css/CSS.g
----------------------------------------------------------------------
diff --git a/compiler/src/main/antlr3/org/apache/flex/compiler/internal/css/CSS.g b/compiler/src/main/antlr3/org/apache/flex/compiler/internal/css/CSS.g
index 1ed5192..7a43a7d 100644
--- a/compiler/src/main/antlr3/org/apache/flex/compiler/internal/css/CSS.g
+++ b/compiler/src/main/antlr3/org/apache/flex/compiler/internal/css/CSS.g
@@ -554,6 +554,7 @@ FUNCTIONS : '-moz-linear-gradient'
           | 'progid:DXImageTransform.Microsoft.gradient'
           | 'translateX'
           | 'translateY'
+          | 'translate'
           ;
 NOT
     :  'not'


[05/13] git commit: [flex-falcon] [refs/heads/feature/amf] - allow a magic 'localId' property that works like the 'id' property but is not set on the component so doesn't get factored into CSS calculations.

Posted by pi...@apache.org.
allow a magic 'localId' property that works like the 'id' property but is not set on the component so doesn't get factored into CSS calculations.


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

Branch: refs/heads/feature/amf
Commit: 42516a88dd925acef6263c0eaccc7dddfb36afc7
Parents: aefb414
Author: Alex Harui <ah...@apache.org>
Authored: Sun Aug 6 21:02:38 2017 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Sun Aug 6 21:02:38 2017 -0700

----------------------------------------------------------------------
 .../internal/parsing/mxml/MXMLScopeBuilder.java |  7 +++++++
 .../internal/tree/mxml/MXMLInstanceNode.java    | 21 +++++++++++++++++++-
 .../compiler/mxml/IMXMLLanguageConstants.java   |  5 +++++
 .../compiler/tree/mxml/IMXMLInstanceNode.java   |  9 +++++++++
 4 files changed, 41 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/42516a88/compiler/src/main/java/org/apache/flex/compiler/internal/parsing/mxml/MXMLScopeBuilder.java
----------------------------------------------------------------------
diff --git a/compiler/src/main/java/org/apache/flex/compiler/internal/parsing/mxml/MXMLScopeBuilder.java b/compiler/src/main/java/org/apache/flex/compiler/internal/parsing/mxml/MXMLScopeBuilder.java
index bd778e7..63a02cd 100644
--- a/compiler/src/main/java/org/apache/flex/compiler/internal/parsing/mxml/MXMLScopeBuilder.java
+++ b/compiler/src/main/java/org/apache/flex/compiler/internal/parsing/mxml/MXMLScopeBuilder.java
@@ -422,6 +422,13 @@ public class MXMLScopeBuilder
         String id = tag.getRawAttributeValue("id");
         if (id != null)
             processID(tag, idAttribute);
+        else
+        {
+            idAttribute = tag.getTagAttributeData("localId");
+            id = tag.getRawAttributeValue("localId");
+            if (id != null)
+                processID(tag, idAttribute);        	
+        }
 
         if (recurse)
         {

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/42516a88/compiler/src/main/java/org/apache/flex/compiler/internal/tree/mxml/MXMLInstanceNode.java
----------------------------------------------------------------------
diff --git a/compiler/src/main/java/org/apache/flex/compiler/internal/tree/mxml/MXMLInstanceNode.java b/compiler/src/main/java/org/apache/flex/compiler/internal/tree/mxml/MXMLInstanceNode.java
index 4d5072b..6d721fa 100644
--- a/compiler/src/main/java/org/apache/flex/compiler/internal/tree/mxml/MXMLInstanceNode.java
+++ b/compiler/src/main/java/org/apache/flex/compiler/internal/tree/mxml/MXMLInstanceNode.java
@@ -21,6 +21,7 @@ package org.apache.flex.compiler.internal.tree.mxml;
 
 import static org.apache.flex.compiler.mxml.IMXMLLanguageConstants.ATTRIBUTE_EXCLUDE_FROM;
 import static org.apache.flex.compiler.mxml.IMXMLLanguageConstants.ATTRIBUTE_ID;
+import static org.apache.flex.compiler.mxml.IMXMLLanguageConstants.ATTRIBUTE_LOCAL_ID;
 import static org.apache.flex.compiler.mxml.IMXMLLanguageConstants.ATTRIBUTE_INCLUDE_IN;
 import static org.apache.flex.compiler.mxml.IMXMLLanguageConstants.ATTRIBUTE_ITEM_CREATION_POLICY;
 import static org.apache.flex.compiler.mxml.IMXMLLanguageConstants.ATTRIBUTE_ITEM_DESTRUCTION_POLICY;
@@ -141,6 +142,14 @@ class MXMLInstanceNode extends MXMLClassReferenceNodeBase implements IMXMLInstan
     private String id;
 
     /**
+     * The compile-time identifier for this instance. This is <code>null</code>
+     * if there is no compile-time <code>id</code> attribute on the tag that
+     * produced this instance.  A localId does not set the id property used
+     * by CSS.
+     */
+    private String localId;
+
+    /**
      * The states (or state groups) that include this instance. This is
      * <code>null</code> if there was no <code>includeIn</code> attribute on the
      * tag that produced this instance node.
@@ -180,6 +189,9 @@ class MXMLInstanceNode extends MXMLClassReferenceNodeBase implements IMXMLInstan
         if (attribute.isSpecialAttribute(ATTRIBUTE_ID))
             id = processIDAttribute(builder, attribute);
 
+        else if (attribute.isSpecialAttribute(ATTRIBUTE_LOCAL_ID))
+            localId = processIDAttribute(builder, attribute);
+
         else if (attribute.isSpecialAttribute(ATTRIBUTE_INCLUDE_IN))
             includeIn = processIncludeInOrExcludeFromAttribute(builder, attribute);
 
@@ -329,9 +341,16 @@ class MXMLInstanceNode extends MXMLClassReferenceNodeBase implements IMXMLInstan
     }
 
     @Override
+    public String getLocalID()
+    {
+        return localId;
+    }
+
+    @Override
     public String getEffectiveID()
     {
-        return id != null ? id : getClassDefinitionNode().getGeneratedID(this);
+        return id != null ? id : 
+        	localId != null ? localId : getClassDefinitionNode().getGeneratedID(this);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/42516a88/compiler/src/main/java/org/apache/flex/compiler/mxml/IMXMLLanguageConstants.java
----------------------------------------------------------------------
diff --git a/compiler/src/main/java/org/apache/flex/compiler/mxml/IMXMLLanguageConstants.java b/compiler/src/main/java/org/apache/flex/compiler/mxml/IMXMLLanguageConstants.java
index 4b0a127..f67c2c8 100644
--- a/compiler/src/main/java/org/apache/flex/compiler/mxml/IMXMLLanguageConstants.java
+++ b/compiler/src/main/java/org/apache/flex/compiler/mxml/IMXMLLanguageConstants.java
@@ -245,6 +245,11 @@ public interface IMXMLLanguageConstants
     static final String ATTRIBUTE_ID = "id";
 
     /**
+     * The short name of the special <code>localId</code> attribute.
+     */
+    static final String ATTRIBUTE_LOCAL_ID = "localId";
+
+    /**
      * The short name of the special <code>implements</code> attribute.
      */
     static final String ATTRIBUTE_IMPLEMENTS = "implements";

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/42516a88/compiler/src/main/java/org/apache/flex/compiler/tree/mxml/IMXMLInstanceNode.java
----------------------------------------------------------------------
diff --git a/compiler/src/main/java/org/apache/flex/compiler/tree/mxml/IMXMLInstanceNode.java b/compiler/src/main/java/org/apache/flex/compiler/tree/mxml/IMXMLInstanceNode.java
index 0660e0d..b3577d3 100644
--- a/compiler/src/main/java/org/apache/flex/compiler/tree/mxml/IMXMLInstanceNode.java
+++ b/compiler/src/main/java/org/apache/flex/compiler/tree/mxml/IMXMLInstanceNode.java
@@ -36,6 +36,14 @@ public interface IMXMLInstanceNode extends IMXMLClassReferenceNode
     String getID();
 
     /**
+     * The compile-time identifier specified for this instance.
+     * 
+     * @return The localId as a String, or <code>null</code> if no compile-time
+     * identifier was specified.
+     */
+	String getLocalID();
+	
+    /**
      * The compile-time identifier used by the compiler for this instance. If no
      * <code>id</code> is specified, then the compiler generates an identifier
      * if one is needed.
@@ -91,4 +99,5 @@ public interface IMXMLInstanceNode extends IMXMLClassReferenceNode
      * @return <code>true</code> if node has same line number.
      */
     boolean isEqual(IMXMLInstanceNode node);
+
 }


[12/13] git commit: [flex-falcon] [refs/heads/feature/amf] - upgrade in Maven google closure library to version 0.0-20170809-b9c14c6b

Posted by pi...@apache.org.
upgrade in Maven google closure library to version 0.0-20170809-b9c14c6b


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

Branch: refs/heads/feature/amf
Commit: 7edc0343ecd49402ff718892c1953da659917a9f
Parents: c2cedae
Author: piotrz <pi...@apache.org>
Authored: Sat Aug 12 23:29:19 2017 +0200
Committer: piotrz <pi...@apache.org>
Committed: Sat Aug 12 23:29:19 2017 +0200

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


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/7edc0343/compiler-jx/pom.xml
----------------------------------------------------------------------
diff --git a/compiler-jx/pom.xml b/compiler-jx/pom.xml
index 10b3582..75499b9 100644
--- a/compiler-jx/pom.xml
+++ b/compiler-jx/pom.xml
@@ -106,7 +106,7 @@
     <dependency>
       <groupId>org.clojure</groupId>
       <artifactId>google-closure-library</artifactId>
-      <version>0.0-20150902-b129bb9e</version>
+      <version>0.0-20170809-b9c14c6b</version>
     </dependency>
 
     <dependency>


[13/13] git commit: [flex-falcon] [refs/heads/feature/amf] - Merge branch 'develop' into feature/amf

Posted by pi...@apache.org.
Merge branch 'develop' into feature/amf


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

Branch: refs/heads/feature/amf
Commit: 7bc6f7025eefac9960b2dd295a90a5e14997e801
Parents: c500b3f 7edc034
Author: piotrz <pi...@apache.org>
Authored: Mon Aug 14 00:03:01 2017 +0200
Committer: piotrz <pi...@apache.org>
Committed: Mon Aug 14 00:03:01 2017 +0200

----------------------------------------------------------------------
 compiler-jx/pom.xml                             |  9 +--
 .../externals/pass/AbstractCompilerPass.java    |  2 +-
 .../codegen/externals/pass/AddMemberPass.java   |  2 +-
 .../externals/pass/CollectTypesPass.java        |  2 +-
 .../externals/pass/NamespaceResolutionPass.java |  2 +-
 .../externals/pass/ReferenceCompiler.java       |  5 +-
 .../internal/codegen/js/JSSessionModel.java     |  2 +
 .../codegen/js/flexjs/JSFlexJSDocEmitter.java   | 12 ++++
 .../codegen/js/goog/JSGoogDocEmitter.java       |  7 ++-
 .../internal/codegen/js/goog/JarSourceFile.java |  5 --
 .../internal/codegen/js/jx/AccessorEmitter.java | 44 ++++++++++----
 .../internal/codegen/js/jx/FieldEmitter.java    | 37 ++++++++++++
 .../codegen/js/jx/SuperCallEmitter.java         |  9 ++-
 .../codegen/mxml/flexjs/MXMLFlexJSEmitter.java  | 63 ++++++++++++++++++--
 .../mxml/flexjs/MXMLFlexJSPublisher.java        | 36 +++++++++++
 .../js/flexjs/JSCSSCompilationSession.java      |  5 +-
 .../js/goog/JSGoogCompcConfiguration.java       | 20 +++++++
 .../driver/js/goog/JSGoogConfiguration.java     | 21 +++++++
 .../internal/projects/FlexJSProject.java        | 12 ++++
 compiler-jx/src/main/resources/downloads.xml    |  4 +-
 .../codegen/externals/TestExternChrome.java     |  2 +-
 .../js/flexjs/TestFlexJSAccessorMembers.java    | 24 ++++----
 .../codegen/js/flexjs/TestFlexJSAccessors.java  | 14 ++---
 .../codegen/js/flexjs/TestFlexJSClass.java      | 14 ++---
 .../js/flexjs/TestFlexJSExpressions.java        | 32 ++++++++++
 .../codegen/js/flexjs/TestFlexJSPackage.java    |  4 +-
 .../resources/flexjs/files/CSSTestSource.css    | 14 +++++
 .../files/CSSTestSource_encoded_result.txt      | 18 +++++-
 .../flexjs/files/CSSTestSource_result.css       | 15 +++++
 .../flexjs/files/MyInitialView_result.js        | 16 +++--
 .../flexjs/files/models/MyModel_result.js       | 12 +++-
 .../flexjs/projects/super/Base_result.js        |  4 +-
 .../flexjs/projects/super/Super_result.js       |  4 +-
 .../org/apache/flex/compiler/internal/css/CSS.g |  1 +
 .../internal/parsing/mxml/MXMLScopeBuilder.java |  7 +++
 .../internal/tree/mxml/MXMLInstanceNode.java    | 21 ++++++-
 .../compiler/mxml/IMXMLLanguageConstants.java   |  5 ++
 .../compiler/tree/mxml/IMXMLInstanceNode.java   |  9 +++
 38 files changed, 433 insertions(+), 82 deletions(-)
----------------------------------------------------------------------



[08/13] git commit: [flex-falcon] [refs/heads/feature/amf] - upgrade to Google Closure Compiler 20170626. They deprecated a lot of APIs so lots of changes were required. The primary change is that GCC is being more careful about checking that types mat

Posted by pi...@apache.org.
upgrade to Google Closure Compiler 20170626.  They deprecated a lot of APIs so lots of changes were required.  The primary change is that GCC is being more careful about checking that types match in the superclasses, so that required adding @type to the accessors


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

Branch: refs/heads/feature/amf
Commit: 6331b80de71706429d3a73d3d103537efdd0943e
Parents: 8d7e147
Author: Alex Harui <ah...@apache.org>
Authored: Thu Aug 10 22:48:16 2017 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Thu Aug 10 22:48:16 2017 -0700

----------------------------------------------------------------------
 .../externals/pass/AbstractCompilerPass.java    |  2 +-
 .../codegen/externals/pass/AddMemberPass.java   |  2 +-
 .../externals/pass/CollectTypesPass.java        |  2 +-
 .../externals/pass/NamespaceResolutionPass.java |  2 +-
 .../externals/pass/ReferenceCompiler.java       |  5 ++-
 .../internal/codegen/js/JSSessionModel.java     |  2 +
 .../codegen/js/goog/JSGoogDocEmitter.java       |  7 +++-
 .../internal/codegen/js/goog/JarSourceFile.java |  5 ---
 .../internal/codegen/js/jx/AccessorEmitter.java | 44 ++++++++++++++------
 compiler-jx/src/main/resources/downloads.xml    |  4 +-
 .../codegen/externals/TestExternChrome.java     |  2 +-
 .../js/flexjs/TestFlexJSAccessorMembers.java    | 24 +++++------
 .../codegen/js/flexjs/TestFlexJSAccessors.java  | 14 +++----
 .../codegen/js/flexjs/TestFlexJSClass.java      | 14 +++----
 .../js/flexjs/TestFlexJSExpressions.java        |  2 +-
 .../codegen/js/flexjs/TestFlexJSPackage.java    |  4 +-
 .../flexjs/files/MyInitialView_result.js        | 16 +++++--
 .../flexjs/files/models/MyModel_result.js       | 12 ++++--
 .../flexjs/projects/super/Base_result.js        |  4 +-
 .../flexjs/projects/super/Super_result.js       |  4 +-
 20 files changed, 105 insertions(+), 66 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/6331b80d/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/externals/pass/AbstractCompilerPass.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/externals/pass/AbstractCompilerPass.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/externals/pass/AbstractCompilerPass.java
index 9903fc2..0bf5966 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/externals/pass/AbstractCompilerPass.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/externals/pass/AbstractCompilerPass.java
@@ -52,7 +52,7 @@ public abstract class AbstractCompilerPass implements CompilerPass, Callback
     public void process(Node externs, Node root)
     {
         //NodeTraversal.traverse(compiler, root, this);
-        NodeTraversal.traverseRoots(compiler, this, externs, root);
+        NodeTraversal.traverseRootsEs6(compiler, this, externs, root);
     }
 
     protected void log(Node n)

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/6331b80d/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/externals/pass/AddMemberPass.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/externals/pass/AddMemberPass.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/externals/pass/AddMemberPass.java
index 732b9e9..64fc9a9 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/externals/pass/AddMemberPass.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/externals/pass/AddMemberPass.java
@@ -38,7 +38,7 @@ public class AddMemberPass extends AbstractCompilerPass
     public boolean shouldTraverse(NodeTraversal nodeTraversal, Node n,
             Node parent)
     {
-        return n.isBlock() || n.isScript();
+        return n.isRoot() || n.isNormalBlock() || n.isScript();
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/6331b80d/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/externals/pass/CollectTypesPass.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/externals/pass/CollectTypesPass.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/externals/pass/CollectTypesPass.java
index 44a9cc4..81e2ae2 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/externals/pass/CollectTypesPass.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/externals/pass/CollectTypesPass.java
@@ -37,7 +37,7 @@ public class CollectTypesPass extends AbstractCompilerPass
     public boolean shouldTraverse(NodeTraversal nodeTraversal, Node n,
             Node parent)
     {
-        return n.isBlock() || n.isScript();
+        return n.isRoot() || n.isNormalBlock() || n.isScript();
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/6331b80d/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/externals/pass/NamespaceResolutionPass.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/externals/pass/NamespaceResolutionPass.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/externals/pass/NamespaceResolutionPass.java
index 6270227..8a8ec24 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/externals/pass/NamespaceResolutionPass.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/externals/pass/NamespaceResolutionPass.java
@@ -42,7 +42,7 @@ public class NamespaceResolutionPass extends AbstractCompilerPass
     public boolean shouldTraverse(NodeTraversal nodeTraversal, Node n,
             Node parent)
     {
-        return n.isBlock() || n.isScript();
+        return n.isRoot() || n.isNormalBlock() || n.isScript();
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/6331b80d/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/externals/pass/ReferenceCompiler.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/externals/pass/ReferenceCompiler.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/externals/pass/ReferenceCompiler.java
index e941944..b2b6bdc 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/externals/pass/ReferenceCompiler.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/externals/pass/ReferenceCompiler.java
@@ -32,6 +32,7 @@ import org.apache.flex.compiler.internal.codegen.externals.reference.ReferenceMo
 import com.google.javascript.jscomp.*;
 import com.google.javascript.jscomp.Compiler;
 import com.google.javascript.jscomp.CompilerOptions.LanguageMode;
+import com.google.javascript.jscomp.parsing.Config;
 
 public class ReferenceCompiler
 {
@@ -67,10 +68,10 @@ public class ReferenceCompiler
         options.setLineLengthThreshold(80);
         options.setPreferSingleQuotes(true);
         options.setIdeMode(true);
-        options.setParseJsDocDocumentation(true);
+        options.setParseJsDocDocumentation(Config.JsDocParsing.INCLUDE_DESCRIPTIONS_NO_WHITESPACE);
         options.setExternExports(false);
         options.setExtraAnnotationNames(Arrays.asList(asdocTags));
-        options.setLanguageIn(LanguageMode.ECMASCRIPT6_STRICT);
+        options.setLanguageIn(LanguageMode.ECMASCRIPT_2015);
         options.setLanguageIn(LanguageMode.ECMASCRIPT5_STRICT);
 
         options.addCustomPass(CustomPassExecutionTime.BEFORE_OPTIMIZATIONS, new NamespaceResolutionPass(model,

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/6331b80d/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/JSSessionModel.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/JSSessionModel.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/JSSessionModel.java
index 3ace9e5..8ceb44d 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/JSSessionModel.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/JSSessionModel.java
@@ -26,6 +26,7 @@ import java.util.List;
 import java.util.Stack;
 
 import org.apache.flex.compiler.definitions.IClassDefinition;
+import org.apache.flex.compiler.definitions.ITypeDefinition;
 import org.apache.flex.compiler.tree.as.IFunctionNode;
 import org.apache.flex.compiler.tree.as.IGetterNode;
 import org.apache.flex.compiler.tree.as.ISetterNode;
@@ -47,6 +48,7 @@ public class JSSessionModel
     {
         public IGetterNode getter;
         public ISetterNode setter;
+        public ITypeDefinition type;
     }
 
     public static class BindableVarInfo

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/6331b80d/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogDocEmitter.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogDocEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogDocEmitter.java
index cd57e7a..332bc17 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogDocEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogDocEmitter.java
@@ -469,6 +469,11 @@ public class JSGoogDocEmitter extends JSDocEmitter implements IJSGoogDocEmitter
 
     protected String convertASTypeToJS(String name, String pname)
     {
+    	return convertASTypeToJSType(name, pname);
+    }
+    
+    public static String convertASTypeToJSType(String name, String pname)
+    {
         String result = "";
 
         if (name.equals(""))
@@ -488,7 +493,7 @@ public class JSGoogDocEmitter extends JSDocEmitter implements IJSGoogDocEmitter
         {
         	// is a vector so convert the element type
         	String elementType = name.substring(8, name.length() - 1);
-        	elementType = convertASTypeToJS(elementType, pname);
+        	elementType = convertASTypeToJSType(elementType, pname);
         	name = "Vector.<" + elementType + ">";
         }
         IASGlobalFunctionConstants.BuiltinType[] builtinTypes = IASGlobalFunctionConstants.BuiltinType

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/6331b80d/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/goog/JarSourceFile.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/goog/JarSourceFile.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/goog/JarSourceFile.java
index 5155aa0..ee0a89b 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/goog/JarSourceFile.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/goog/JarSourceFile.java
@@ -54,11 +54,6 @@ public class JarSourceFile extends SourceFile {
     }
 
     @Override
-    public CharSource getCodeCharSource() {
-        return CharSource.wrap(code);
-    }
-
-    @Override
     public Reader getCodeReader() throws IOException {
         return new StringReader(code);
     }

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/6331b80d/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/AccessorEmitter.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/AccessorEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/AccessorEmitter.java
index c060381..19c16ae 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/AccessorEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/AccessorEmitter.java
@@ -31,6 +31,7 @@ import org.apache.flex.compiler.definitions.IAccessorDefinition;
 import org.apache.flex.compiler.definitions.IClassDefinition;
 import org.apache.flex.compiler.definitions.IFunctionDefinition;
 import org.apache.flex.compiler.definitions.INamespaceDefinition;
+import org.apache.flex.compiler.definitions.IParameterDefinition;
 import org.apache.flex.compiler.definitions.ITypeDefinition;
 import org.apache.flex.compiler.definitions.metadata.IMetaTag;
 import org.apache.flex.compiler.internal.codegen.as.ASEmitterTokens;
@@ -40,7 +41,9 @@ import org.apache.flex.compiler.internal.codegen.js.JSSubEmitter;
 import org.apache.flex.compiler.internal.codegen.js.flexjs.JSFlexJSDocEmitter;
 import org.apache.flex.compiler.internal.codegen.js.flexjs.JSFlexJSEmitter;
 import org.apache.flex.compiler.internal.codegen.js.flexjs.JSFlexJSEmitterTokens;
+import org.apache.flex.compiler.internal.codegen.js.goog.JSGoogDocEmitter;
 import org.apache.flex.compiler.internal.codegen.js.goog.JSGoogEmitterTokens;
+import org.apache.flex.compiler.internal.projects.FlexJSProject;
 import org.apache.flex.compiler.internal.semantics.SemanticUtils;
 import org.apache.flex.compiler.internal.tree.as.FunctionNode;
 import org.apache.flex.compiler.internal.tree.as.SetterNode;
@@ -77,6 +80,10 @@ public class AccessorEmitter extends JSSubEmitter implements
     {
         // TODO (mschmalle) will remove this cast as more things get abstracted
         JSFlexJSEmitter fjs = (JSFlexJSEmitter) getEmitter();
+        FlexJSProject project = (FlexJSProject)getWalker().getProject();
+        boolean emitExports = true;
+        if (project != null && project.config != null)
+        	emitExports = project.config.getExportPublicSymbols();
 
         if (!getModel().getPropertyMap().isEmpty())
         {
@@ -98,7 +105,6 @@ public class AccessorEmitter extends JSSubEmitter implements
                     if (fjs.isCustomNamespace((FunctionNode)getterNode))
                     {
             			INamespaceDecorationNode ns = ((FunctionNode)getterNode).getActualNamespaceNode();
-                        ICompilerProject project = getWalker().getProject();
             			INamespaceDefinition nsDef = (INamespaceDefinition)ns.resolve(project);
             			fjs.formatQualifiedName(nsDef.getQualifiedName()); // register with used names 
             			String s = nsDef.getURI();
@@ -161,7 +167,6 @@ public class AccessorEmitter extends JSSubEmitter implements
                     if (fjs.isCustomNamespace((FunctionNode)setterNode))
                     {
             			INamespaceDecorationNode ns = ((FunctionNode)setterNode).getActualNamespaceNode();
-                        ICompilerProject project = getWalker().getProject();
             			INamespaceDefinition nsDef = (INamespaceDefinition)ns.resolve(project);
             			fjs.formatQualifiedName(nsDef.getQualifiedName()); // register with used names 
             			String s = nsDef.getURI();
@@ -276,12 +281,17 @@ public class AccessorEmitter extends JSSubEmitter implements
                 PropertyNodes p = getModel().getPropertyMap().get(propName);
                 IGetterNode getterNode = p.getter;
                 ISetterNode setterNode = p.setter;
-                writeNewline("/** @export */");
+            	writeNewline("/**");
+                if (emitExports)
+                	writeNewline("  * @export");
+                if (p.type != null)
+                	writeNewline("  * @type {"+JSGoogDocEmitter.convertASTypeToJSType(p.type.getBaseName(), p.type.getPackageName()) + "} */");
+                else
+                	writeNewline("  */");
                 FunctionNode fnNode = getterNode != null ? (FunctionNode) getterNode : (FunctionNode) setterNode;
                 if (fjs.isCustomNamespace(fnNode))
                 {
         			INamespaceDecorationNode ns = fnNode.getActualNamespaceNode();
-                    ICompilerProject project = getWalker().getProject();
         			INamespaceDefinition nsDef = (INamespaceDefinition)ns.resolve(project);
         			fjs.formatQualifiedName(nsDef.getQualifiedName()); // register with used names 
         			String s = nsDef.getURI();
@@ -304,7 +314,6 @@ public class AccessorEmitter extends JSSubEmitter implements
                     if (fjs.isCustomNamespace((FunctionNode)getterNode))
                     {
             			INamespaceDecorationNode ns = ((FunctionNode)getterNode).getActualNamespaceNode();
-                        ICompilerProject project = getWalker().getProject();
             			INamespaceDefinition nsDef = (INamespaceDefinition)ns.resolve(project);
             			fjs.formatQualifiedName(nsDef.getQualifiedName()); // register with used names 
             			String s = nsDef.getURI();
@@ -338,7 +347,6 @@ public class AccessorEmitter extends JSSubEmitter implements
                         if (fjs.isCustomNamespace((FunctionNode)setterNode))
                         {
                 			INamespaceDecorationNode ns = ((FunctionNode)setterNode).getActualNamespaceNode();
-                            ICompilerProject project = getWalker().getProject();
                 			INamespaceDefinition nsDef = (INamespaceDefinition)ns.resolve(project);
                 			fjs.formatQualifiedName(nsDef.getQualifiedName()); // register with used names 
                 			String s = nsDef.getURI();
@@ -367,7 +375,6 @@ public class AccessorEmitter extends JSSubEmitter implements
                     if (fjs.isCustomNamespace((FunctionNode)setterNode))
                     {
             			INamespaceDecorationNode ns = ((FunctionNode)setterNode).getActualNamespaceNode();
-                        ICompilerProject project = getWalker().getProject();
             			INamespaceDefinition nsDef = (INamespaceDefinition)ns.resolve(project);
             			fjs.formatQualifiedName(nsDef.getQualifiedName()); // register with used names 
             			String s = nsDef.getURI();
@@ -402,7 +409,6 @@ public class AccessorEmitter extends JSSubEmitter implements
                         if (fjs.isCustomNamespace((FunctionNode)getterNode))
                         {
                 			INamespaceDecorationNode ns = ((FunctionNode)getterNode).getActualNamespaceNode();
-                            ICompilerProject project = getWalker().getProject();
                 			INamespaceDefinition nsDef = (INamespaceDefinition)ns.resolve(project);
                 			fjs.formatQualifiedName(nsDef.getQualifiedName()); // register with used names 
                 			String s = nsDef.getURI();
@@ -440,7 +446,6 @@ public class AccessorEmitter extends JSSubEmitter implements
                     if (fjs.isCustomNamespace((FunctionNode)getterNode))
                     {
             			INamespaceDecorationNode ns = ((FunctionNode)getterNode).getActualNamespaceNode();
-                        ICompilerProject project = getWalker().getProject();
             			INamespaceDefinition nsDef = (INamespaceDefinition)ns.resolve(project);
             			fjs.formatQualifiedName(nsDef.getQualifiedName()); // register with used names 
             			String s = nsDef.getURI();
@@ -471,7 +476,6 @@ public class AccessorEmitter extends JSSubEmitter implements
                     if (fjs.isCustomNamespace((FunctionNode)setterNode))
                     {
             			INamespaceDecorationNode ns = ((FunctionNode)setterNode).getActualNamespaceNode();
-                        ICompilerProject project = getWalker().getProject();
             			INamespaceDefinition nsDef = (INamespaceDefinition)ns.resolve(project);
             			fjs.formatQualifiedName(nsDef.getQualifiedName()); // register with used names 
             			String s = nsDef.getURI();
@@ -526,7 +530,13 @@ public class AccessorEmitter extends JSSubEmitter implements
                         propName);
                 IGetterNode getterNode = p.getter;
                 ISetterNode setterNode = p.setter;
-                writeNewline("/** @export */");
+            	writeNewline("/**");
+                if (emitExports)
+                	writeNewline("  * @export");
+                if (p.type != null)
+                	writeNewline("  * @type {"+JSGoogDocEmitter.convertASTypeToJSType(p.type.getBaseName(), p.type.getPackageName()) + "} */");
+                else
+                	writeNewline("  */");
                 write(propName);
                 write(ASEmitterTokens.COLON);
                 write(ASEmitterTokens.SPACE);
@@ -541,7 +551,6 @@ public class AccessorEmitter extends JSSubEmitter implements
                     if (fjs.isCustomNamespace((FunctionNode)getterNode))
                     {
             			INamespaceDecorationNode ns = ((FunctionNode)getterNode).getActualNamespaceNode();
-                        ICompilerProject project = getWalker().getProject();
             			INamespaceDefinition nsDef = (INamespaceDefinition)ns.resolve(project);
             			fjs.formatQualifiedName(nsDef.getQualifiedName()); // register with used names 
             			String s = nsDef.getURI();
@@ -566,7 +575,6 @@ public class AccessorEmitter extends JSSubEmitter implements
                     if (fjs.isCustomNamespace((FunctionNode)setterNode))
                     {
             			INamespaceDecorationNode ns = ((FunctionNode)setterNode).getActualNamespaceNode();
-                        ICompilerProject project = getWalker().getProject();
             			INamespaceDefinition nsDef = (INamespaceDefinition)ns.resolve(project);
             			fjs.formatQualifiedName(nsDef.getQualifiedName()); // register with used names 
             			String s = nsDef.getURI();
@@ -605,6 +613,9 @@ public class AccessorEmitter extends JSSubEmitter implements
             map.put(name, p);
         }
         p.getter = node;
+        ICompilerProject project = (ICompilerProject)getWalker().getProject();
+        if (project != null)
+        	p.type = node.getDefinition().resolveReturnType(project);
         FunctionNode fn = (FunctionNode) node;
         fn.parseFunctionBody(fjs.getProblems());
     }
@@ -628,6 +639,13 @@ public class AccessorEmitter extends JSSubEmitter implements
             map.put(name, p);
         }
         p.setter = node;
+        ICompilerProject project = (ICompilerProject)getWalker().getProject();
+        if (project != null)
+        {
+        	IFunctionDefinition def = node.getDefinition();
+        	IParameterDefinition[] params = def.getParameters();
+        	p.type = params[0].resolveType(project);
+        }
         FunctionNode fn = (FunctionNode) node;
         fn.parseFunctionBody(fjs.getProblems());
 

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/6331b80d/compiler-jx/src/main/resources/downloads.xml
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/resources/downloads.xml b/compiler-jx/src/main/resources/downloads.xml
index 9885ede..5e78c35 100644
--- a/compiler-jx/src/main/resources/downloads.xml
+++ b/compiler-jx/src/main/resources/downloads.xml
@@ -80,7 +80,7 @@
     </antcall>
 
     <!--  closure -->
-    <property name="closure.version" value="20161201"/>
+    <property name="closure.version" value="20170626"/>
     <property name="closure.name" value="closure-compiler-v${closure.version}"/>
     <property name="closure.dest.name" value="compiler"/>
     <property name="closure.dest.folder" value="google/closure-compiler"/>
@@ -90,7 +90,7 @@
       <param name="src.server" value="http://dl.google.com"/>
       <param name="src.folder" value="closure-compiler"/>
       <param name="src.filename" value="compiler-${closure.version}.zip"/>
-      <param name="src.checksum" value="bcd640e9c9f756df4117af2066621f89"/>
+      <param name="src.checksum" value="c565b5a1e12aefa5968b42ea83ea6c28"/>
     </antcall>
     
     <!--  commons-io -->

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/6331b80d/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/externals/TestExternChrome.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/externals/TestExternChrome.java b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/externals/TestExternChrome.java
index d2582bb..9aafd07 100644
--- a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/externals/TestExternChrome.java
+++ b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/externals/TestExternChrome.java
@@ -67,7 +67,7 @@ public class TestExternChrome extends ExternalsTestBase
                 "ChromeLoadTimes",
                 "ChromeCsiInfo" };
 
-        assertEquals(301, model.getClasses().size());
+        assertEquals(322, model.getClasses().size());
         for (String className : classes)
         {
             assertTrue(model.hasClass(className));

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/6331b80d/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessorMembers.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessorMembers.java b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessorMembers.java
index 4070eb8..3950cc3 100644
--- a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessorMembers.java
+++ b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessorMembers.java
@@ -39,7 +39,7 @@ public class TestFlexJSAccessorMembers extends TestGoogAccessorMembers
         asBlockWalker.visitClass(node);
         assertOut("/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('FalconTest_A', FalconTest_A);\n\n\n" +
 				"FalconTest_A.prototype.get__foo = function() {\n};\n\n\n" +
-        		"Object.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/** @export */\nfoo: {\nget: FalconTest_A.prototype.get__foo}}\n);");
+        		"Object.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/**\n  * @export\n  * @type {number} */\nfoo: {\nget: FalconTest_A.prototype.get__foo}}\n);");
     }
 
     @Override
@@ -51,7 +51,7 @@ public class TestFlexJSAccessorMembers extends TestGoogAccessorMembers
         asBlockWalker.visitClass(node);
         assertOut("/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('FalconTest_A', FalconTest_A);\n\n\n" +
 				"FalconTest_A.prototype.get__foo = function() {\n  return -1;\n};\n\n\n" +
-        		"Object.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/** @export */\nfoo: {\nget: FalconTest_A.prototype.get__foo}}\n);");
+        		"Object.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/**\n  * @export\n  * @type {number} */\nfoo: {\nget: FalconTest_A.prototype.get__foo}}\n);");
     }
 
     @Override
@@ -63,7 +63,7 @@ public class TestFlexJSAccessorMembers extends TestGoogAccessorMembers
         asBlockWalker.visitClass(node);
         assertOut("/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('FalconTest_A', FalconTest_A);\n\n\n" +
 				"FalconTest_A.prototype.get__foo = function() {\n  return -1;\n};\n\n\n" +
-        		"Object.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/** @export */\nfoo: {\nget: FalconTest_A.prototype.get__foo}}\n);");
+        		"Object.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/**\n  * @export\n  * @type {number} */\nfoo: {\nget: FalconTest_A.prototype.get__foo}}\n);");
     }
 
     @Override
@@ -75,7 +75,7 @@ public class TestFlexJSAccessorMembers extends TestGoogAccessorMembers
         asBlockWalker.visitClass(node);
         assertOut("/**\n * @constructor\n * @extends {A}\n */\nB = function() {\n  B.base(this, 'constructor');\n};\ngoog.inherits(B, A);\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('B', B);\n\n\n" +
 				"B.prototype.get__foo = function() {\n  return B.superClass_.get__foo.apply(this);\n};\n\n\n" +
-        		"Object.defineProperties(B.prototype, /** @lends {B.prototype} */ {\n/** @export */\nfoo: {\nget: B.prototype.get__foo}}\n);");
+        		"Object.defineProperties(B.prototype, /** @lends {B.prototype} */ {\n/**\n  * @export\n  * @type {number} */\nfoo: {\nget: B.prototype.get__foo}}\n);");
     }
 
     @Test
@@ -86,7 +86,7 @@ public class TestFlexJSAccessorMembers extends TestGoogAccessorMembers
         asBlockWalker.visitClass(node);
         assertOut("/**\n * @constructor\n * @extends {A}\n */\nB = function() {\n  B.base(this, 'constructor');\n};\ngoog.inherits(B, A);\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('B', B);\n\n\n" +
 				"B.prototype.get__foo = function() {\n  return B.superClass_.get__foo.apply(this);\n};\n\n\n" +
-        		"Object.defineProperties(B.prototype, /** @lends {B.prototype} */ {\n/** @export */\nfoo: {\nget: B.prototype.get__foo,\nset: A.prototype.set__foo}}\n);");
+        		"Object.defineProperties(B.prototype, /** @lends {B.prototype} */ {\n/**\n  * @export\n  * @type {number} */\nfoo: {\nget: B.prototype.get__foo,\nset: A.prototype.set__foo}}\n);");
     }
     
     @Override
@@ -98,7 +98,7 @@ public class TestFlexJSAccessorMembers extends TestGoogAccessorMembers
         asBlockWalker.visitClass(node);
         assertOut("/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('FalconTest_A', FalconTest_A);\n\n\n" +
 				"FalconTest_A.get__foo = function() {\n  return -1;\n};\n\n\n" +
-        		"Object.defineProperties(FalconTest_A, /** @lends {FalconTest_A} */ {\n/** @export */\nfoo: {\nget: FalconTest_A.get__foo}}\n);");
+        		"Object.defineProperties(FalconTest_A, /** @lends {FalconTest_A} */ {\n/**\n  * @export\n  * @type {number} */\nfoo: {\nget: FalconTest_A.get__foo}}\n);");
     }
 
     @Override
@@ -110,7 +110,7 @@ public class TestFlexJSAccessorMembers extends TestGoogAccessorMembers
         asBlockWalker.visitClass(node);
         assertOut("/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('FalconTest_A', FalconTest_A);\n\n\n" +
 				"FalconTest_A.prototype.set__foo = function(value) {\n};\n\n\n" +
-        		"Object.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/** @export */\nfoo: {\nset: FalconTest_A.prototype.set__foo}}\n);");
+        		"Object.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/**\n  * @export\n  * @type {number} */\nfoo: {\nset: FalconTest_A.prototype.set__foo}}\n);");
     }
 
     @Override
@@ -122,7 +122,7 @@ public class TestFlexJSAccessorMembers extends TestGoogAccessorMembers
         asBlockWalker.visitClass(node);
         assertOut("/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('FalconTest_A', FalconTest_A);\n\n\n" +
 				"FalconTest_A.prototype.set__foo = function(value) {\n  fetch('haai');\n};\n\n\n" +
-        		"Object.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/** @export */\nfoo: {\nset: FalconTest_A.prototype.set__foo}}\n);");
+        		"Object.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/**\n  * @export\n  * @type {number} */\nfoo: {\nset: FalconTest_A.prototype.set__foo}}\n);");
     }
 
     @Override
@@ -134,7 +134,7 @@ public class TestFlexJSAccessorMembers extends TestGoogAccessorMembers
         asBlockWalker.visitClass(node);
         assertOut("/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('FalconTest_A', FalconTest_A);\n\n\n" +
 				"FalconTest_A.prototype.set__foo = function(value) {\n};\n\n\n" +
-        		"Object.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/** @export */\nfoo: {\nset: FalconTest_A.prototype.set__foo}}\n);");
+        		"Object.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/**\n  * @export\n  * @type {number} */\nfoo: {\nset: FalconTest_A.prototype.set__foo}}\n);");
     }
 
     @Override
@@ -146,7 +146,7 @@ public class TestFlexJSAccessorMembers extends TestGoogAccessorMembers
         asBlockWalker.visitClass(node);
         assertOut("/**\n * @constructor\n * @extends {A}\n */\nB = function() {\n  B.base(this, 'constructor');\n};\ngoog.inherits(B, A);\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('B', B);\n\n\n" +
 				"B.prototype.set__foo = function(value) {\n  B.superClass_.set__foo.apply(this, [ value] );\n};\n\n\n" +
-        		"Object.defineProperties(B.prototype, /** @lends {B.prototype} */ {\n/** @export */\nfoo: {\nset: B.prototype.set__foo}}\n);");
+        		"Object.defineProperties(B.prototype, /** @lends {B.prototype} */ {\n/**\n  * @export\n  * @type {number} */\nfoo: {\nset: B.prototype.set__foo}}\n);");
     }
 
     @Override
@@ -158,7 +158,7 @@ public class TestFlexJSAccessorMembers extends TestGoogAccessorMembers
         asBlockWalker.visitClass(node);
         assertOut("/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('FalconTest_A', FalconTest_A);\n\n\n" +
 				"FalconTest_A.set__foo = function(value) {\n};\n\n\n" +
-        		"Object.defineProperties(FalconTest_A, /** @lends {FalconTest_A} */ {\n/** @export */\nfoo: {\nset: FalconTest_A.set__foo}}\n);");
+        		"Object.defineProperties(FalconTest_A, /** @lends {FalconTest_A} */ {\n/**\n  * @export\n  * @type {number} */\nfoo: {\nset: FalconTest_A.set__foo}}\n);");
     }
 
     @Test
@@ -169,7 +169,7 @@ public class TestFlexJSAccessorMembers extends TestGoogAccessorMembers
         asBlockWalker.visitClass(node);
         assertOut("/**\n * @constructor\n * @extends {A}\n */\nB = function() {\n  B.base(this, 'constructor');\n};\ngoog.inherits(B, A);\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('B', B);\n\n\n" +
 				"B.prototype.set__foo = function(value) {\n  B.superClass_.set__foo.apply(this, [ value] );\n};\n\n\n" +
-        		"Object.defineProperties(B.prototype, /** @lends {B.prototype} */ {\n/** @export */\nfoo: {\nget: A.prototype.get__foo,\nset: B.prototype.set__foo}}\n);");
+        		"Object.defineProperties(B.prototype, /** @lends {B.prototype} */ {\n/**\n  * @export\n  * @type {number} */\nfoo: {\nget: A.prototype.get__foo,\nset: B.prototype.set__foo}}\n);");
     }
     
     @Override

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/6331b80d/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessors.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessors.java b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessors.java
index 93a6e09..32d7f58 100644
--- a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessors.java
+++ b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessors.java
@@ -49,7 +49,7 @@ public class TestFlexJSAccessors extends ASTestBase
         String expected = "/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('FalconTest_A', FalconTest_A);\n\n\n/**\n * @export\n */\nFalconTest_A.prototype.doStuff = function() {\n  this.label = 'hello, bye';\n  var /** @type {string} */ theLabel = this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nFalconTest_A.prototype._label;\n\n\n" +
         		"FalconTest_A.prototype.get__label = function() {\n  return this._label;\n};\n\n\n" +
         		"FalconTest_A.prototype.set__label = function(value) {\n  this._label = value;\n};\n\n\n" +
-        		"Object.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/** @export */\n" +
+        		"Object.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/**\n  * @export\n  * @type {string} */\n" +
         		"label: {\nget: FalconTest_A.prototype.get__label,\nset: FalconTest_A.prototype.set__label}}\n);";
         assertOut(expected);
     }
@@ -64,7 +64,7 @@ public class TestFlexJSAccessors extends ASTestBase
         String expected = "/**\n * @constructor\n */\nB = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('B', B);\n\n\n/**\n * @export\n */\nB.prototype.doStuff = function() {\n  this.label = this.label + 'bye';\n  var /** @type {string} */ theLabel = this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nB.prototype._label;\n\n\n" +
 				"B.prototype.get__label = function() {\n  return this._label;\n};\n\n\n" +
 				"B.prototype.set__label = function(value) {\n  this._label = value;\n};\n\n\n" +
-        		"Object.defineProperties(B.prototype, /** @lends {B.prototype} */ {\n/** @export */\nlabel: {\n" +
+        		"Object.defineProperties(B.prototype, /** @lends {B.prototype} */ {\n/**\n  * @export\n  * @type {string} */\nlabel: {\n" +
         		"get: B.prototype.get__label,\nset: B.prototype.set__label}}\n);"; 
         assertOut(expected);
     }
@@ -79,7 +79,7 @@ public class TestFlexJSAccessors extends ASTestBase
         String expected = "/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('FalconTest_A', FalconTest_A);\n\n\n/**\n * @export\n */\nFalconTest_A.prototype.doStuff = function() {\n  this.label = this.label + 'bye';\n  var /** @type {string} */ theLabel = this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nFalconTest_A.prototype._label;\n\n\n" +
 				"FalconTest_A.prototype.get__label = function() {\n  return this._label;\n};\n\n\n" +
 				"FalconTest_A.prototype.set__label = function(value) {\n  this._label = value;\n};\n\n\n" +
-				"Object.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/** @export */\nlabel: {\n" +
+				"Object.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/**\n  * @export\n  * @type {string} */\nlabel: {\n" +
 				"get: FalconTest_A.prototype.get__label,\nset: FalconTest_A.prototype.set__label}}\n);"; 
         assertOut(expected);
     }
@@ -94,7 +94,7 @@ public class TestFlexJSAccessors extends ASTestBase
         String expected = "/**\n * @constructor\n */\nB = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('B', B);\n\n\n/**\n * @export\n */\nB.prototype.doStuff = function() {\n  this.label = this.label;\n  var /** @type {string} */ theLabel = this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nB.prototype._label;\n\n\n" +
 				"B.prototype.get__label = function() {\n  return this._label;\n};\n\n\n" +
 				"B.prototype.set__label = function(value) {\n  this._label = value;\n};\n\n\n" +
-				"Object.defineProperties(B.prototype, /** @lends {B.prototype} */ {\n/** @export */\nlabel: {\n" +
+				"Object.defineProperties(B.prototype, /** @lends {B.prototype} */ {\n/**\n  * @export\n  * @type {string} */\nlabel: {\n" +
 				"get: B.prototype.get__label,\nset: B.prototype.set__label}}\n);"; 
         assertOut(expected);
     }
@@ -109,7 +109,7 @@ public class TestFlexJSAccessors extends ASTestBase
         String expected = "/**\n * @constructor\n */\nB = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('B', B);\n\n\n/**\n * @export\n */\nB.prototype.doStuff = function() {\n  var /** @type {string} */ theLabel = this[\"http://www.adobe.com/2006/actionscript/flash/proxy::label\"];\n  this[\"http://www.adobe.com/2006/actionscript/flash/proxy::label\"] = theLabel;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nB.prototype._label;\n\n\n" +
 				"B.prototype[\"http://www.adobe.com/2006/actionscript/flash/proxy::get__label\"] = function() {\n  return this._label;\n};\n\n\n" +
 				"B.prototype[\"http://www.adobe.com/2006/actionscript/flash/proxy::set__label\"] = function(value) {\n  this._label = value;\n};\n\n\n" +
-        		"Object.defineProperties(B.prototype, /** @lends {B.prototype} */ {\n/** @export */\n\"http://www.adobe.com/2006/actionscript/flash/proxy::label\": {\nget: B.prototype[\"http://www.adobe.com/2006/actionscript/flash/proxy::get__label\"],\nset: B.prototype[\"http://www.adobe.com/2006/actionscript/flash/proxy::set__label\"]}}\n);";
+        		"Object.defineProperties(B.prototype, /** @lends {B.prototype} */ {\n/**\n  * @export\n  * @type {string} */\n\"http://www.adobe.com/2006/actionscript/flash/proxy::label\": {\nget: B.prototype[\"http://www.adobe.com/2006/actionscript/flash/proxy::get__label\"],\nset: B.prototype[\"http://www.adobe.com/2006/actionscript/flash/proxy::set__label\"]}}\n);";
         assertOut(expected);
     }
 
@@ -126,7 +126,7 @@ public class TestFlexJSAccessors extends ASTestBase
         		"FalconTest_A.prototype.set__label = function(value) {\nvar oldValue = this.get__label();\nif (oldValue != value) {\nthis.bindable__set__label(value);\n" +
         		"    this.dispatchEvent(org.apache.flex.events.ValueChangeEvent.createUpdateEvent(\n" +
         		"         this, \"label\", oldValue, value));\n}\n};\n\n\n" +
-        		"Object.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/** @export */\n" +
+        		"Object.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/**\n  * @export\n  * @type {string} */\n" +
         		"label: {\nget: FalconTest_A.prototype.get__label,\nset: FalconTest_A.prototype.set__label}}\n);";
         assertOut(expected);
     }
@@ -141,7 +141,7 @@ public class TestFlexJSAccessors extends ASTestBase
         String expected = "/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('FalconTest_A', FalconTest_A);\n\n\n/**\n * @export\n */\nFalconTest_A.prototype.doStuff = function() {\n  this.label = 'hello, bye';\n  var /** @type {string} */ theLabel = this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nFalconTest_A.prototype._label;\n\n\n" +
 				"FalconTest_A.prototype.get__label = function() {\n  return this._label;\n};\n\n\n" +
 				"FalconTest_A.prototype.set__label = function(value) {\n  this._label = value;\n};\n\n\n" +
-        		"Object.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/** @export */\n" +
+        		"Object.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/**\n  * @export\n  * @type {string} */\n" +
         		"label: {\nget: FalconTest_A.prototype.get__label,\nset: FalconTest_A.prototype.set__label}}\n);";
         assertOut(expected);
     }

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/6331b80d/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSClass.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSClass.java b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSClass.java
index fbb1c41..83d727f 100644
--- a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSClass.java
+++ b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSClass.java
@@ -180,7 +180,7 @@ public class TestFlexJSClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class B {public function B() {}; public function set baz(value:Object):void {}; public function set foo(value:Object):void {baz = value;};}");
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\norg.apache.flex.B = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.flex.B', org.apache.flex.B);\n\n\norg.apache.flex.B.prototype.set__baz = function(value) {\n};\n\n\norg.apache.flex.B.prototype.set__foo = function(value) {\n  this.baz = value;\n};\n\n\nObject.defineProperties(org.apache.flex.B.prototype, /** @lends {org.apache.flex.B.prototype} */ {\n/** @export */\nbaz: {\nset: org.apache.flex.B.prototype.set__baz},\n/** @export */\nfoo: {\nset: org.apache.flex.B.prototype.set__foo}}\n);";
+        String expected = "/**\n * @constructor\n */\norg.apache.flex.B = function() {\n};\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.flex.B', org.apache.flex.B);\n\n\norg.apache.flex.B.prototype.set__baz = function(value) {\n};\n\n\norg.apache.flex.B.prototype.set__foo = function(value) {\n  this.baz = value;\n};\n\n\nObject.defineProperties(org.apache.flex.B.prototype, /** @lends {org.apache.flex.B.prototype} */ {\n/**\n  * @export\n  * @type {Object} */\nbaz: {\nset: org.apache.flex.B.prototype.set__baz},\n/**\n  * @export\n  * @type {Object} */\nfoo: {\nset: org.apache.flex.B.prototype.set__foo}}\n);";
         assertOut(expected);
     }
 
@@ -189,7 +189,7 @@ public class TestFlexJSClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class B extends A {public function B() {}; override public function set foo(value:Object):void {super.foo = value;};} class A {public function set foo(value:Object):void {}}");
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n * @extends {org.apache.flex.A}\n */\norg.apache.flex.B = function() {\n  org.apache.flex.B.base(this, 'constructor');\n};\ngoog.inherits(org.apache.flex.B, org.apache.flex.A);\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.flex.B', org.apache.flex.B);\n\n\norg.apache.flex.B.prototype.set__foo = function(value) {\n  org.apache.flex.B.superClass_.set__foo.apply(this, [ value] );\n};\n\n\nObject.defineProperties(org.apache.flex.B.prototype, /** @lends {org.apache.flex.B.prototype} */ {\n/** @export */\nfoo: {\nset: org.apache.flex.B.prototype.set__foo}}\n);";
+        String expected = "/**\n * @constructor\n * @extends {org.apache.flex.A}\n */\norg.apache.flex.B = function() {\n  org.apache.flex.B.base(this, 'constructor');\n};\ngoog.inherits(org.apache.flex.B, org.apache.flex.A);\n\n\n/**\n * Prevent renaming of class. Needed for reflection.\n */\ngoog.exportSymbol('org.apache.flex.B', org.apache.flex.B);\n\n\norg.apache.flex.B.prototype.set__foo = function(value) {\n  org.apache.flex.B.superClass_.set__foo.apply(this, [ value] );\n};\n\n\nObject.defineProperties(org.apache.flex.B.prototype, /** @lends {org.apache.flex.B.prototype} */ {\n/**\n  * @export\n  * @type {Object} */\nfoo: {\nset: org.apache.flex.B.prototype.set__foo}}\n);";
         assertOut(expected);
     }
 
@@ -511,11 +511,11 @@ public class TestFlexJSClass extends TestGoogClass
         		"org.apache.flex.A.prototype.set__foo5 = function(value) {\n};\n\n\n" +
         		"org.apache.flex.A.prototype[\"http://www.adobe.com/2006/actionscript/flash/proxy::get__foo6\"] = function() {\n  return null;\n};\n\n\n" +
         		"org.apache.flex.A.prototype[\"http://www.adobe.com/2006/actionscript/flash/proxy::set__foo6\"] = function(value) {\n};\n\n\n" +
-        		"Object.defineProperties(org.apache.flex.A.prototype, /** @lends {org.apache.flex.A.prototype} */ {\n/** @export */\n" +
-        		    "foo1: {\nget: org.apache.flex.A.prototype.get__foo1,\nset: org.apache.flex.A.prototype.set__foo1},\n/** @export */\n" +
-        		    "foo2: {\nget: org.apache.flex.A.prototype.get__foo2,\nset: org.apache.flex.A.prototype.set__foo2},\n/** @export */\n" +
-        		    "foo3: {\nget: org.apache.flex.A.prototype.get__foo3,\nset: org.apache.flex.A.prototype.set__foo3},\n/** @export */\n" +
-        		    "foo5: {\nget: org.apache.flex.A.prototype.get__foo5,\nset: org.apache.flex.A.prototype.set__foo5},\n/** @export */\n" +
+        		"Object.defineProperties(org.apache.flex.A.prototype, /** @lends {org.apache.flex.A.prototype} */ {\n/**\n  * @export\n  * @type {Object} */\n" +
+        		    "foo1: {\nget: org.apache.flex.A.prototype.get__foo1,\nset: org.apache.flex.A.prototype.set__foo1},\n/**\n  * @export\n  * @type {Object} */\n" +
+        		    "foo2: {\nget: org.apache.flex.A.prototype.get__foo2,\nset: org.apache.flex.A.prototype.set__foo2},\n/**\n  * @export\n  * @type {Object} */\n" +
+        		    "foo3: {\nget: org.apache.flex.A.prototype.get__foo3,\nset: org.apache.flex.A.prototype.set__foo3},\n/**\n  * @export\n  * @type {Object} */\n" +
+        		    "foo5: {\nget: org.apache.flex.A.prototype.get__foo5,\nset: org.apache.flex.A.prototype.set__foo5},\n/**\n  * @export\n  * @type {Object} */\n" +
         		    "\"http://www.adobe.com/2006/actionscript/flash/proxy::foo6\": {\nget: org.apache.flex.A.prototype[\"http://www.adobe.com/2006/actionscript/flash/proxy::get__foo6\"],\n" +
         		    																"set: org.apache.flex.A.prototype[\"http://www.adobe.com/2006/actionscript/flash/proxy::set__foo6\"]}}\n);");
     }

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/6331b80d/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java
index dc28b6b..8b93413 100644
--- a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java
+++ b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java
@@ -102,7 +102,7 @@ public class TestFlexJSExpressions extends TestGoogExpressions
         		  "  return FalconTest_A.superClass_.isDefaultPrevented.apply(this);\n" +
         		  "};\n\n\n" +
         		  "Object.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n" +
-        		  "/** @export */\n" +
+        		  "/**\n  * @export\n  * @type {boolean} */\n" +
         		  "defaultPrevented: {\nget: FalconTest_A.prototype.get__defaultPrevented}}\n);");
     }
 

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/6331b80d/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSPackage.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSPackage.java b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSPackage.java
index 360b875..86022ff 100644
--- a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSPackage.java
+++ b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSPackage.java
@@ -794,7 +794,7 @@ public class TestFlexJSPackage extends TestGoogPackage
         		  "\n" +
         		  "\n" +
         		  "Object.defineProperties(foo.bar.baz.A.prototype, /** @lends {foo.bar.baz.A.prototype} */ {\n" +
-                  "/** @export */\n" +
+                  "/**\n  * @export\n  * @type {string} */\n" +
                   "myString: {\n" +
                   "get: foo.bar.baz.A.prototype.get__myString,\n" +
                   "set: foo.bar.baz.A.prototype.set__myString}}\n" +
@@ -850,7 +850,7 @@ public class TestFlexJSPackage extends TestGoogPackage
         		  "\n" +
         		  "\n" +
         		  "Object.defineProperties(foo.bar.baz.A.InternalClass.prototype, /** @lends {foo.bar.baz.A.InternalClass.prototype} */ {\n" +
-                  "/** @export */\n" +
+                  "/**\n  * @export\n  * @type {string} */\n" +
                   "someString: {\n" +
                   "get: foo.bar.baz.A.InternalClass.prototype.get__someString,\n" +
                   "set: foo.bar.baz.A.InternalClass.prototype.set__someString}}\n" +

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/6331b80d/compiler-jx/src/test/resources/flexjs/files/MyInitialView_result.js
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/resources/flexjs/files/MyInitialView_result.js b/compiler-jx/src/test/resources/flexjs/files/MyInitialView_result.js
index 7fe3836..ae55d78 100644
--- a/compiler-jx/src/test/resources/flexjs/files/MyInitialView_result.js
+++ b/compiler-jx/src/test/resources/flexjs/files/MyInitialView_result.js
@@ -269,16 +269,24 @@ MyInitialView.prototype.get__comboBoxValue = function() {
 
 
 Object.defineProperties(MyInitialView.prototype, /** @lends {MyInitialView.prototype} */ {
-/** @export */
+/**
+  * @export
+  * @type {string} */
 symbol: {
 get: MyInitialView.prototype.get__symbol},
-/** @export */
+/**
+  * @export
+  * @type {string} */
 city: {
 get: MyInitialView.prototype.get__city},
-/** @export */
+/**
+  * @export
+  * @type {string} */
 inputText: {
 get: MyInitialView.prototype.get__inputText},
-/** @export */
+/**
+  * @export
+  * @type {string} */
 comboBoxValue: {
 get: MyInitialView.prototype.get__comboBoxValue}}
 );/**

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/6331b80d/compiler-jx/src/test/resources/flexjs/files/models/MyModel_result.js
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/resources/flexjs/files/models/MyModel_result.js b/compiler-jx/src/test/resources/flexjs/files/models/MyModel_result.js
index ab547d7..041d254 100644
--- a/compiler-jx/src/test/resources/flexjs/files/models/MyModel_result.js
+++ b/compiler-jx/src/test/resources/flexjs/files/models/MyModel_result.js
@@ -90,14 +90,20 @@ models.MyModel.prototype.get__cities = function() {
 
 
 Object.defineProperties(models.MyModel.prototype, /** @lends {models.MyModel.prototype} */ {
-/** @export */
+/**
+  * @export
+  * @type {string} */
 labelText: {
 get: models.MyModel.prototype.get__labelText,
 set: models.MyModel.prototype.set__labelText},
-/** @export */
+/**
+  * @export
+  * @type {Array} */
 strings: {
 get: models.MyModel.prototype.get__strings},
-/** @export */
+/**
+  * @export
+  * @type {Array} */
 cities: {
 get: models.MyModel.prototype.get__cities}}
 );

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/6331b80d/compiler-jx/src/test/resources/flexjs/projects/super/Base_result.js
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/resources/flexjs/projects/super/Base_result.js b/compiler-jx/src/test/resources/flexjs/projects/super/Base_result.js
index 720e39c..3c712ac 100644
--- a/compiler-jx/src/test/resources/flexjs/projects/super/Base_result.js
+++ b/compiler-jx/src/test/resources/flexjs/projects/super/Base_result.js
@@ -54,7 +54,9 @@ Base.prototype.set__text = function(value) {
 
 
 Object.defineProperties(Base.prototype, /** @lends {Base.prototype} */ {
-/** @export */
+/**
+  * @export
+  * @type {string} */
 text: {
 get: Base.prototype.get__text,
 set: Base.prototype.set__text}}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/6331b80d/compiler-jx/src/test/resources/flexjs/projects/super/Super_result.js
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/resources/flexjs/projects/super/Super_result.js b/compiler-jx/src/test/resources/flexjs/projects/super/Super_result.js
index d77b6b2..53d1d2d 100644
--- a/compiler-jx/src/test/resources/flexjs/projects/super/Super_result.js
+++ b/compiler-jx/src/test/resources/flexjs/projects/super/Super_result.js
@@ -56,7 +56,9 @@ Super.prototype.set__text = function(value) {
 
 
 Object.defineProperties(Super.prototype, /** @lends {Super.prototype} */ {
-/** @export */
+/**
+  * @export
+  * @type {string} */
 text: {
 get: Super.prototype.get__text,
 set: Super.prototype.set__text}}


[04/13] git commit: [flex-falcon] [refs/heads/feature/amf] - update test to include 'transform'

Posted by pi...@apache.org.
update test to include 'transform'


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

Branch: refs/heads/feature/amf
Commit: aefb414b5c9c0d0feddcdf85fadcf4007f9ca759
Parents: 84170a2
Author: Alex Harui <ah...@apache.org>
Authored: Sat Aug 5 21:00:33 2017 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Sat Aug 5 21:00:33 2017 -0700

----------------------------------------------------------------------
 .../test/resources/flexjs/files/CSSTestSource.css | 14 ++++++++++++++
 .../flexjs/files/CSSTestSource_encoded_result.txt | 18 ++++++++++++++++--
 .../flexjs/files/CSSTestSource_result.css         | 15 +++++++++++++++
 3 files changed, 45 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/aefb414b/compiler-jx/src/test/resources/flexjs/files/CSSTestSource.css
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/resources/flexjs/files/CSSTestSource.css b/compiler-jx/src/test/resources/flexjs/files/CSSTestSource.css
index 74340ba..4df3ee2 100755
--- a/compiler-jx/src/test/resources/flexjs/files/CSSTestSource.css
+++ b/compiler-jx/src/test/resources/flexjs/files/CSSTestSource.css
@@ -105,3 +105,17 @@
 	font-family: Georgia, Times New Roman, Times, serif;
 	box-shadow: 0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12);
 }
+
+.FLEX35346 {
+			position: absolute;
+			height: 2px;
+			width: calc(100% - 22px);
+			top: 50%;
+			left: 0;
+			margin: 0 26px;
+			overflow: hidden;
+			border: 0;
+			padding: 0;
+			-webkit-transform: translate(0,-1px);
+			transform: translate(0,-1px)
+}

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/aefb414b/compiler-jx/src/test/resources/flexjs/files/CSSTestSource_encoded_result.txt
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/resources/flexjs/files/CSSTestSource_encoded_result.txt b/compiler-jx/src/test/resources/flexjs/files/CSSTestSource_encoded_result.txt
index 296b472..fecfc43 100755
--- a/compiler-jx/src/test/resources/flexjs/files/CSSTestSource_encoded_result.txt
+++ b/compiler-jx/src/test/resources/flexjs/files/CSSTestSource_encoded_result.txt
@@ -18,5 +18,19 @@
 //
 ////////////////////////////////////////////////////////////////////////////////
 */
-0,
1,
".glass",
function() {this["borderColor"] = 7763059;
this["highlightAlphas"] = [0.07000000029802322, 0.44999998807907104];
this["fillColors"] = [8947848, 15987699, 10395294, 16579836];
this["fillAlphas"] = [0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421]},
0,
1,
".glassSlider",
function() {this["fillColors"] = [15987699, 12303291, 16579836, 13421772];
this["fillAlphas"] = [0.800000011920929, 0.699999988079071, 0.6000000238418579, 0.5]},
0,
1,
".listItem",
function() {this["borderStyle"] = "outset";
this["backgroundColor"] = 16777215;
this["verticalAlign"] = "middle";
this["horizontalGap"] = 5.0;
this["backgroundAlpha"] = 0.5;
this["paddingLeft"] = 4.0;
this["paddingRight"] = 4.0},
0,
1,
".outer.inner",
function() {this["width"] = 512.0},
0,
1,
".outer .inner",
function() {this["width"] = 512.0},
0,
1,
".outer>.innerTitle",
function() {this["height"] = 176.0;
this["color"] = 16777215;
this["background"] = ["url('assets/welcome_card.jpg')", "center"
 , "/", "cover"]},
0,
1,
".outer>.innerMenu",
function() {this["color"] = 16777215},
0,
1,
"h4",
function() {this["color"] = 16777215},
0,
1,
".outerother.inner",
function() {this["height"] = 320.0;
this["width"] = 320.0},
0,
1,
".outerother-square>.innerTitle",
function() {this["color"] = 16777215;
this["background"] = ["url('assets/dog.png')", "bottom", "right", 15.0, "no-repeat", 4634284]},
0,
1,
".usescalc",
function() {this["color"] = 16777215;
this["width"] = },
0,
1,
".FLEX35340A",
function() {this["transform"] = ;
this["background"] = ;
this["filter"] = },
0,
1,
".FLEX35340B",
function() {this["background"] = },
0,
1,
".FLEX35340C",
function() {this["background"] = },
0,
1,
".FLEX35340D",
function() {this["boxShadow"] = ["0 2px 2px 0 rgba(0,0,0,.14)", "0 3px 1px -2px rgba(0,0,0,.2)", "0 1px 5px 0 rgba(0,0,0,.12)"];
this["fontFamily"] = ["Georgia", "Times New Roman", "Times", "serif"]}];
-
\ No newline at end of file
+0,
1,
".glass",
function() {this["borderColor"] = 7763059;
this["highlightAlphas"] = [0.07000000029802322, 0.44999998807907104];
this["fillColors"] = [8947848, 15987699, 10395294, 16579836];
this["fillAlphas"] = [0.6000000238418579, 0.699999988079071, 0.800000011920929, 0.8999999761581421]},
0,
1,
".glassSlider",
function() {this["fillColors"] = [15987699, 12303291, 16579836, 13421772];
this["fillAlphas"] = [0.800000011920929, 0.699999988079071, 0.6000000238418579, 0.5]},
0,
1,
".listItem",
function() {this["borderStyle"] = "outset";
this["backgroundColor"] = 16777215;
this["verticalAlign"] = "middle";
this["horizontalGap"] = 5.0;
this["backgroundAlpha"] = 0.5;
this["paddingLeft"] = 4.0;
this["paddingRight"] = 4.0},
0,
1,
".outer.inner",
function() {this["width"] = 512.0},
0,
1,
".outer .inner",
function() {this["width"] = 512.0},
0,
1,
".outer>.innerTitle",
function() {this["height"] = 176.0;
this["color"] = 16777215;
this["background"] = ["url('assets/welcome_card.jpg')", "center"
 , "/", "cover"]},
0,
1,
".outer>.innerMenu",
function() {this["color"] = 16777215},
0,
1,
"h4",
function() {this["color"] = 16777215},
0,
1,
".outerother.inner",
function() {this["height"] = 320.0;
this["width"] = 320.0},
0,
1,
".outerother-square>.innerTitle",
function() {this["color"] = 16777215;
this["background"] = ["url('assets/dog.png')", "bottom", "right", 15.0, "no-repeat", 4634284]},
0,
1,
".usescalc",
function() {this["color"] = 16777215;
this["width"] = null},
0,
1,
".FLEX35340A",
function() {this["transform"] = null;
this["background"] = null;
this["filter"] = null},
0,
1,
".FLEX35340B",
function() {this["background"] = null},
0,
1,
".FLEX35340C",
function() {this["background"] = null},
0,
1,
".FLEX35340D",
function() {this["boxShadow"] = ["0 2px 2px 0 rgba(0,0,0,.14)", "0 3px 1px -2px rgba(0,0,0,.2)", "0 1px 5px 0 rgba(0,0,0,.12)"];
this["fontFamily"] = ["Georgia", "Times New Roman", "Times", "serif"]},
+0,
+1,
+".FLEX35346",
+function() {this["position"] = "absolute";
+this["transform"] = null;
+this["height"] = 2.0;
+this["overflow"] = "hidden";
+this["width"] = null;
+this["margin"] = [0.0, 26.0];
+this["left"] = 0.0;
+this["padding"] = 0.0;
+this["border"] = 0.0;
+this["WebkitTransform"] = null;
+this["top"] = 50.0}];
+

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/aefb414b/compiler-jx/src/test/resources/flexjs/files/CSSTestSource_result.css
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/resources/flexjs/files/CSSTestSource_result.css b/compiler-jx/src/test/resources/flexjs/files/CSSTestSource_result.css
index a526831..b652b77 100755
--- a/compiler-jx/src/test/resources/flexjs/files/CSSTestSource_result.css
+++ b/compiler-jx/src/test/resources/flexjs/files/CSSTestSource_result.css
@@ -112,4 +112,19 @@
 }
 
 
+.FLEX35346 {
+        position: absolute;
+        transform: translate(0,-1px);
+        height: 2px;
+        overflow: hidden;
+        width: calc(100% - 22px);
+        margin: 0 26px;
+        left: 0;
+        padding: 0;
+        border: 0;
+        -webkit-transform: translate(0,-1px);
+        top: 50%;
+}
+
+
 


[06/13] git commit: [flex-falcon] [refs/heads/feature/amf] - option to skip @export statements in most JS output

Posted by pi...@apache.org.
option to skip @export statements in most JS output


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

Branch: refs/heads/feature/amf
Commit: d69cf6c7fd18bdc2332cea8a8f84f1ff47199272
Parents: 42516a8
Author: Alex Harui <ah...@apache.org>
Authored: Tue Aug 8 13:53:42 2017 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Tue Aug 8 13:53:42 2017 -0700

----------------------------------------------------------------------
 .../codegen/js/flexjs/JSFlexJSDocEmitter.java   | 12 +++++++++++
 .../codegen/mxml/flexjs/MXMLFlexJSEmitter.java  | 16 +++++++++++----
 .../js/goog/JSGoogCompcConfiguration.java       | 20 +++++++++++++++++++
 .../driver/js/goog/JSGoogConfiguration.java     | 21 ++++++++++++++++++++
 4 files changed, 65 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/d69cf6c7/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSDocEmitter.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSDocEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSDocEmitter.java
index 0cb1309..6077953 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSDocEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSDocEmitter.java
@@ -37,10 +37,12 @@ import org.apache.flex.compiler.internal.codegen.as.ASEmitterTokens;
 import org.apache.flex.compiler.internal.codegen.js.JSEmitterTokens;
 import org.apache.flex.compiler.internal.codegen.js.JSSessionModel;
 import org.apache.flex.compiler.internal.codegen.js.goog.JSGoogDocEmitter;
+import org.apache.flex.compiler.internal.codegen.js.goog.JSGoogDocEmitterTokens;
 import org.apache.flex.compiler.internal.codegen.js.jx.BindableEmitter;
 import org.apache.flex.compiler.internal.projects.FlexJSProject;
 import org.apache.flex.compiler.internal.scopes.ASScope;
 import org.apache.flex.compiler.projects.ICompilerProject;
+import org.apache.flex.compiler.tree.as.IASNode;
 import org.apache.flex.compiler.tree.as.IDefinitionNode;
 import org.apache.flex.compiler.tree.as.IExpressionNode;
 import org.apache.flex.compiler.tree.as.IFunctionNode;
@@ -53,6 +55,7 @@ public class JSFlexJSDocEmitter extends JSGoogDocEmitter
     private List<String> ignoreList;
     private List<String> coercionList;
     public boolean emitStringConversions = true;
+    private boolean emitExports = true;
 
     public JSFlexJSDocEmitter(IJSEmitter emitter)
     {
@@ -107,6 +110,8 @@ public class JSFlexJSDocEmitter extends JSGoogDocEmitter
     {
     	FlexJSProject fjp = (FlexJSProject)project;
         boolean keepASDoc = fjp.config != null && fjp.config.getKeepASDoc();
+        if (fjp.config != null)
+        	emitExports = fjp.config.getExportPublicSymbols();
         
         coercionList = null;
         ignoreList = null;
@@ -432,4 +437,11 @@ public class JSFlexJSDocEmitter extends JSGoogDocEmitter
         end();
     }
 
+    @Override
+    public void emitPublic(IASNode node)
+    {
+    	if (emitExports)
+    		super.emitPublic(node);
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/d69cf6c7/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
index 77377c9..c42c3f5 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
@@ -122,6 +122,7 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
     private StringBuilder subDocuments = new StringBuilder();
     private ArrayList<String> subDocumentNames = new ArrayList<String>();
     private String interfaceList;
+    private boolean emitExports = true;
     
     /**
      * This keeps track of the entries in our temporary array of 
@@ -510,6 +511,10 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
     @Override
     public void emitDocument(IMXMLDocumentNode node)
     {
+        FlexJSProject fjp = (FlexJSProject) getMXMLWalker().getProject();
+    	if (fjp.config != null)
+    		emitExports = fjp.config.getExportPublicSymbols();
+    	
         descriptorTree = new ArrayList<MXMLDescriptorSpecifier>();
         propertiesTree = new MXMLDescriptorSpecifier();
 
@@ -749,7 +754,8 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
             root.isTopNode = true;
     
 	        writeNewline("/**");
-	        writeNewline(" * @export");
+	        if (emitExports)
+	        	writeNewline(" * @export");
 	        writeNewline(" * @type {Array}");
 	        writeNewline(" */");
 	        writeNewline("this.mxmlsd = " + ASEmitterTokens.SQUARE_OPEN.getToken());
@@ -1135,7 +1141,7 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
         .getASEmitter();
 
         writeNewline("/**");
-        writeNewline(" * @export");
+        writeNewline(" * @export"); // must export or else GCC will remove it
         writeNewline(" */");
         writeNewline(formatQualifiedName(cname)
                 + ".prototype._bindings = [");
@@ -1536,7 +1542,8 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
         for (MXMLEventSpecifier event : events)
         {
             writeNewline("/**");
-            writeNewline(" * @export");
+	        if (emitExports)
+	        	writeNewline(" * @export");
             writeNewline(" * @param {" + formatQualifiedName(event.type) + "} event");
             writeNewline(" */");
             writeNewline(formatQualifiedName(cname)
@@ -1598,7 +1605,8 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
                     .getToken()))
             {
                 indentPush();
-                writeNewline("/** @export */");
+    	        if (emitExports)
+    	        	writeNewline("/** @export */");
                 writeNewline(instance.id + ": {");
                 writeNewline("/** @this {" + formattedCName + "} */");
                 indentPush();

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/d69cf6c7/compiler-jx/src/main/java/org/apache/flex/compiler/internal/driver/js/goog/JSGoogCompcConfiguration.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/driver/js/goog/JSGoogCompcConfiguration.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/driver/js/goog/JSGoogCompcConfiguration.java
index ab690e4..ebf3a21 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/driver/js/goog/JSGoogCompcConfiguration.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/driver/js/goog/JSGoogCompcConfiguration.java
@@ -403,5 +403,25 @@ public class JSGoogCompcConfiguration extends JSConfiguration
         keepCodeWithMetadata.addAll(values);
     }
 
+    //
+    // 'export-public-symbols'
+    //
+
+    private boolean exportPublicSymbols = true;
+
+    public boolean getExportPublicSymbols()
+    {
+        return exportPublicSymbols;
+    }
+
+    @Config
+    @Mapping("export-public-symbols")
+    public void setExportPublicSymbols(ConfigurationValue cv, boolean value)
+            throws ConfigurationException
+    {
+    	exportPublicSymbols = value;
+    }
+
+    
 
 }

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/d69cf6c7/compiler-jx/src/main/java/org/apache/flex/compiler/internal/driver/js/goog/JSGoogConfiguration.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/driver/js/goog/JSGoogConfiguration.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/driver/js/goog/JSGoogConfiguration.java
index 318c90b..f1ccd4d 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/driver/js/goog/JSGoogConfiguration.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/driver/js/goog/JSGoogConfiguration.java
@@ -402,5 +402,26 @@ public class JSGoogConfiguration extends JSConfiguration
         keepCodeWithMetadata.addAll(values);
     }
 
+    //
+    // 'export-public-symbols'
+    //
+
+    private boolean exportPublicSymbols = true;
+
+    public boolean getExportPublicSymbols()
+    {
+        return exportPublicSymbols;
+    }
+
+    @Config
+    @Mapping("export-public-symbols")
+    public void setExportPublicSymbols(ConfigurationValue cv, boolean value)
+            throws ConfigurationException
+    {
+    	exportPublicSymbols = value;
+    }
+
+    
+    
 
 }


[02/13] git commit: [flex-falcon] [refs/heads/feature/amf] - fix a call to super

Posted by pi...@apache.org.
fix a call to super


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

Branch: refs/heads/feature/amf
Commit: 9827b9f9090cb533cf017bbdf3dbc4b0f2bddb66
Parents: d51eb8a
Author: Alex Harui <ah...@apache.org>
Authored: Fri Aug 4 00:03:17 2017 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Fri Aug 4 00:03:17 2017 -0700

----------------------------------------------------------------------
 .../codegen/js/jx/SuperCallEmitter.java         |  9 ++++--
 .../js/flexjs/TestFlexJSExpressions.java        | 32 ++++++++++++++++++++
 2 files changed, 39 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/9827b9f9/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/SuperCallEmitter.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/SuperCallEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/SuperCallEmitter.java
index ad3c6c4..f1b8bed 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/SuperCallEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/SuperCallEmitter.java
@@ -73,8 +73,13 @@ public class SuperCallEmitter extends JSSubEmitter
             IClassNode cnode = (IClassNode) node
                     .getAncestorOfType(IClassNode.class);
 
-            if (fnode != null
-                    && (fnode.getNodeID() == ASTNodeID.GetterID || fnode
+            IExpressionNode fcNameNode = fcnode.getNameNode();
+            // assume it is memberaccess of the form super.somefunction
+            MemberAccessExpressionNode mae = null;
+            if (fcNameNode.getNodeID() == ASTNodeID.MemberAccessExpressionID)
+            	mae = (MemberAccessExpressionNode)fcNameNode;
+            if (mae != null
+                    && (mae.getRightOperandNode().getNodeID() == ASTNodeID.GetterID || mae.getRightOperandNode()
                             .getNodeID() == ASTNodeID.SetterID))
             {
                 if (cnode == null && thisClass != null)

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/9827b9f9/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java
index b5a7de5..dc28b6b 100644
--- a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java
+++ b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSExpressions.java
@@ -35,6 +35,7 @@ import org.apache.flex.compiler.tree.as.IClassNode;
 import org.apache.flex.compiler.tree.as.IFileNode;
 import org.apache.flex.compiler.tree.as.IFunctionCallNode;
 import org.apache.flex.compiler.tree.as.IFunctionNode;
+import org.apache.flex.compiler.tree.as.IGetterNode;
 import org.apache.flex.compiler.tree.as.IMemberAccessExpressionNode;
 import org.apache.flex.compiler.tree.as.IVariableNode;
 import org.junit.Ignore;
@@ -74,6 +75,37 @@ public class TestFlexJSExpressions extends TestGoogExpressions
         assertOut("super.foo");
     }
 
+    @Test
+    public void testVisitLanguageIdentifierNode_SuperGetter()
+    {
+        IClassNode node = (IClassNode)getNode("public function get defaultPrevented():Boolean " +
+        		                       "{ return super.isDefaultPrevented(); }" + 
+        		                       "override public function isDefaultPrevented():Boolean" +
+                                       "{ return defaultPrevented; }", IClassNode.class);
+        // getters and setters don't get output until the class is output so you can't just visit the accessorNode
+        asBlockWalker.visitClass(node);
+        assertOut("/**\n * @constructor\n */\n" + 
+        		  "FalconTest_A = function() {\n" +
+        		  "};\n\n\n" +
+        		  "/**\n" +
+        		  " * Prevent renaming of class. Needed for reflection.\n" +
+        		  " */\n" +
+        		  "goog.exportSymbol('FalconTest_A', FalconTest_A);\n\n\n" +
+        		  "FalconTest_A.prototype.falconTest_a = function() {\n" +
+        		  "  var self = this;\n" +
+        		  "  ;\n" +
+        		  "  function isDefaultPrevented() {\n" +
+        		  "    return defaultPrevented;\n  };\n" +
+        		  "  ;\n  \n" +
+        		  "};\n\n\n" +
+        		  "FalconTest_A.prototype.get__defaultPrevented = function() {\n" +
+        		  "  return FalconTest_A.superClass_.isDefaultPrevented.apply(this);\n" +
+        		  "};\n\n\n" +
+        		  "Object.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n" +
+        		  "/** @export */\n" +
+        		  "defaultPrevented: {\nget: FalconTest_A.prototype.get__defaultPrevented}}\n);");
+    }
+
     @Override
     @Test
     public void testVisitLanguageIdentifierNode_SuperMethod_1()


[07/13] git commit: [flex-falcon] [refs/heads/feature/amf] - don't allow renames of MXML IDs

Posted by pi...@apache.org.
don't allow renames of MXML IDs


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

Branch: refs/heads/feature/amf
Commit: 8d7e14740167ab63c52ae5e5e738ca1890217c06
Parents: d69cf6c
Author: Alex Harui <ah...@apache.org>
Authored: Wed Aug 9 12:19:09 2017 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Wed Aug 9 12:19:09 2017 -0700

----------------------------------------------------------------------
 .../compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java  | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/8d7e1474/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
index c42c3f5..c79bfea 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
@@ -1605,8 +1605,7 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
                     .getToken()))
             {
                 indentPush();
-    	        if (emitExports)
-    	        	writeNewline("/** @export */");
+    	        writeNewline("/** @export */");
                 writeNewline(instance.id + ": {");
                 writeNewline("/** @this {" + formattedCName + "} */");
                 indentPush();