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 2014/11/10 19:05:47 UTC
[1/7] git commit: [flex-falcon] [refs/heads/develop] - fix asdoc
handling. It was being replicated to nodes without asdoc
Repository: flex-falcon
Updated Branches:
refs/heads/develop 3011d6373 -> f612a79f0
fix asdoc handling. It was being replicated to nodes without asdoc
Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/3cb2ae17
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/3cb2ae17
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/3cb2ae17
Branch: refs/heads/develop
Commit: 3cb2ae17e26ac0e86bbed0796aa2f1ef14f9d5c2
Parents: 3011d63
Author: Alex Harui <ah...@apache.org>
Authored: Wed Nov 5 08:29:18 2014 -0800
Committer: Alex Harui <ah...@apache.org>
Committed: Wed Nov 5 08:31:56 2014 -0800
----------------------------------------------------------------------
.../flex/compiler/internal/parsing/as/FlexJSASDocDelegate.java | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/3cb2ae17/compiler.jx/src/org/apache/flex/compiler/internal/parsing/as/FlexJSASDocDelegate.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/parsing/as/FlexJSASDocDelegate.java b/compiler.jx/src/org/apache/flex/compiler/internal/parsing/as/FlexJSASDocDelegate.java
index 9c45fa0..2558977 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/parsing/as/FlexJSASDocDelegate.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/parsing/as/FlexJSASDocDelegate.java
@@ -83,7 +83,9 @@ public final class FlexJSASDocDelegate implements IASDocDelegate
if (currentToken == null)
return null;
- return new ASDocComment(currentToken);
+ ASDocComment comment = new ASDocComment(currentToken);
+ currentToken = null;
+ return comment;
}
@Override
[3/7] git commit: [flex-falcon] [refs/heads/develop] - experiment
with not generating code for coercions in some cases
Posted by ah...@apache.org.
experiment with not generating code for coercions in some cases
Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/36c9111b
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/36c9111b
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/36c9111b
Branch: refs/heads/develop
Commit: 36c9111ba14f851d8a3176cbc202ebda6161f0fe
Parents: 3cb2ae1
Author: Alex Harui <ah...@apache.org>
Authored: Wed Nov 5 08:30:31 2014 -0800
Committer: Alex Harui <ah...@apache.org>
Committed: Wed Nov 5 08:31:57 2014 -0800
----------------------------------------------------------------------
.../codegen/js/flexjs/JSFlexJSEmitter.java | 40 +++++++++++++++++++-
.../js/flexjs/JSFlexJSEmitterTokens.java | 1 +
2 files changed, 40 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/36c9111b/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 d1bc8b0..8ffd837 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
@@ -28,6 +28,8 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
+import org.apache.flex.compiler.asdoc.IASDocComment;
+import org.apache.flex.compiler.asdoc.flexjs.ASDocComment;
import org.apache.flex.compiler.codegen.IASGlobalFunctionConstants;
import org.apache.flex.compiler.codegen.IDocEmitter;
import org.apache.flex.compiler.codegen.js.flexjs.IJSFlexJSEmitter;
@@ -1071,6 +1073,43 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
private void emitIsAs(IExpressionNode left, IExpressionNode right,
ASTNodeID id, boolean coercion)
{
+ IDefinition dnode = (right).resolve(project);
+ if (id != ASTNodeID.Op_IsID && dnode != null)
+ {
+ // find the function node
+ IFunctionNode functionNode = (IFunctionNode) left
+ .getAncestorOfType(IFunctionNode.class);
+ if (functionNode != null) // can be null in synthesized binding code
+ {
+ ASDocComment asDoc = (ASDocComment) functionNode.getASDocComment();
+ if (asDoc != null)
+ {
+ String asDocString = asDoc.commentNoEnd();
+ String ignoreToken = JSFlexJSEmitterTokens.IGNORE_COERCION.getToken();
+ boolean ignore = false;
+ int ignoreIndex = asDocString.indexOf(ignoreToken);
+ while (ignoreIndex != -1)
+ {
+ String ignorable = asDocString.substring(ignoreIndex + ignoreToken.length());
+ int endIndex = ignorable.indexOf("\n");
+ ignorable = ignorable.substring(0, endIndex);
+ ignorable = ignorable.trim();
+ String rightSide = dnode.getQualifiedName();
+ if (ignorable.equals(rightSide))
+ {
+ ignore = true;
+ break;
+ }
+ ignoreIndex = asDocString.indexOf(ignoreToken, ignoreIndex + ignoreToken.length());
+ }
+ if (ignore)
+ {
+ getWalker().walk(left);
+ return;
+ }
+ }
+ }
+ }
write(JSFlexJSEmitterTokens.LANGUAGE_QNAME);
write(ASEmitterTokens.MEMBER_ACCESS);
if (id == ASTNodeID.Op_IsID)
@@ -1081,7 +1120,6 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
getWalker().walk(left);
writeToken(ASEmitterTokens.COMMA);
- IDefinition dnode = (right).resolve(project);
if (dnode != null)
write(dnode.getQualifiedName());
else
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/36c9111b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitterTokens.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitterTokens.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitterTokens.java
index 77fd33e..4a28e74 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitterTokens.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitterTokens.java
@@ -34,6 +34,7 @@ public enum JSFlexJSEmitterTokens implements IEmitterTokens
NAMES("names"),
QNAME("qName"),
UNDERSCORE("_"),
+ IGNORE_COERCION("@flexjsignorecoercion"),
;
private String token;
[2/7] git commit: [flex-falcon] [refs/heads/develop] - handle binding
and object nodes
Posted by ah...@apache.org.
handle binding and object nodes
Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/5d2765d6
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/5d2765d6
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/5d2765d6
Branch: refs/heads/develop
Commit: 5d2765d6289042cb5f11555f612ee553c8ae3926
Parents: 36c9111
Author: Alex Harui <ah...@apache.org>
Authored: Wed Nov 5 08:31:19 2014 -0800
Committer: Alex Harui <ah...@apache.org>
Committed: Wed Nov 5 08:31:57 2014 -0800
----------------------------------------------------------------------
.../compiler/codegen/mxml/IMXMLEmitter.java | 3 +
.../internal/codegen/mxml/MXMLBlockWalker.java | 22 ++++++
.../internal/codegen/mxml/MXMLEmitter.java | 16 +++++
.../mxml/flexjs/MXMLDescriptorSpecifier.java | 6 ++
.../codegen/mxml/flexjs/MXMLFlexJSEmitter.java | 72 +++++++++++++++++---
.../internal/visitor/mxml/MXMLNodeSwitch.java | 11 ++-
.../visitor/mxml/IMXMLBlockVisitor.java | 9 +++
7 files changed, 127 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/5d2765d6/compiler.jx/src/org/apache/flex/compiler/codegen/mxml/IMXMLEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/codegen/mxml/IMXMLEmitter.java b/compiler.jx/src/org/apache/flex/compiler/codegen/mxml/IMXMLEmitter.java
index fe4c771..3d6b288 100644
--- a/compiler.jx/src/org/apache/flex/compiler/codegen/mxml/IMXMLEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/codegen/mxml/IMXMLEmitter.java
@@ -37,6 +37,7 @@ import org.apache.flex.compiler.tree.mxml.IMXMLIntNode;
import org.apache.flex.compiler.tree.mxml.IMXMLLiteralNode;
import org.apache.flex.compiler.tree.mxml.IMXMLMetadataNode;
import org.apache.flex.compiler.tree.mxml.IMXMLNumberNode;
+import org.apache.flex.compiler.tree.mxml.IMXMLObjectNode;
import org.apache.flex.compiler.tree.mxml.IMXMLPropertySpecifierNode;
import org.apache.flex.compiler.tree.mxml.IMXMLScriptNode;
import org.apache.flex.compiler.tree.mxml.IMXMLStringNode;
@@ -92,6 +93,8 @@ public interface IMXMLEmitter extends IEmitter
void emitNumber(IMXMLNumberNode node);
+ void emitObject(IMXMLObjectNode node);
+
void emitString(IMXMLStringNode node);
void emitUint(IMXMLUintNode node);
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/5d2765d6/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/MXMLBlockWalker.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/MXMLBlockWalker.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/MXMLBlockWalker.java
index a6cbb95..ed518de 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/MXMLBlockWalker.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/MXMLBlockWalker.java
@@ -31,6 +31,7 @@ import org.apache.flex.compiler.projects.IASProject;
import org.apache.flex.compiler.tree.as.IASNode;
import org.apache.flex.compiler.tree.as.IFileNode;
import org.apache.flex.compiler.tree.mxml.IMXMLArrayNode;
+import org.apache.flex.compiler.tree.mxml.IMXMLBindingNode;
import org.apache.flex.compiler.tree.mxml.IMXMLBooleanNode;
import org.apache.flex.compiler.tree.mxml.IMXMLClassDefinitionNode;
import org.apache.flex.compiler.tree.mxml.IMXMLComponentNode;
@@ -49,6 +50,7 @@ import org.apache.flex.compiler.tree.mxml.IMXMLLiteralNode;
import org.apache.flex.compiler.tree.mxml.IMXMLMetadataNode;
import org.apache.flex.compiler.tree.mxml.IMXMLNode;
import org.apache.flex.compiler.tree.mxml.IMXMLNumberNode;
+import org.apache.flex.compiler.tree.mxml.IMXMLObjectNode;
import org.apache.flex.compiler.tree.mxml.IMXMLPropertySpecifierNode;
import org.apache.flex.compiler.tree.mxml.IMXMLScriptNode;
import org.apache.flex.compiler.tree.mxml.IMXMLStringNode;
@@ -418,6 +420,26 @@ public class MXMLBlockWalker implements IMXMLBlockVisitor, IMXMLBlockWalker
}
//--------------------------------------------------------------------------
+
+ @Override
+ public void visitBinding(IMXMLBindingNode node)
+ {
+ debug("visitBinding()");
+
+ System.out.println("skipping fx:Binding in " + node.getSourcePath() + ". This node should be encoded in the binding data.");
+ }
+
+ //--------------------------------------------------------------------------
+
+ @Override
+ public void visitObject(IMXMLObjectNode node)
+ {
+ debug("visitObject()");
+
+ mxmlEmitter.emitObject(node);
+ }
+
+ //--------------------------------------------------------------------------
protected void debug(String message)
{
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/5d2765d6/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/MXMLEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/MXMLEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/MXMLEmitter.java
index ea4f4d0..fcf2597 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/MXMLEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/MXMLEmitter.java
@@ -46,6 +46,7 @@ import org.apache.flex.compiler.tree.mxml.IMXMLLiteralNode;
import org.apache.flex.compiler.tree.mxml.IMXMLMetadataNode;
import org.apache.flex.compiler.tree.mxml.IMXMLNode;
import org.apache.flex.compiler.tree.mxml.IMXMLNumberNode;
+import org.apache.flex.compiler.tree.mxml.IMXMLObjectNode;
import org.apache.flex.compiler.tree.mxml.IMXMLPropertySpecifierNode;
import org.apache.flex.compiler.tree.mxml.IMXMLScriptNode;
import org.apache.flex.compiler.tree.mxml.IMXMLStringNode;
@@ -240,6 +241,21 @@ public class MXMLEmitter extends Emitter implements IMXMLEmitter
//--------------------------------------------------------------------------
@Override
+ public void emitObject(IMXMLObjectNode node)
+ {
+ final int len = node.getChildCount();
+ for (int i = 0; i < len; i++)
+ {
+ IASNode child = node.getChild(i);
+
+ getMXMLWalker().walk(child);
+
+ if (child instanceof IMXMLInstanceNode && i < len - 1)
+ writeNewline();
+ }
+ }
+
+ @Override
public void emitArray(IMXMLArrayNode node)
{
final int len = node.getChildCount();
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/5d2765d6/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLDescriptorSpecifier.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLDescriptorSpecifier.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLDescriptorSpecifier.java
index d70ac27..ca24ac9 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLDescriptorSpecifier.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLDescriptorSpecifier.java
@@ -76,6 +76,12 @@ public class MXMLDescriptorSpecifier extends MXMLNodeSpecifier
public boolean hasArray;
//---------------------------------
+ // hasObject
+ //---------------------------------
+
+ public boolean hasObject;
+
+ //---------------------------------
// id
//---------------------------------
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/5d2765d6/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
index 5956a7b..e76e0c1 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
@@ -70,6 +70,7 @@ import org.apache.flex.compiler.tree.mxml.IMXMLFactoryNode;
import org.apache.flex.compiler.tree.mxml.IMXMLInstanceNode;
import org.apache.flex.compiler.tree.mxml.IMXMLLiteralNode;
import org.apache.flex.compiler.tree.mxml.IMXMLNode;
+import org.apache.flex.compiler.tree.mxml.IMXMLObjectNode;
import org.apache.flex.compiler.tree.mxml.IMXMLPropertySpecifierNode;
import org.apache.flex.compiler.tree.mxml.IMXMLScriptNode;
import org.apache.flex.compiler.tree.mxml.IMXMLSpecifierNode;
@@ -101,6 +102,7 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
private boolean inMXMLContent;
private boolean inStatesOverride;
+ private boolean makingSimpleArray;
private StringBuilder subDocuments = new StringBuilder();
private ArrayList<String> subDocumentNames = new ArrayList<String>();
@@ -462,7 +464,11 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
writeNewline(ASEmitterTokens.NULL.getToken() + ASEmitterTokens.COMMA.getToken());
s = bi.getDestinationString();
- if (s.contains("."))
+ if (s == null)
+ {
+ writeNewline(ASEmitterTokens.NULL.getToken() + ASEmitterTokens.COMMA.getToken());
+ }
+ else if (s.contains("."))
{
String[] parts = s.split("\\.");
write(ASEmitterTokens.SQUARE_OPEN.getToken() + ASEmitterTokens.DOUBLE_QUOTE.getToken() +
@@ -480,10 +486,13 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
ASEmitterTokens.DOUBLE_QUOTE.getToken() + ASEmitterTokens.COMMA.getToken());
}
Set<Entry<Object, WatcherInfoBase>> watcherChains = bindingDataBase.getWatcherChains();
- for (Entry<Object, WatcherInfoBase> entry : watcherChains)
+ if (watcherChains != null)
{
- WatcherInfoBase watcherInfoBase = entry.getValue();
- encodeWatcher(watcherInfoBase);
+ for (Entry<Object, WatcherInfoBase> entry : watcherChains)
+ {
+ WatcherInfoBase watcherInfoBase = entry.getValue();
+ encodeWatcher(watcherInfoBase);
+ }
}
// add a trailing null for now so I don't have to have logic where the watcher figures out not to add
// a comma
@@ -1322,15 +1331,17 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
propertiesTree.propertySpecifiers.add(currentPropertySpecifier);
}
- boolean bypass = cnode != null && cnode instanceof IMXMLArrayNode;
+ boolean valueIsArray = cnode != null && cnode instanceof IMXMLArrayNode;
+ boolean valueIsObject = cnode != null && cnode instanceof IMXMLObjectNode;
- currentPropertySpecifier.hasArray = bypass;
+ currentPropertySpecifier.hasArray = valueIsArray;
+ currentPropertySpecifier.hasObject = valueIsObject;
- moveDown(bypass, null, currentPropertySpecifier);
+ moveDown(valueIsArray || valueIsObject, null, currentPropertySpecifier);
getMXMLWalker().walk(cnode); // Array or Instance
- moveUp(bypass, false);
+ moveUp(valueIsArray || valueIsObject, false);
inMXMLContent = oldInMXMLContent;
}
@@ -1384,15 +1395,57 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
//--------------------------------------------------------------------------
@Override
+ public void emitObject(IMXMLObjectNode node)
+ {
+ final int len = node.getChildCount();
+ if (!makingSimpleArray)
+ {
+ for (int i = 0; i < len; i++)
+ {
+ getMXMLWalker().walk(node.getChild(i)); // props in object
+ }
+ }
+ else
+ {
+ MXMLDescriptorSpecifier ps = getCurrentDescriptor("ps");
+ ps.value = "{";
+ for (int i = 0; i < len; i++)
+ {
+ IMXMLPropertySpecifierNode propName = (IMXMLPropertySpecifierNode)node.getChild(i);
+ ps.value += propName.getName() + ": ";
+ getMXMLWalker().walk(propName.getChild(0));
+ if (i < len - 1)
+ ps.value += ", ";
+ }
+ ps.value += "}";
+ }
+ }
+
+ @Override
public void emitArray(IMXMLArrayNode node)
{
moveDown(false, null, null);
+ boolean isSimple = true;
final int len = node.getChildCount();
for (int i = 0; i < len; i++)
{
+ final IASNode child = node.getChild(i);
+ ASTNodeID nodeID = child.getNodeID();
+ if (nodeID == ASTNodeID.MXMLArrayID || nodeID == ASTNodeID.MXMLInstanceID)
+ {
+ isSimple = false;
+ break;
+ }
+ }
+ boolean oldMakingSimpleArray = makingSimpleArray;
+ if (isSimple)
+ makingSimpleArray = true;
+ for (int i = 0; i < len; i++)
+ {
getMXMLWalker().walk(node.getChild(i)); // Instance
}
+ makingSimpleArray = oldMakingSimpleArray;
moveUp(false, false);
}
@@ -1411,7 +1464,8 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
public void emitLiteral(IMXMLLiteralNode node)
{
MXMLDescriptorSpecifier ps = getCurrentDescriptor("ps");
- ps.value = "";
+ if (ps.value == null) // might be non-null if makingSimpleArray
+ ps.value = "";
if (ps.valueNeedsQuotes)
ps.value += ASEmitterTokens.SINGLE_QUOTE.getToken();
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/5d2765d6/compiler.jx/src/org/apache/flex/compiler/internal/visitor/mxml/MXMLNodeSwitch.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/visitor/mxml/MXMLNodeSwitch.java b/compiler.jx/src/org/apache/flex/compiler/internal/visitor/mxml/MXMLNodeSwitch.java
index 1c17717..9576e24 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/visitor/mxml/MXMLNodeSwitch.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/visitor/mxml/MXMLNodeSwitch.java
@@ -21,6 +21,7 @@ package org.apache.flex.compiler.internal.visitor.mxml;
import org.apache.flex.compiler.tree.as.IASNode;
import org.apache.flex.compiler.tree.mxml.IMXMLArrayNode;
+import org.apache.flex.compiler.tree.mxml.IMXMLBindingNode;
import org.apache.flex.compiler.tree.mxml.IMXMLBooleanNode;
import org.apache.flex.compiler.tree.mxml.IMXMLComponentNode;
import org.apache.flex.compiler.tree.mxml.IMXMLDataBindingNode;
@@ -37,6 +38,7 @@ import org.apache.flex.compiler.tree.mxml.IMXMLIntNode;
import org.apache.flex.compiler.tree.mxml.IMXMLLiteralNode;
import org.apache.flex.compiler.tree.mxml.IMXMLMetadataNode;
import org.apache.flex.compiler.tree.mxml.IMXMLNumberNode;
+import org.apache.flex.compiler.tree.mxml.IMXMLObjectNode;
import org.apache.flex.compiler.tree.mxml.IMXMLPropertySpecifierNode;
import org.apache.flex.compiler.tree.mxml.IMXMLScriptNode;
import org.apache.flex.compiler.tree.mxml.IMXMLStringNode;
@@ -141,9 +143,13 @@ public class MXMLNodeSwitch implements IASNodeStrategy
case MXMLDataBindingID:
visitor.visitDatabinding((IMXMLDataBindingNode) node);
break;
-
- case MXMLApplicationID:
case MXMLBindingID:
+ visitor.visitBinding((IMXMLBindingNode) node);
+ break;
+ case MXMLObjectID:
+ visitor.visitObject((IMXMLObjectNode) node);
+ break;
+ case MXMLApplicationID:
case MXMLBindingAttributeID:
case MXMLClassID:
case MXMLClassDefinitionID:
@@ -160,7 +166,6 @@ public class MXMLNodeSwitch implements IASNodeStrategy
case MXMLModelID:
case MXMLModelPropertyID:
case MXMLModelRootID:
- case MXMLObjectID:
case MXMLPrivateID:
case MXMLRegExpID:
case MXMLRemoteObjectID:
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/5d2765d6/compiler.jx/src/org/apache/flex/compiler/visitor/mxml/IMXMLBlockVisitor.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/visitor/mxml/IMXMLBlockVisitor.java b/compiler.jx/src/org/apache/flex/compiler/visitor/mxml/IMXMLBlockVisitor.java
index ab2b537..d6c45a8 100644
--- a/compiler.jx/src/org/apache/flex/compiler/visitor/mxml/IMXMLBlockVisitor.java
+++ b/compiler.jx/src/org/apache/flex/compiler/visitor/mxml/IMXMLBlockVisitor.java
@@ -20,6 +20,7 @@
package org.apache.flex.compiler.visitor.mxml;
import org.apache.flex.compiler.tree.mxml.IMXMLArrayNode;
+import org.apache.flex.compiler.tree.mxml.IMXMLBindingNode;
import org.apache.flex.compiler.tree.mxml.IMXMLBooleanNode;
import org.apache.flex.compiler.tree.mxml.IMXMLClassDefinitionNode;
import org.apache.flex.compiler.tree.mxml.IMXMLComponentNode;
@@ -37,6 +38,7 @@ import org.apache.flex.compiler.tree.mxml.IMXMLIntNode;
import org.apache.flex.compiler.tree.mxml.IMXMLLiteralNode;
import org.apache.flex.compiler.tree.mxml.IMXMLMetadataNode;
import org.apache.flex.compiler.tree.mxml.IMXMLNumberNode;
+import org.apache.flex.compiler.tree.mxml.IMXMLObjectNode;
import org.apache.flex.compiler.tree.mxml.IMXMLPropertySpecifierNode;
import org.apache.flex.compiler.tree.mxml.IMXMLScriptNode;
import org.apache.flex.compiler.tree.mxml.IMXMLStringNode;
@@ -126,4 +128,11 @@ public interface IMXMLBlockVisitor extends IBlockVisitor
void visitDatabinding(IMXMLDataBindingNode node);
+ //--------------------------------------------------------------------------
+
+ void visitBinding(IMXMLBindingNode node);
+
+ //--------------------------------------------------------------------------
+
+ void visitObject(IMXMLObjectNode node);
}
[4/7] git commit: [flex-falcon] [refs/heads/develop] - don't generate
code for 'as' and coercions or some imports that are only used for satisfying
the AS compiler and not needed in JS
Posted by ah...@apache.org.
don't generate code for 'as' and coercions or some imports that are only used for satisfying the AS compiler and not needed in JS
Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/f3713dde
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/f3713dde
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/f3713dde
Branch: refs/heads/develop
Commit: f3713dde8881abb0de30be3f2f6810fcbc457a1a
Parents: 5d2765d
Author: Alex Harui <ah...@apache.org>
Authored: Thu Nov 6 13:40:15 2014 -0800
Committer: Alex Harui <ah...@apache.org>
Committed: Thu Nov 6 13:40:15 2014 -0800
----------------------------------------------------------------------
.../codegen/js/flexjs/JSFlexJSEmitter.java | 57 +++++++++++++++-----
.../js/flexjs/JSFlexJSEmitterTokens.java | 1 +
2 files changed, 45 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/f3713dde/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 8ffd837..758bacd 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
@@ -59,6 +59,7 @@ import org.apache.flex.compiler.internal.scopes.PackageScope;
import org.apache.flex.compiler.internal.scopes.TypeScope;
import org.apache.flex.compiler.internal.tree.as.BinaryOperatorAssignmentNode;
import org.apache.flex.compiler.internal.tree.as.ChainedVariableNode;
+import org.apache.flex.compiler.internal.tree.as.ClassNode;
import org.apache.flex.compiler.internal.tree.as.FunctionCallNode;
import org.apache.flex.compiler.internal.tree.as.FunctionNode;
import org.apache.flex.compiler.internal.tree.as.ParameterNode;
@@ -1297,11 +1298,39 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
{
PackageScope containedScope = (PackageScope) definition
.getContainedScope();
+
+ ArrayList<String> writtenRequires = new ArrayList<String>();
ITypeDefinition type = findType(containedScope.getAllLocalDefinitions());
if (type == null)
return;
+ ITypeNode typeNode = type.getNode();
+ if (typeNode instanceof ClassNode)
+ {
+ ClassNode classNode = (ClassNode) typeNode;
+ if (classNode != null)
+ {
+ ASDocComment asDoc = (ASDocComment) classNode.getASDocComment();
+ if (asDoc != null)
+ {
+ String asDocString = asDoc.commentNoEnd();
+ String ignoreToken = JSFlexJSEmitterTokens.IGNORE_IMPORT.getToken();
+ int ignoreIndex = asDocString.indexOf(ignoreToken);
+ while (ignoreIndex != -1)
+ {
+ String ignorable = asDocString.substring(ignoreIndex + ignoreToken.length());
+ int endIndex = ignorable.indexOf("\n");
+ ignorable = ignorable.substring(0, endIndex);
+ ignorable = ignorable.trim();
+ // pretend we've already written the goog.requires for this
+ writtenRequires.add(ignorable);
+ ignoreIndex = asDocString.indexOf(ignoreToken, ignoreIndex + ignoreToken.length());
+ }
+ }
+ }
+ }
+
if (project == null)
project = getWalker().getProject();
@@ -1313,8 +1342,7 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
ArrayList<String> interfacesList = flexProject.getInterfaces(cu);
String cname = type.getQualifiedName();
- ArrayList<String> writtenInstances = new ArrayList<String>();
- writtenInstances.add(cname); // make sure we don't add ourselves
+ writtenRequires.add(cname); // make sure we don't add ourselves
boolean emitsRequires = false;
if (requiresList != null)
@@ -1330,7 +1358,7 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
if (NativeUtils.isNative(imp))
continue;
- if (writtenInstances.indexOf(imp) == -1)
+ if (writtenRequires.indexOf(imp) == -1)
{
/* goog.require('x');\n */
@@ -1342,7 +1370,7 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
write(ASEmitterTokens.PAREN_CLOSE);
writeNewline(ASEmitterTokens.SEMICOLON);
- writtenInstances.add(imp);
+ writtenRequires.add(imp);
emitsRequires = true;
}
@@ -1354,15 +1382,18 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
{
for (String imp : interfacesList)
{
- write(JSGoogEmitterTokens.GOOG_REQUIRE);
- write(ASEmitterTokens.PAREN_OPEN);
- write(ASEmitterTokens.SINGLE_QUOTE);
- write(imp);
- write(ASEmitterTokens.SINGLE_QUOTE);
- write(ASEmitterTokens.PAREN_CLOSE);
- writeNewline(ASEmitterTokens.SEMICOLON);
-
- emitsInterfaces = true;
+ if (writtenRequires.indexOf(imp) == -1)
+ {
+ write(JSGoogEmitterTokens.GOOG_REQUIRE);
+ write(ASEmitterTokens.PAREN_OPEN);
+ write(ASEmitterTokens.SINGLE_QUOTE);
+ write(imp);
+ write(ASEmitterTokens.SINGLE_QUOTE);
+ write(ASEmitterTokens.PAREN_CLOSE);
+ writeNewline(ASEmitterTokens.SEMICOLON);
+
+ emitsInterfaces = true;
+ }
}
}
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/f3713dde/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitterTokens.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitterTokens.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitterTokens.java
index 4a28e74..62a6919 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitterTokens.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitterTokens.java
@@ -35,6 +35,7 @@ public enum JSFlexJSEmitterTokens implements IEmitterTokens
QNAME("qName"),
UNDERSCORE("_"),
IGNORE_COERCION("@flexjsignorecoercion"),
+ IGNORE_IMPORT("@flexjsignoreimport"),
;
private String token;
[6/7] git commit: [flex-falcon] [refs/heads/develop] - suppress more
as-only asdoc annotations and rename param and return to avoid duplicates
Posted by ah...@apache.org.
suppress more as-only asdoc annotations and rename param and return to avoid duplicates
Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/edb8bcb2
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/edb8bcb2
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/edb8bcb2
Branch: refs/heads/develop
Commit: edb8bcb2c989fbaed3dceffe4fc5503eae757e34
Parents: 2d9e423
Author: Alex Harui <ah...@apache.org>
Authored: Mon Nov 10 09:06:50 2014 -0800
Committer: Alex Harui <ah...@apache.org>
Committed: Mon Nov 10 09:06:50 2014 -0800
----------------------------------------------------------------------
.../codegen/js/flexjs/JSFlexJSDocEmitter.java | 24 ++++++++++++++------
.../utils/JSClosureCompilerWrapper.java | 4 +++-
2 files changed, 20 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/edb8bcb2/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSDocEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSDocEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSDocEmitter.java
index 6e3524b..044c2f7 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSDocEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSDocEmitter.java
@@ -63,7 +63,7 @@ public class JSFlexJSDocEmitter extends JSGoogDocEmitter
if (node.isConstructor())
{
if (asDoc != null && MXMLJSC.keepASDoc)
- write(asDoc.commentNoEnd());
+ write(changeAnnotations(asDoc.commentNoEnd()));
else
begin();
hasDoc = true;
@@ -98,7 +98,7 @@ public class JSFlexJSDocEmitter extends JSGoogDocEmitter
if (ns != null)
{
if (asDoc != null && MXMLJSC.keepASDoc)
- write(asDoc.commentNoEnd());
+ write(changeAnnotations(asDoc.commentNoEnd()));
else
begin();
emitMethodAccess(node);
@@ -113,7 +113,7 @@ public class JSFlexJSDocEmitter extends JSGoogDocEmitter
if (!hasDoc)
{
if (asDoc != null && MXMLJSC.keepASDoc)
- write(asDoc.commentNoEnd());
+ write(changeAnnotations(asDoc.commentNoEnd()));
else
begin();
emitMethodAccess(node);
@@ -140,7 +140,7 @@ public class JSFlexJSDocEmitter extends JSGoogDocEmitter
if (!hasDoc)
{
if (asDoc != null && MXMLJSC.keepASDoc)
- write(asDoc.commentNoEnd());
+ write(changeAnnotations(asDoc.commentNoEnd()));
else
begin();
emitMethodAccess(node);
@@ -166,7 +166,7 @@ public class JSFlexJSDocEmitter extends JSGoogDocEmitter
if (!hasDoc)
{
if (asDoc != null && MXMLJSC.keepASDoc)
- write(asDoc.commentNoEnd());
+ write(changeAnnotations(asDoc.commentNoEnd()));
else
begin();
emitMethodAccess(node);
@@ -182,6 +182,16 @@ public class JSFlexJSDocEmitter extends JSGoogDocEmitter
}
}
+ private String changeAnnotations(String doc)
+ {
+ // rename these tags so they don't conflict with generated
+ // jsdoc tags
+ String pass1 = doc.replaceAll("@param", "@asparam");
+ String pass2 = pass1.replaceAll("@return", "@asreturn");
+ String pass3 = pass2.replaceAll("@private", "@asprivate");
+ return pass3;
+ }
+
public void emitInterfaceMemberDoc(IDefinitionNode node, ICompilerProject project)
{
boolean hasDoc = false;
@@ -193,7 +203,7 @@ public class JSFlexJSDocEmitter extends JSGoogDocEmitter
&& returnType != ASEmitterTokens.VOID.getToken()) // has return
{
if (asDoc != null && MXMLJSC.keepASDoc)
- write(asDoc.commentNoEnd());
+ write(changeAnnotations(asDoc.commentNoEnd()));
else
begin();
hasDoc = true;
@@ -210,7 +220,7 @@ public class JSFlexJSDocEmitter extends JSGoogDocEmitter
if (!hasDoc)
{
if (asDoc != null && MXMLJSC.keepASDoc)
- write(asDoc.commentNoEnd());
+ write(changeAnnotations(asDoc.commentNoEnd()));
else
begin();
hasDoc = true;
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/edb8bcb2/compiler.jx/src/org/apache/flex/compiler/utils/JSClosureCompilerWrapper.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/utils/JSClosureCompilerWrapper.java b/compiler.jx/src/org/apache/flex/compiler/utils/JSClosureCompilerWrapper.java
index 5c5907e..6f3543d 100644
--- a/compiler.jx/src/org/apache/flex/compiler/utils/JSClosureCompilerWrapper.java
+++ b/compiler.jx/src/org/apache/flex/compiler/utils/JSClosureCompilerWrapper.java
@@ -134,7 +134,9 @@ public class JSClosureCompilerWrapper
WarningLevel.VERBOSE.setOptionsForWarningLevel(options_);
String[] asdocTags = new String[] {"productversion",
- "playerversion", "langversion", "copy"};
+ "playerversion", "langversion", "copy",
+ "asparam", "asreturn", "asprivate",
+ "flexjsignoreimport", "flexjsignorecoercion"};
options_.setExtraAnnotationNames(Arrays.asList(asdocTags));
}
[7/7] git commit: [flex-falcon] [refs/heads/develop] - fix unit tests
Posted by ah...@apache.org.
fix unit tests
Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/f612a79f
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/f612a79f
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/f612a79f
Branch: refs/heads/develop
Commit: f612a79f08eb63c8eb7fe182124a4f970beb1264
Parents: edb8bcb
Author: Alex Harui <ah...@apache.org>
Authored: Mon Nov 10 10:05:34 2014 -0800
Committer: Alex Harui <ah...@apache.org>
Committed: Mon Nov 10 10:05:34 2014 -0800
----------------------------------------------------------------------
.../flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitter.java | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/f612a79f/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 758bacd..efaae41 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
@@ -1074,7 +1074,8 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
private void emitIsAs(IExpressionNode left, IExpressionNode right,
ASTNodeID id, boolean coercion)
{
- IDefinition dnode = (right).resolve(project);
+ // project is null in unit tests
+ IDefinition dnode = project != null ? (right).resolve(project) : null;
if (id != ASTNodeID.Op_IsID && dnode != null)
{
// find the function node
[5/7] git commit: [flex-falcon] [refs/heads/develop] - override a few
more assumed types so FlexJS can use non-flash packages
Posted by ah...@apache.org.
override a few more assumed types so FlexJS can use non-flash packages
Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/2d9e4234
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/2d9e4234
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/2d9e4234
Branch: refs/heads/develop
Commit: 2d9e423432c43e3fa9ef2d954ef7120651cd7924
Parents: f3713dd
Author: Alex Harui <ah...@apache.org>
Authored: Thu Nov 6 22:17:10 2014 -0800
Committer: Alex Harui <ah...@apache.org>
Committed: Thu Nov 6 22:17:10 2014 -0800
----------------------------------------------------------------------
.../internal/as/codegen/BindableHelper.java | 2 ++
.../internal/definitions/ClassDefinition.java | 5 +++-
.../projects/FlexProjectConfigurator.java | 6 +++-
.../internal/units/ASCompilationUnit.java | 31 ++++++++++++++------
4 files changed, 33 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/2d9e4234/compiler/src/org/apache/flex/compiler/internal/as/codegen/BindableHelper.java
----------------------------------------------------------------------
diff --git a/compiler/src/org/apache/flex/compiler/internal/as/codegen/BindableHelper.java b/compiler/src/org/apache/flex/compiler/internal/as/codegen/BindableHelper.java
index 203a804..d88a105 100644
--- a/compiler/src/org/apache/flex/compiler/internal/as/codegen/BindableHelper.java
+++ b/compiler/src/org/apache/flex/compiler/internal/as/codegen/BindableHelper.java
@@ -576,5 +576,7 @@ public class BindableHelper
public static String PROPERTY_CHANGE = "propertyChange";
public static String BINDABLE = "Bindable";
+ public static String STRING_EVENT = "flash.events.Event";
+ public static String STRING_EVENT_DISPATCHER = "flash.events.EventDispatcher";
}
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/2d9e4234/compiler/src/org/apache/flex/compiler/internal/definitions/ClassDefinition.java
----------------------------------------------------------------------
diff --git a/compiler/src/org/apache/flex/compiler/internal/definitions/ClassDefinition.java b/compiler/src/org/apache/flex/compiler/internal/definitions/ClassDefinition.java
index 8f5ba4f..4b78e47 100644
--- a/compiler/src/org/apache/flex/compiler/internal/definitions/ClassDefinition.java
+++ b/compiler/src/org/apache/flex/compiler/internal/definitions/ClassDefinition.java
@@ -110,6 +110,9 @@ public class ClassDefinition extends ClassDefinitionBase implements IClassDefini
private static final String NO_REMOTE_CLASS_ALIAS = "";
private static final String HOST_COMPONENT = "hostComponent";
+
+ // this gets replaced in some projects
+ public static String Event = IASLanguageConstants.Event;
private static ClassDefinition makeImplicitClassDefinition(String name)
{
@@ -470,7 +473,7 @@ public class ClassDefinition extends ClassDefinitionBase implements IClassDefini
}
}
if (type == null)
- type = IASLanguageConstants.Event;
+ type = ClassDefinition.Event;
if (name != null)
{
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/2d9e4234/compiler/src/org/apache/flex/compiler/internal/projects/FlexProjectConfigurator.java
----------------------------------------------------------------------
diff --git a/compiler/src/org/apache/flex/compiler/internal/projects/FlexProjectConfigurator.java b/compiler/src/org/apache/flex/compiler/internal/projects/FlexProjectConfigurator.java
index 14b98cf..64e5ba5 100644
--- a/compiler/src/org/apache/flex/compiler/internal/projects/FlexProjectConfigurator.java
+++ b/compiler/src/org/apache/flex/compiler/internal/projects/FlexProjectConfigurator.java
@@ -30,6 +30,7 @@ import org.apache.flex.abc.semantics.Namespace;
import org.apache.flex.abc.semantics.Nsset;
import org.apache.flex.compiler.config.Configuration;
import org.apache.flex.compiler.internal.as.codegen.BindableHelper;
+import org.apache.flex.compiler.internal.definitions.ClassDefinition;
import org.apache.flex.compiler.mxml.IMXMLTypeConstants;
/**
@@ -180,18 +181,21 @@ public class FlexProjectConfigurator
if (configuration != null)
{
String configValue = configuration.getBindingEventHandlerEvent();
+ ClassDefinition.Event = configValue;
int dotIndex;
dotIndex = configValue.lastIndexOf(".");
String packageName = configValue.substring(0, dotIndex);
String className = configValue.substring(dotIndex + 1);
BindableHelper.NAME_EVENT = new Name(CONSTANT_Qname, new Nsset(new Namespace(CONSTANT_PackageNs, packageName)), className);
+ BindableHelper.STRING_EVENT = configValue;
configValue = configuration.getBindingEventHandlerClass();
dotIndex = configValue.lastIndexOf(".");
packageName = configValue.substring(0, dotIndex);
className = configValue.substring(dotIndex + 1);
BindableHelper.NAME_EVENT_DISPATCHER = new Name(CONSTANT_Qname, new Nsset(new Namespace(CONSTANT_PackageNs, packageName)), className);
-
+ BindableHelper.STRING_EVENT_DISPATCHER = configValue;
+
configValue = configuration.getBindingEventHandlerInterface();
dotIndex = configValue.lastIndexOf(".");
packageName = configValue.substring(0, dotIndex);
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/2d9e4234/compiler/src/org/apache/flex/compiler/internal/units/ASCompilationUnit.java
----------------------------------------------------------------------
diff --git a/compiler/src/org/apache/flex/compiler/internal/units/ASCompilationUnit.java b/compiler/src/org/apache/flex/compiler/internal/units/ASCompilationUnit.java
index 54cd6e0..090e714 100644
--- a/compiler/src/org/apache/flex/compiler/internal/units/ASCompilationUnit.java
+++ b/compiler/src/org/apache/flex/compiler/internal/units/ASCompilationUnit.java
@@ -33,6 +33,7 @@ import org.apache.flex.compiler.common.IMetaInfo;
import org.apache.flex.compiler.definitions.IDefinition;
import org.apache.flex.compiler.filespecs.FileSpecification;
import org.apache.flex.compiler.filespecs.IFileSpecification;
+import org.apache.flex.compiler.internal.as.codegen.BindableHelper;
import org.apache.flex.compiler.internal.as.codegen.CodeGeneratorManager;
import org.apache.flex.compiler.internal.parsing.as.ASParser;
import org.apache.flex.compiler.internal.parsing.as.ASToken;
@@ -44,6 +45,7 @@ import org.apache.flex.compiler.internal.scopes.ASFileScope;
import org.apache.flex.compiler.internal.semantics.PostProcessStep;
import org.apache.flex.compiler.internal.tree.as.BaseDefinitionNode;
import org.apache.flex.compiler.internal.tree.as.ClassNode;
+import org.apache.flex.compiler.internal.tree.as.ExpressionNodeBase;
import org.apache.flex.compiler.internal.tree.as.FileNode;
import org.apache.flex.compiler.internal.tree.as.FullNameNode;
import org.apache.flex.compiler.internal.tree.as.IdentifierNode;
@@ -387,16 +389,27 @@ public class ASCompilationUnit extends CompilationUnitBase
{
// bindable class extends Object, must switch to
// extend EventDispatcher
- IdentifierNode baseClassNode = new IdentifierNode("EventDispatcher");
+ String bindableBaseClassName = BindableHelper.STRING_EVENT_DISPATCHER;
+ String[] pieces = bindableBaseClassName.split("\\.");
+ int n = pieces.length;
+ IdentifierNode baseClassNode = new IdentifierNode(pieces[n - 1]); // "EventDispatcher"
baseClassNode.setParent(classNode);
classNode.setBaseClass(baseClassNode);
- IdentifierNode flash = new IdentifierNode("flash");
- IdentifierNode events = new IdentifierNode("events");
- FullNameNode flashDotEvents = new FullNameNode(flash,
- new ASToken(ASToken.TOKEN_OPERATOR_MEMBER_ACCESS, 0, 0, 0, 0, "."), events);
- FullNameNode fullNameNode = new FullNameNode(flashDotEvents,
- new ASToken(ASToken.TOKEN_OPERATOR_MEMBER_ACCESS, 0, 0, 0, 0, "."),
- baseClassNode);
+ ExpressionNodeBase lastNode = null;
+ for (int i = 0; i < n - 1; i++)
+ {
+ IdentifierNode part = new IdentifierNode(pieces[i]);
+ if (i > 0)
+ {
+ FullNameNode packageNode = new FullNameNode(lastNode,
+ new ASToken(ASToken.TOKEN_OPERATOR_MEMBER_ACCESS, 0, 0, 0, 0, "."), part);
+ lastNode = packageNode;
+ }
+ else
+ lastNode = part;
+ }
+ FullNameNode fullNameNode = new FullNameNode(lastNode,
+ new ASToken(ASToken.TOKEN_OPERATOR_MEMBER_ACCESS, 0, 0, 0, 0, "."), baseClassNode);
ImportNode importNode = new ImportNode(fullNameNode);
ScopedBlockNode sbn = (ScopedBlockNode)pkg.getChild(1);
sbn.addChild(importNode, 0);
@@ -416,7 +429,7 @@ public class ASCompilationUnit extends CompilationUnitBase
getProject().clearScopeCacheForCompilationUnit(this);
ast.runPostProcess(EnumSet.of(PostProcessStep.POPULATE_SCOPE));
if (isBindable)
- pkg.getASScope().addImport("flash.events.EventDispatcher");
+ pkg.getASScope().addImport(BindableHelper.STRING_EVENT_DISPATCHER);
}
final ImmutableSet<String> includedFiles = ast.getIncludeHandler().getIncludedFiles();
addScopeToProjectScope(new ASFileScope[] { ast.getFileScope() });