You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by jo...@apache.org on 2017/03/21 23:11:07 UTC

[30/50] git commit: [flex-falcon] [refs/heads/master] - [BUGFIX] Changed reflection data output to support static and instance members with the same name. Note: This changes requires a corresponding change in the Reflection framework classes to support t

[BUGFIX] Changed reflection data output to support static and instance members with the same name.
Note: This changes requires a corresponding change in the Reflection framework classes to support the output format change.


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

Branch: refs/heads/master
Commit: e1fbc8b55677261d4bad448380b891ab9da1a745
Parents: 82a0704
Author: greg-dove <gr...@gmail.com>
Authored: Sat Feb 25 16:03:00 2017 +1300
Committer: greg-dove <gr...@gmail.com>
Committed: Sat Feb 25 16:03:00 2017 +1300

----------------------------------------------------------------------
 .../codegen/js/jx/PackageFooterEmitter.java     |  39 +++++--
 .../codegen/mxml/flexjs/MXMLFlexJSEmitter.java  | 117 ++++++++++---------
 .../codegen/js/flexjs/TestFlexJSPackage.java    |   4 +-
 3 files changed, 93 insertions(+), 67 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e1fbc8b5/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/PackageFooterEmitter.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/PackageFooterEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/PackageFooterEmitter.java
index d2f53c5..65b69d1 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/PackageFooterEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/PackageFooterEmitter.java
@@ -367,12 +367,15 @@ public class PackageFooterEmitter extends JSSubEmitter implements
 			accessorData.add(staticEventDispatcher);
 		}
         
-	    HashMap<String, AccessorData> accessorMap = new HashMap<String, AccessorData>();
+	    HashMap<String, AccessorData> instanceAccessorMap = new HashMap<String, AccessorData>();
+		HashMap<String, AccessorData> staticAccessorMap = new HashMap<String, AccessorData>();
         for (IDefinitionNode dnode : dnodes)
         {
             ModifiersSet modifierSet = dnode.getDefinition().getModifiers();
             boolean isStatic = (modifierSet != null && modifierSet
                     .hasModifier(ASModifier.STATIC));
+
+			HashMap<String, AccessorData> accessorMap = isStatic ? staticAccessorMap : instanceAccessorMap;
             if ((dnode.getNodeID() == ASTNodeID.GetterID ||
             		dnode.getNodeID() == ASTNodeID.SetterID))
             {
@@ -589,6 +592,10 @@ public class PackageFooterEmitter extends JSSubEmitter implements
 					count++;
 					// varname: { type: typename
 					write(ASEmitterTokens.SINGLE_QUOTE);
+					//prefix static var names with |
+					if (var.isStatic) {
+					    write("|");
+                    }
 					write(var.name);
 					write(ASEmitterTokens.SINGLE_QUOTE);
 					writeToken(ASEmitterTokens.COLON);
@@ -598,9 +605,9 @@ public class PackageFooterEmitter extends JSSubEmitter implements
 					write(ASEmitterTokens.SINGLE_QUOTE);
 					write(var.type);
 					write(ASEmitterTokens.SINGLE_QUOTE);
-					if (var.isStatic) {
-						writeIsStatic();
-					}
+				//	if (var.isStatic) {
+				//		writeIsStatic();
+				//	}
 					IMetaTagNode[] tags = var.metaData;
 					if (tags != null) {
 						writeToken(ASEmitterTokens.COMMA);
@@ -650,6 +657,10 @@ public class PackageFooterEmitter extends JSSubEmitter implements
 				count++;
 				// accessorname: { type: typename
 				write(ASEmitterTokens.SINGLE_QUOTE);
+				//prefix static accessor names with |
+				if (accessor.isStatic) {
+					write("|");
+				}
 				write(accessor.name);
 				write(ASEmitterTokens.SINGLE_QUOTE);
 				writeToken(ASEmitterTokens.COLON);
@@ -659,9 +670,9 @@ public class PackageFooterEmitter extends JSSubEmitter implements
 				write(ASEmitterTokens.SINGLE_QUOTE);
 				write(accessor.type);
 				write(ASEmitterTokens.SINGLE_QUOTE);
-				if (accessor.isStatic) {
-					writeIsStatic();
-				}
+			//	if (accessor.isStatic) {
+			//		writeIsStatic();
+			//	}
 				writeToken(ASEmitterTokens.COMMA);
 				write("access");
 				writeToken(ASEmitterTokens.COLON);
@@ -723,6 +734,10 @@ public class PackageFooterEmitter extends JSSubEmitter implements
 				count++;
 				// methodname: { type: typename
 				write(ASEmitterTokens.SINGLE_QUOTE);
+				//prefix static method names with |
+				if (method.isStatic) {
+					write("|");
+				}
 				write(method.name);
 				write(ASEmitterTokens.SINGLE_QUOTE);
 				writeToken(ASEmitterTokens.COLON);
@@ -732,9 +747,9 @@ public class PackageFooterEmitter extends JSSubEmitter implements
 				write(ASEmitterTokens.SINGLE_QUOTE);
 				write(method.type);
 				write(ASEmitterTokens.SINGLE_QUOTE);
-				if (method.isStatic) {
-					writeIsStatic();
-				}
+			//	if (method.isStatic) {
+			//		writeIsStatic();
+			//	}
 				writeToken(ASEmitterTokens.COMMA);
 				write("declaredBy");
 				writeToken(ASEmitterTokens.COLON);
@@ -801,12 +816,12 @@ public class PackageFooterEmitter extends JSSubEmitter implements
 		writeToken(ASEmitterTokens.SQUARE_CLOSE);
 	}
 
-	private void writeIsStatic() {
+	/*private void writeIsStatic() {
 		writeToken(ASEmitterTokens.COMMA);
 		write("isStatic");
 		writeToken(ASEmitterTokens.COLON);
 		writeToken(ASEmitterTokens.TRUE);
-	}
+	}*/
 
 	private void writeEmptyContent(Boolean appendComma, Boolean includeNewline) {
 		//return {};

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e1fbc8b5/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 2379a62..21aef44 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
@@ -717,59 +717,11 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
 
         ArrayList<PackageFooterEmitter.AccessorData> accessorData = new ArrayList<PackageFooterEmitter.AccessorData>();
         HashMap<String, PropertyNodes> accessors = asEmitter.getModel().getPropertyMap();
-        for (String propName : accessors.keySet())
-        {
-        	PropertyNodes p = accessors.get(propName);
-
-        	IFunctionNode accessorNode = p.getter;
-        	if (accessorNode == null)
-        		accessorNode = p.setter;
-            String ns = accessorNode.getNamespace();
-            if (ns == IASKeywordConstants.PUBLIC)
-            {
-            	PackageFooterEmitter.AccessorData data = asEmitter.packageFooterEmitter.new AccessorData();
-            	accessorData.add(data);
-            	data.name = accessorNode.getName();
-
-                data.isStatic = accessorNode.hasModifier(ASModifier.STATIC);
-            	if (p.getter != null)
-            	{
-                     data.type = p.getter.getReturnTypeNode().resolveType(fjs).getQualifiedName();
-                     if (p.setter !=null) {
-                         data.access = "readwrite";
-                     } else data.access = "readonly";
-                }
-            	else
-                {
-                     data.type = p.setter.getVariableTypeNode().resolveType(fjs).getQualifiedName();
-                     data.access = "writeonly";
-                }
-
-	    	    data.declaredBy = (cdef.getQualifiedName());
-        	    IMetaTagsNode metaData = accessorNode.getMetaTags();
-        	    if (metaData != null)
-        	    {
-        	    	IMetaTagNode[] tags = metaData.getAllTags();
-        	    	if (tags.length > 0)
-        	    	{
-        	    		data.metaData = tags;
-    	    			/* accessors don't need exportProp since they are referenced via the defineProp data structure
-        	    		for (IMetaTagNode tag : tags)
-        	    		{
-        	    			String tagName =  tag.getTagName();
-        	    			if (exportMetadata.contains(tagName))
-        	    			{
-        	    				if (data.isStatic)
-        	    					exportSymbols.add(data.name);
-        	    				else
-            	    				exportProperties.add(data.name);
-        	    			}
-        	    		}
-        	    			*/
-        	    	}
-        	    }
-            }
-        }
+        //instance accessors
+        collectAccessors(accessors,accessorData,cdef);
+        accessors = asEmitter.getModel().getStaticPropertyMap();
+        //static accessors
+        collectAccessors(accessors,accessorData,cdef);
 
         //additional bindables
         HashMap<String, BindableVarInfo> bindableVars = asEmitter.getModel().getBindableVars();
@@ -899,6 +851,65 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
                 exportSymbols);
     }
 
+    private void collectAccessors(HashMap<String, PropertyNodes> accessors, ArrayList<PackageFooterEmitter.AccessorData> accessorData,IClassDefinition cdef ) {
+        JSFlexJSEmitter asEmitter = (JSFlexJSEmitter)((IMXMLBlockWalker) getMXMLWalker()).getASEmitter();
+        FlexJSProject fjs = (FlexJSProject) getMXMLWalker().getProject();
+
+        for (String propName : accessors.keySet())
+        {
+            PropertyNodes p = accessors.get(propName);
+
+            IFunctionNode accessorNode = p.getter;
+            if (accessorNode == null)
+                accessorNode = p.setter;
+            String ns = accessorNode.getNamespace();
+            if (ns == IASKeywordConstants.PUBLIC)
+            {
+                PackageFooterEmitter.AccessorData data = asEmitter.packageFooterEmitter.new AccessorData();
+                accessorData.add(data);
+                data.name = accessorNode.getName();
+
+                data.isStatic = accessorNode.hasModifier(ASModifier.STATIC);
+                if (p.getter != null)
+                {
+                    data.type = p.getter.getReturnTypeNode().resolveType(fjs).getQualifiedName();
+                    if (p.setter !=null) {
+                        data.access = "readwrite";
+                    } else data.access = "readonly";
+                }
+                else
+                {
+                    data.type = p.setter.getVariableTypeNode().resolveType(fjs).getQualifiedName();
+                    data.access = "writeonly";
+                }
+
+                data.declaredBy = (cdef.getQualifiedName());
+                IMetaTagsNode metaData = accessorNode.getMetaTags();
+                if (metaData != null)
+                {
+                    IMetaTagNode[] tags = metaData.getAllTags();
+                    if (tags.length > 0)
+                    {
+                        data.metaData = tags;
+    	    			/* accessors don't need exportProp since they are referenced via the defineProp data structure
+        	    		for (IMetaTagNode tag : tags)
+        	    		{
+        	    			String tagName =  tag.getTagName();
+        	    			if (exportMetadata.contains(tagName))
+        	    			{
+        	    				if (data.isStatic)
+        	    					exportSymbols.add(data.name);
+        	    				else
+            	    				exportProperties.add(data.name);
+        	    			}
+        	    		}
+        	    			*/
+                    }
+                }
+            }
+        }
+    }
+
     //--------------------------------------------------------------------------
 
     protected void emitPropertyDecls()

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/e1fbc8b5/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 0215e25..9e94828 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
@@ -790,14 +790,14 @@ public class TestFlexJSPackage extends TestGoogPackage
         		"  return {\n" +
 				"    variables: function () {\n" +
 				"      return {\n" +
-				"        'someString': { type: 'String', isStatic: true }\n" +
+				"        '|someString': { type: 'String'}\n" +
 				"      };\n" +
 				"    },\n" +
 				"    accessors: function () {return {};},\n" +
         		"    methods: function () {\n" +
         		"      return {\n" +
         		"        'InternalClass': { type: '', declaredBy: 'foo.bar.baz.A.InternalClass'},\n" +
-				"        'someStaticFunction': { type: 'String', isStatic: true , declaredBy: 'foo.bar.baz.A.InternalClass'},\n" +
+				"        '|someStaticFunction': { type: 'String', declaredBy: 'foo.bar.baz.A.InternalClass'},\n" +
         		"        'someMethod': { type: 'String', declaredBy: 'foo.bar.baz.A.InternalClass'}\n" +
         		"      };\n" +
         		"    }\n" +