You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2016/10/09 05:28:21 UTC

git commit: [flex-falcon] [refs/heads/develop] - convert more binding expressions into simple bindings

Repository: flex-falcon
Updated Branches:
  refs/heads/develop 73fd82c7c -> 09b76c2f6


convert more binding expressions into simple bindings


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

Branch: refs/heads/develop
Commit: 09b76c2f6ec052445c217b5324662996c472d34b
Parents: 73fd82c
Author: Alex Harui <ah...@apache.org>
Authored: Sat Oct 8 22:28:02 2016 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Sat Oct 8 22:28:02 2016 -0700

----------------------------------------------------------------------
 .../codegen/databinding/BindingInfo.java        | 43 ++++++++++++++++++++
 .../databinding/MXMLBindingDirectiveHelper.java |  2 +-
 2 files changed, 44 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/09b76c2f/compiler/src/main/java/org/apache/flex/compiler/internal/codegen/databinding/BindingInfo.java
----------------------------------------------------------------------
diff --git a/compiler/src/main/java/org/apache/flex/compiler/internal/codegen/databinding/BindingInfo.java b/compiler/src/main/java/org/apache/flex/compiler/internal/codegen/databinding/BindingInfo.java
index 087c178..04ef899 100644
--- a/compiler/src/main/java/org/apache/flex/compiler/internal/codegen/databinding/BindingInfo.java
+++ b/compiler/src/main/java/org/apache/flex/compiler/internal/codegen/databinding/BindingInfo.java
@@ -24,6 +24,7 @@ import java.util.List;
 
 
 import org.apache.flex.compiler.common.DependencyType;
+import org.apache.flex.compiler.definitions.IAccessorDefinition;
 import org.apache.flex.compiler.definitions.IConstantDefinition;
 import org.apache.flex.compiler.definitions.IDefinition;
 import org.apache.flex.compiler.definitions.IVariableDefinition;
@@ -36,10 +37,12 @@ import org.apache.flex.compiler.internal.definitions.ClassDefinition;
 import org.apache.flex.compiler.internal.definitions.NamespaceDefinition;
 import org.apache.flex.compiler.internal.scopes.ASScope;
 import org.apache.flex.compiler.internal.scopes.TypeScope;
+import org.apache.flex.compiler.internal.tree.as.MemberAccessExpressionNode;
 import org.apache.flex.compiler.internal.tree.as.NodeBase;
 import org.apache.flex.compiler.projects.ICompilerProject;
 import org.apache.flex.compiler.tree.as.IASNode;
 import org.apache.flex.compiler.tree.as.IExpressionNode;
+import org.apache.flex.compiler.tree.as.IFunctionCallNode;
 import org.apache.flex.compiler.tree.as.IIdentifierNode;
 import org.apache.flex.compiler.tree.as.IMemberAccessExpressionNode;
 import org.apache.flex.compiler.tree.mxml.IMXMLBindingAttributeNode;
@@ -478,5 +481,45 @@ public class BindingInfo implements Comparable<BindingInfo>
                     }
             }
         }
+        else if (expressionNodeForGetter instanceof MemberAccessExpressionNode)
+        {
+        	MemberAccessExpressionNode mae = (MemberAccessExpressionNode)expressionNodeForGetter;
+            IDefinition def = mae.resolve(project);
+            if (def.isPublic() && 
+            		(def instanceof IAccessorDefinition ||
+            		 def instanceof IConstantDefinition ||
+            		 def instanceof IVariableDefinition))
+            {
+            	IExpressionNode leftSide = mae.getLeftOperandNode();
+            	if (leftSide instanceof IIdentifierNode)
+            	{
+            		IDefinition leftDef = leftSide.resolve(project);
+		        	if (leftDef.isPublic())
+		        	{
+		        		sourceString = leftDef.getBaseName() + "." + def.getBaseName();
+		                isSimplePublicProperty = true;            		
+		        	}
+            	}
+            	else if (leftSide instanceof IFunctionCallNode)
+            	{
+            		IFunctionCallNode fun = (IFunctionCallNode)leftSide;
+        			IExpressionNode[] args = fun.getArgumentNodes();
+        			if (args.length == 1)
+        			{
+        				IExpressionNode arg = args[0];
+        				if (arg instanceof IIdentifierNode)
+        				{
+        					IDefinition argDef = arg.resolve(project);
+        					if (argDef.isPublic())
+        					{
+        		        		sourceString = argDef.getBaseName() + "." + def.getBaseName();
+        		                isSimplePublicProperty = true;            		
+        					}
+        				}
+        			}
+            	}
+            }
+        }
+
     }
 }

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/09b76c2f/compiler/src/main/java/org/apache/flex/compiler/internal/codegen/databinding/MXMLBindingDirectiveHelper.java
----------------------------------------------------------------------
diff --git a/compiler/src/main/java/org/apache/flex/compiler/internal/codegen/databinding/MXMLBindingDirectiveHelper.java b/compiler/src/main/java/org/apache/flex/compiler/internal/codegen/databinding/MXMLBindingDirectiveHelper.java
index b023ba3..2551260 100644
--- a/compiler/src/main/java/org/apache/flex/compiler/internal/codegen/databinding/MXMLBindingDirectiveHelper.java
+++ b/compiler/src/main/java/org/apache/flex/compiler/internal/codegen/databinding/MXMLBindingDirectiveHelper.java
@@ -164,7 +164,7 @@ public class MXMLBindingDirectiveHelper
         }
         else
         {
-            if (host.getProject().isFlex())
+            if (host.getProject().resolveQNameToDefinition(host.getProject().getBindingManagerClass()) != null)
             {
                 makeSpecialMemberVariablesForBinding();
                 isFlexSDK = true;