You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by cd...@apache.org on 2016/04/14 09:46:37 UTC
[08/18] git commit: [flex-falcon]
[refs/heads/feature/maven-migration-test] - FLEX-35071 some XML method names
resolve against instance methods and add an extra 'this'
FLEX-35071 some XML method names resolve against instance methods and add an extra 'this'
Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/fd872052
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/fd872052
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/fd872052
Branch: refs/heads/feature/maven-migration-test
Commit: fd872052619305dcb4498eef5207f2b36c595d64
Parents: 0b74b6a
Author: Alex Harui <ah...@apache.org>
Authored: Wed Apr 13 09:40:00 2016 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Wed Apr 13 09:40:00 2016 -0700
----------------------------------------------------------------------
.../internal/codegen/js/flexjs/TestFlexJSGlobalClasses.java | 2 +-
.../flex/compiler/internal/codegen/js/JSSessionModel.java | 2 ++
.../compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java | 2 ++
.../flex/compiler/internal/codegen/js/utils/EmitterUtils.java | 6 ++++++
4 files changed, 11 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/fd872052/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSGlobalClasses.java
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSGlobalClasses.java b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSGlobalClasses.java
index de10f74..ba03b6d 100644
--- a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSGlobalClasses.java
+++ b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSGlobalClasses.java
@@ -527,7 +527,7 @@ public class TestFlexJSGlobalClasses extends TestGoogGlobalClasses
@Test
public void testXMLFilterWithAttribute()
{
- IBinaryOperatorNode node = getBinaryNode("var a:XMLList; a = a.(attribute('name').length());");
+ IBinaryOperatorNode node = (IBinaryOperatorNode)getNode("private var attribute:Function; private function test() {var a:XMLList; a = a.(attribute('name').length())};", IBinaryOperatorNode.class, WRAP_LEVEL_CLASS);
asBlockWalker.visitBinaryOperator(node);
assertOut("a = a.filter(function(node){return (node.attribute('name').length())})");
}
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/fd872052/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSSessionModel.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSSessionModel.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSSessionModel.java
index 5c45227..acd8232 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSSessionModel.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSSessionModel.java
@@ -60,6 +60,8 @@ public class JSSessionModel
}
private Stack<Context> stack = new Stack<Context>();
+ public boolean inE4xFilter = false;
+
private LinkedHashMap<String, PropertyNodes> propertyMap = new LinkedHashMap<String, PropertyNodes>();
private List<String> interfacePropertyMap = new ArrayList<String>();
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/fd872052/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
index 99114b3..c954e2c 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java
@@ -658,6 +658,7 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
@Override
public void emitE4XFilter(IMemberAccessExpressionNode node)
{
+ getModel().inE4xFilter = true;
getWalker().walk(node.getLeftOperandNode());
write(".filter(function(node){return (node.");
String s = stringifyNode(node.getRightOperandNode());
@@ -665,6 +666,7 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
s = s.substring(1, s.length() - 1);
write(s);
write(")})");
+ getModel().inE4xFilter = false;
}
@Override
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/fd872052/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/utils/EmitterUtils.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/utils/EmitterUtils.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/utils/EmitterUtils.java
index ebe21ee..eb09a06 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/utils/EmitterUtils.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/utils/EmitterUtils.java
@@ -345,6 +345,12 @@ public class EmitterUtils
}
else
{
+ if (parentNodeId == ASTNodeID.FunctionCallID && model.inE4xFilter)
+ {
+ // instance methods must be qualified with 'this'?
+ // or maybe we need to test if identifier exists on XML/XMLList
+ return false;
+ }
if (nodeDef != null && !nodeDef.isInternal()
&& isClassMember(project, nodeDef, classNode))
{