You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by er...@apache.org on 2013/04/09 14:37:33 UTC
git commit: Minor code cleanup
Updated Branches:
refs/heads/develop 612357a52 -> a86993ea4
Minor code cleanup
- cleaned up the emitting of "goog.bind" and accessors
- cleaned up the emitting of "goog.provide" and "goog.require"
Signed-off-by: Erik de Bruin <er...@ixsoftware.nl>
Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/a86993ea
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/a86993ea
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/a86993ea
Branch: refs/heads/develop
Commit: a86993ea4e4da4b928689aaf3a57b10ba8b54721
Parents: 612357a
Author: Erik de Bruin <er...@ixsoftware.nl>
Authored: Tue Apr 9 14:36:46 2013 +0200
Committer: Erik de Bruin <er...@ixsoftware.nl>
Committed: Tue Apr 9 14:36:46 2013 +0200
----------------------------------------------------------------------
.../codegen/js/flexjs/JSFlexJSEmitter.java | 36 ++++--
.../codegen/js/goog/JSGoogEmitterTokens.java | 1 +
.../codegen/mxml/flexjs/MXMLFlexJSEmitter.java | 85 +++++++++------
3 files changed, 75 insertions(+), 47 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/a86993ea/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 0c711ce..a3914f2 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
@@ -285,8 +285,8 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
boolean emitName = true;
// FIXME (erikdebruin) I desperately needed a way to bypass the addition
- // of the 'self' prefix when running the tests... Or
- // I'd have to put the prefix in ~150 asserts!
+ // of the 'self' prefix when running the tests... Or
+ // I'd have to put the prefix in ~150 asserts!
boolean isRunningInTestMode = cnode != null
&& cnode.getQualifiedName().equalsIgnoreCase("A");
@@ -296,7 +296,8 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
if (useGoogBind)
{
- write("goog.bind(");
+ write(JSGoogEmitterTokens.GOOG_BIND);
+ write(ASEmitterTokens.PAREN_OPEN);
}
if (writeThis)
@@ -308,7 +309,10 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
if (useGoogBind)
{
write(node.getName());
- write(", self)");
+
+ writeToken(ASEmitterTokens.COMMA);
+ write(JSGoogEmitterTokens.SELF);
+ write(ASEmitterTokens.PAREN_CLOSE);
emitName = false;
}
@@ -323,7 +327,7 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
&& (pnode.equals(anode.getChild(0)) || node.equals(anode
.getChild(0)));
- write((anode != null && isLeftSide) ? "set_" : "get_");
+ writeGetSetPrefix(!(anode != null && isLeftSide));
write(node.getName());
write(ASEmitterTokens.PAREN_OPEN);
@@ -399,11 +403,9 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
{
writeToken(ASEmitterTokens.COMMA);
write(ASEmitterTokens.SINGLE_QUOTE);
- if (fnode.getNodeID() == ASTNodeID.GetterID)
- write("get_");
- else if (fnode.getNodeID() == ASTNodeID.SetterID)
- write("set_");
-
+ if (fnode.getNodeID() == ASTNodeID.GetterID
+ || fnode.getNodeID() == ASTNodeID.SetterID)
+ writeGetSetPrefix(fnode.getNodeID() == ASTNodeID.GetterID);
write(fnode.getName());
write(ASEmitterTokens.SINGLE_QUOTE);
}
@@ -446,7 +448,7 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
write(ASEmitterTokens.SEMICOLON);
}
}
-
+
@Override
public void emitBinaryOperator(IBinaryOperatorNode node)
{
@@ -536,7 +538,7 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
}
write(ASEmitterTokens.MEMBER_ACCESS);
- write((node instanceof IGetterNode) ? "get_" : "set_");
+ writeGetSetPrefix(node instanceof IGetterNode);
writeToken(node.getName());
writeToken(ASEmitterTokens.EQUAL);
write(ASEmitterTokens.FUNCTION);
@@ -544,4 +546,14 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
//writeNewline();
emitMethodScope(node.getScopedNode());
}
+
+ private void writeGetSetPrefix(boolean isGet)
+ {
+ if (isGet)
+ write(ASEmitterTokens.GET);
+ else
+ write(ASEmitterTokens.SET);
+ write("_");
+ }
+
}
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/a86993ea/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitterTokens.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitterTokens.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitterTokens.java
index d97fb46..5229395 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitterTokens.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitterTokens.java
@@ -7,6 +7,7 @@ public enum JSGoogEmitterTokens implements IEmitterTokens
AS3("__AS3__"),
GOOG_ARRAY_FOREACH("goog.array.forEach"),
GOOG_BASE("goog.base"),
+ GOOG_BIND("goog.bind"),
GOOG_INHERITS("goog.inherits"),
GOOG_PROVIDE("goog.provide"),
GOOG_REQUIRE("goog.require"),
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/a86993ea/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 f9effde..5db7405 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
@@ -95,14 +95,14 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
if (isMainFile)
{
- // fake a 'root' node, like 'mxmlContent'
+ // fake root node; the main file doesn't have 'mxmlContent' as root
MXMLDescriptorSpecifier fakeRoot = new MXMLDescriptorSpecifier();
fakeRoot.name = "mxmlContent";
descriptorTree.add(fakeRoot);
currentInstances.add(fakeRoot);
}
- // visit tags
+ // visit MXML
final int len = node.getChildCount();
for (int i = 0; i < len; i++)
{
@@ -110,29 +110,9 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
}
String cname = node.getFileNode().getName();
- emitHeaderDoc(cname, "provide");
-
- writeNewline();
- emitHeaderDoc(node.getBaseClassName(), "require");
- ArrayList<String> writtenInstances = new ArrayList<String>();
- for (MXMLDescriptorSpecifier instance : instances)
- {
- String name = instance.name;
- if (writtenInstances.indexOf(name) == -1)
- {
- emitHeaderDoc(name, "require");
- writtenInstances.add(name);
- }
- }
- for (String name : imports)
- {
- if (writtenInstances.indexOf(name) == -1)
- {
- emitHeaderDoc(name, "require");
- writtenInstances.add(name);
- }
- }
-
+
+ emitHeader(node);
+
writeNewline();
writeNewline("/**");
writeNewline(" * @constructor");
@@ -251,7 +231,6 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
}
}
- // top level is 'mxmlContent', skip it...
MXMLDescriptorSpecifier root = descriptorTree.get(0);
root.isTopNodeInMainFile = isMainFile;
@@ -560,21 +539,44 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
}
//--------------------------------------------------------------------------
- // Utils
+ // JS output
//--------------------------------------------------------------------------
- @Override
- protected void emitAttributeValue(IASNode node)
+ private void emitHeader(IMXMLDocumentNode node)
{
- IMXMLLiteralNode cnode = (IMXMLLiteralNode) node.getChild(0);
-
- if (cnode.getValue() != null)
- getMXMLWalker().walk((IASNode) cnode); // Literal
+ String cname = node.getFileNode().getName();
+
+ emitHeaderLine(cname, true);
+ writeNewline();
+ emitHeaderLine(node.getBaseClassName());
+ ArrayList<String> writtenInstances = new ArrayList<String>();
+ for (MXMLDescriptorSpecifier instance : instances)
+ {
+ String name = instance.name;
+ if (writtenInstances.indexOf(name) == -1)
+ {
+ emitHeaderLine(name);
+ writtenInstances.add(name);
+ }
+ }
+ for (String name : imports) // imports from fx:script tags
+ {
+ if (writtenInstances.indexOf(name) == -1)
+ {
+ emitHeaderLine(name);
+ writtenInstances.add(name);
+ }
+ }
+ }
+
+ private void emitHeaderLine(String qname)
+ {
+ emitHeaderLine(qname, false);
}
- private void emitHeaderDoc(String qname, String type)
+ private void emitHeaderLine(String qname, boolean isProvide)
{
- write((type == "provide") ? JSGoogEmitterTokens.GOOG_PROVIDE
+ write((isProvide) ? JSGoogEmitterTokens.GOOG_PROVIDE
: JSGoogEmitterTokens.GOOG_REQUIRE);
write(ASEmitterTokens.PAREN_OPEN);
write(ASEmitterTokens.SINGLE_QUOTE);
@@ -584,6 +586,19 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
writeNewline(ASEmitterTokens.SEMICOLON);
}
+ //--------------------------------------------------------------------------
+ // Utils
+ //--------------------------------------------------------------------------
+
+ @Override
+ protected void emitAttributeValue(IASNode node)
+ {
+ IMXMLLiteralNode cnode = (IMXMLLiteralNode) node.getChild(0);
+
+ if (cnode.getValue() != null)
+ getMXMLWalker().walk((IASNode) cnode); // Literal
+ }
+
private MXMLDescriptorSpecifier getCurrentDescriptor(String type)
{
MXMLDescriptorSpecifier currentDescriptor = null;