You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ms...@apache.org on 2015/05/31 21:08:28 UTC
[1/3] git commit: [flex-falcon] [refs/heads/develop] - Removed
getDoc() with getDocEmitter(), override with interface.
Repository: flex-falcon
Updated Branches:
refs/heads/develop b23da0525 -> c9535aa13
Removed getDoc() with getDocEmitter(), override with interface.
Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/a26406d7
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/a26406d7
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/a26406d7
Branch: refs/heads/develop
Commit: a26406d780c86c9b8dad62740a2ae815ad958e54
Parents: b23da05
Author: Michael Schmalle <ms...@apache.org>
Authored: Sun May 31 14:20:04 2015 -0400
Committer: Michael Schmalle <ms...@apache.org>
Committed: Sun May 31 14:20:04 2015 -0400
----------------------------------------------------------------------
.../codegen/js/flexjs/JSFlexJSEmitter.java | 7 +-
.../internal/codegen/js/goog/JSGoogEmitter.java | 23 +-
.../codegen/js/vf2js/JSVF2JSEmitter.java | 449 ++++++++++---------
3 files changed, 251 insertions(+), 228 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/a26406d7/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 5b8b1fe..d9b1c4e 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
@@ -21,8 +21,8 @@ package org.apache.flex.compiler.internal.codegen.js.flexjs;
import java.io.FilterWriter;
-import org.apache.flex.compiler.codegen.IDocEmitter;
import org.apache.flex.compiler.codegen.js.flexjs.IJSFlexJSEmitter;
+import org.apache.flex.compiler.codegen.js.goog.IJSGoogDocEmitter;
import org.apache.flex.compiler.common.ASModifier;
import org.apache.flex.compiler.common.IMetaInfo;
import org.apache.flex.compiler.definitions.IFunctionDefinition;
@@ -110,8 +110,9 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
return accessorEmitter;
}
+ // TODO (mschmalle) Fix; this is not using the backend doc strategy for replacement
@Override
- public IDocEmitter getDocEmitter()
+ public IJSGoogDocEmitter getDocEmitter()
{
if (docEmitter == null)
docEmitter = new JSFlexJSDocEmitter(this);
@@ -283,7 +284,7 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
}
if (isBindableSetter)
{
- getDoc().emitMethodDoc(fn, getWalker().getProject());
+ getDocEmitter().emitMethodDoc(fn, getWalker().getProject());
write(formatQualifiedName(type.getQualifiedName()));
if (!node.hasModifier(ASModifier.STATIC))
{
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/a26406d7/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java
index b685fe0..c431553 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java
@@ -26,7 +26,6 @@ import java.util.List;
import java.util.Map;
import org.apache.flex.compiler.codegen.IASGlobalFunctionConstants.BuiltinType;
-import org.apache.flex.compiler.codegen.IDocEmitter;
import org.apache.flex.compiler.codegen.js.goog.IJSGoogDocEmitter;
import org.apache.flex.compiler.codegen.js.goog.IJSGoogEmitter;
import org.apache.flex.compiler.common.ASModifier;
@@ -88,15 +87,15 @@ public class JSGoogEmitter extends JSEmitter implements IJSGoogEmitter
// TODO (mschmalle) Remove this (not used in JSFlexJSEmitter and JSGoogEmitter anymore)
public ICompilerProject project;
- protected IJSGoogDocEmitter getDoc()
- {
- return (IJSGoogDocEmitter) getDocEmitter();
- }
+ private JSGoogDocEmitter docEmitter;
+ // TODO (mschmalle) Fix; this is not using the backend doc strategy for replacement
@Override
- public IDocEmitter getDocEmitter()
+ public IJSGoogDocEmitter getDocEmitter()
{
- return new JSGoogDocEmitter(this);
+ if (docEmitter == null)
+ docEmitter = new JSGoogDocEmitter(this);
+ return docEmitter;
}
protected void writeIndent()
@@ -267,7 +266,7 @@ public class JSGoogEmitter extends JSEmitter implements IJSGoogEmitter
{
ICompilerProject project = getWalker().getProject();
- getDoc().emitInterfaceDoc(node, project);
+ getDocEmitter().emitInterfaceDoc(node, project);
String qname = node.getQualifiedName();
if (qname != null && !qname.equals(""))
@@ -334,7 +333,7 @@ public class JSGoogEmitter extends JSEmitter implements IJSGoogEmitter
if (enode != null)
def = enode.resolveType(getWalker().getProject());
- getDoc().emitFieldDoc(node, def);
+ getDocEmitter().emitFieldDoc(node, def);
/* x.prototype.y = z */
@@ -388,11 +387,11 @@ public class JSGoogEmitter extends JSEmitter implements IJSGoogEmitter
String opcode = avnode.getNodeID().getParaphrase();
if (opcode != "AnonymousFunction")
- getDoc().emitVarDoc(node, def);
+ getDocEmitter().emitVarDoc(node, def);
}
else
{
- getDoc().emitVarDoc(node, null);
+ getDocEmitter().emitVarDoc(node, null);
}
emitDeclarationName(node);
@@ -458,7 +457,7 @@ public class JSGoogEmitter extends JSEmitter implements IJSGoogEmitter
ICompilerProject project = getWalker().getProject();
- getDoc().emitMethodDoc(node, project);
+ getDocEmitter().emitMethodDoc(node, project);
boolean isConstructor = node.isConstructor();
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/a26406d7/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/vf2js/JSVF2JSEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/vf2js/JSVF2JSEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/vf2js/JSVF2JSEmitter.java
index b11193b..dab4472 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/vf2js/JSVF2JSEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/vf2js/JSVF2JSEmitter.java
@@ -29,7 +29,7 @@ import java.util.Map;
import java.util.Set;
import org.apache.flex.compiler.codegen.IASGlobalFunctionConstants;
-import org.apache.flex.compiler.codegen.IDocEmitter;
+import org.apache.flex.compiler.codegen.js.goog.IJSGoogDocEmitter;
import org.apache.flex.compiler.codegen.js.vf2js.IJSVF2JSEmitter;
import org.apache.flex.compiler.common.ASModifier;
import org.apache.flex.compiler.common.ModifiersSet;
@@ -207,7 +207,7 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
{
ICompilerProject project = getWalker().getProject();
- getDoc().emitInterfaceDoc(node, project);
+ getDocEmitter().emitInterfaceDoc(node, project);
String qname = parseQualifiedName(node);
if (qname != null && !qname.equals(""))
@@ -225,7 +225,6 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
write(ASEmitterTokens.SEMICOLON);
}
-
final IDefinitionNode[] members = node.getAllMemberDefinitionNodes();
for (IDefinitionNode mnode : members)
{
@@ -236,8 +235,8 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
writeNewline();
writeNewline();
- getDoc().emitInterfaceMemberDoc((IFunctionNode) mnode, project);
-
+ getDocEmitter().emitInterfaceMemberDoc(mnode, project);
+
write(qname);
write(ASEmitterTokens.MEMBER_ACCESS);
write(JSEmitterTokens.PROTOTYPE);
@@ -277,11 +276,11 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
if (node.isConstructor())
{
- emitVarNonLiteralAssignments();
+ emitVarNonLiteralAssignments();
}
-
- if (node.isConstructor()
- && hasSuperClass(node) && !hasSuperCall(node.getScopedNode()))
+
+ if (node.isConstructor() && hasSuperClass(node)
+ && !hasSuperCall(node.getScopedNode()))
emitSuperCall(node, JSSessionModel.CONSTRUCTOR_FULL);
}
@@ -290,50 +289,49 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
// (erikdebruin): If the initial value of a variable is set using
// a method, JS needs this initialization to be done
// in the constructor
- IClassNode cdnode = (IClassNode) getModel().getCurrentClass().getNode();
+ IClassNode cdnode = (IClassNode) getModel().getCurrentClass().getNode();
IDefinitionNode[] dnodes = cdnode.getAllMemberNodes();
for (IDefinitionNode dnode : dnodes)
{
if (dnode.getNodeID() == ASTNodeID.VariableID)
{
- IVariableNode vnode = (IVariableNode) dnode;
- IExpressionNode avnode = vnode.getAssignedValueNode();
- if (avnode != null &&
- !(avnode instanceof ILiteralNode) &&
- !(avnode instanceof IEmbedNode))
+ IVariableNode vnode = (IVariableNode) dnode;
+ IExpressionNode avnode = vnode.getAssignedValueNode();
+ if (avnode != null && !(avnode instanceof ILiteralNode)
+ && !(avnode instanceof IEmbedNode))
{
- writeNewline("", true);
- if (vnode.hasModifier(ASModifier.STATIC))
- {
- write(parseQualifiedName(cdnode));
- }
- else
- {
- write(ASEmitterTokens.THIS);
- }
- write(ASEmitterTokens.MEMBER_ACCESS);
- writeToken(vnode.getName());
- writeToken(ASEmitterTokens.EQUAL);
- getWalker().walk(avnode);
- indentPop();
- writeNewline(ASEmitterTokens.SEMICOLON);
+ writeNewline("", true);
+ if (vnode.hasModifier(ASModifier.STATIC))
+ {
+ write(parseQualifiedName(cdnode));
+ }
+ else
+ {
+ write(ASEmitterTokens.THIS);
+ }
+ write(ASEmitterTokens.MEMBER_ACCESS);
+ writeToken(vnode.getName());
+ writeToken(ASEmitterTokens.EQUAL);
+ getWalker().walk(avnode);
+ indentPop();
+ writeNewline(ASEmitterTokens.SEMICOLON);
}
}
}
}
-
+
@Override
public void emitVarDeclaration(IVariableNode node)
{
if (!(node instanceof ChainedVariableNode))
{
- // (erikdebruin): check for 'var i:int = 0, j:int = 0' containers
- IASNode pnode = node.getParent();
- if (!(pnode instanceof IVariableExpressionNode) ||
- node.getChild(0) instanceof IKeywordNode)
- {
- emitMemberKeyword(node);
- }
+ // (erikdebruin): check for 'var i:int = 0, j:int = 0' containers
+ IASNode pnode = node.getParent();
+ if (!(pnode instanceof IVariableExpressionNode)
+ || node.getChild(0) instanceof IKeywordNode)
+ {
+ emitMemberKeyword(node);
+ }
}
IExpressionNode avnode = node.getAssignedValueNode();
@@ -343,16 +341,16 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
String opcode = avnode.getNodeID().getParaphrase();
if (opcode != "AnonymousFunction")
- getDoc().emitVarDoc(node, def);
+ getDocEmitter().emitVarDoc(node, def);
}
else
{
- getDoc().emitVarDoc(node, null);
+ getDocEmitter().emitVarDoc(node, null);
}
emitDeclarationName(node);
if (!(avnode instanceof IEmbedNode))
- emitAssignedValue(avnode);
+ emitAssignedValue(avnode);
if (!(node instanceof ChainedVariableNode))
{
@@ -398,7 +396,7 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
def = enode.resolveType(project);
}
- getDoc().emitFieldDoc(node, def);
+ getDocEmitter().emitFieldDoc(node, def);
IDefinition ndef = node.getDefinition();
@@ -448,40 +446,52 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
writeNewline("@expose");
writeNewline(" */");
writeNewline(parseQualifiedName(definition)
- + ASEmitterTokens.MEMBER_ACCESS.getToken() + root
- + "get_" + node.getName()
- + ASEmitterTokens.SPACE.getToken() + ASEmitterTokens.EQUAL.getToken()
- + ASEmitterTokens.SPACE.getToken() + ASEmitterTokens.FUNCTION.getToken()
- + ASEmitterTokens.PAREN_OPEN.getToken() + ASEmitterTokens.PAREN_CLOSE.getToken()
- + ASEmitterTokens.SPACE.getToken() + ASEmitterTokens.BLOCK_OPEN.getToken());
- writeNewline(ASEmitterTokens.RETURN.getToken() + ASEmitterTokens.SPACE.getToken()
- + ASEmitterTokens.THIS.getToken() + ASEmitterTokens.MEMBER_ACCESS.getToken()
- + node.getName() + ASEmitterTokens.SEMICOLON.getToken());
- writeNewline(ASEmitterTokens.BLOCK_CLOSE.getToken() + ASEmitterTokens.SEMICOLON.getToken());
+ + ASEmitterTokens.MEMBER_ACCESS.getToken() + root + "get_"
+ + node.getName() + ASEmitterTokens.SPACE.getToken()
+ + ASEmitterTokens.EQUAL.getToken()
+ + ASEmitterTokens.SPACE.getToken()
+ + ASEmitterTokens.FUNCTION.getToken()
+ + ASEmitterTokens.PAREN_OPEN.getToken()
+ + ASEmitterTokens.PAREN_CLOSE.getToken()
+ + ASEmitterTokens.SPACE.getToken()
+ + ASEmitterTokens.BLOCK_OPEN.getToken());
+ writeNewline(ASEmitterTokens.RETURN.getToken()
+ + ASEmitterTokens.SPACE.getToken()
+ + ASEmitterTokens.THIS.getToken()
+ + ASEmitterTokens.MEMBER_ACCESS.getToken() + node.getName()
+ + ASEmitterTokens.SEMICOLON.getToken());
+ writeNewline(ASEmitterTokens.BLOCK_CLOSE.getToken()
+ + ASEmitterTokens.SEMICOLON.getToken());
writeNewline();
writeNewline("/**");
writeNewline("@expose");
writeNewline(" */");
writeNewline(parseQualifiedName(definition)
- + ASEmitterTokens.MEMBER_ACCESS.getToken() + root
- + "set_" + node.getName()
- + ASEmitterTokens.SPACE.getToken() + ASEmitterTokens.EQUAL.getToken()
- + ASEmitterTokens.SPACE.getToken() + ASEmitterTokens.FUNCTION.getToken()
- + ASEmitterTokens.PAREN_OPEN.getToken() + "value" + ASEmitterTokens.PAREN_CLOSE.getToken()
- + ASEmitterTokens.SPACE.getToken() + ASEmitterTokens.BLOCK_OPEN.getToken());
+ + ASEmitterTokens.MEMBER_ACCESS.getToken() + root + "set_"
+ + node.getName() + ASEmitterTokens.SPACE.getToken()
+ + ASEmitterTokens.EQUAL.getToken()
+ + ASEmitterTokens.SPACE.getToken()
+ + ASEmitterTokens.FUNCTION.getToken()
+ + ASEmitterTokens.PAREN_OPEN.getToken() + "value"
+ + ASEmitterTokens.PAREN_CLOSE.getToken()
+ + ASEmitterTokens.SPACE.getToken()
+ + ASEmitterTokens.BLOCK_OPEN.getToken());
writeNewline("if (value != " + ASEmitterTokens.THIS.getToken()
- + ASEmitterTokens.MEMBER_ACCESS.getToken() + node.getName() + ") {");
+ + ASEmitterTokens.MEMBER_ACCESS.getToken() + node.getName()
+ + ") {");
writeNewline(" var oldValue = "
- + ASEmitterTokens.THIS.getToken() + ASEmitterTokens.MEMBER_ACCESS.getToken()
- + node.getName() + ASEmitterTokens.SEMICOLON.getToken());
- writeNewline(" " + ASEmitterTokens.THIS.getToken() + ASEmitterTokens.MEMBER_ACCESS.getToken()
- + node.getName() + " = value;");
+ + ASEmitterTokens.THIS.getToken()
+ + ASEmitterTokens.MEMBER_ACCESS.getToken() + node.getName()
+ + ASEmitterTokens.SEMICOLON.getToken());
+ writeNewline(" " + ASEmitterTokens.THIS.getToken()
+ + ASEmitterTokens.MEMBER_ACCESS.getToken() + node.getName()
+ + " = value;");
writeNewline(" this.dispatchEvent(org.apache.flex.events.ValueChangeEvent.createUpdateEvent(");
- writeNewline(" this, \"" + node.getName() + "\", oldValue, value));");
+ writeNewline(" this, \"" + node.getName()
+ + "\", oldValue, value));");
writeNewline("}");
write(ASEmitterTokens.BLOCK_CLOSE.getToken());
-
-
+
}
}
@@ -506,7 +516,7 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
ICompilerProject project = getWalker().getProject();
- getDoc().emitMethodDoc(node, project);
+ getDocEmitter().emitMethodDoc(node, project);
boolean isConstructor = node.isConstructor();
@@ -559,39 +569,43 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
write(ASEmitterTokens.PAREN_OPEN);
write(qname);
writeToken(ASEmitterTokens.COMMA);
- String sname = parseQualifiedName(getSuperClassDefinition(node, project));
+ String sname = parseQualifiedName(getSuperClassDefinition(node,
+ project));
if (sname.equals(IASLanguageConstants.Object))
- sname = IASLanguageConstants.Class;
+ sname = IASLanguageConstants.Class;
write(sname);
write(ASEmitterTokens.PAREN_CLOSE);
}
}
-
+
@Override
protected boolean hasSuperClass(IDefinitionNode node)
{
ICompilerProject project = getWalker().getProject();
IClassDefinition superClassDefinition = getSuperClassDefinition(node,
project);
-
+
if (superClassDefinition == null)
return false;
-
+
String qname = parseQualifiedName(superClassDefinition);
// ToDo (erikdebruin): need this to get the JS version of the SDK in
// shape?
- boolean useClassAsSuperClass = !qname.equals(IASLanguageConstants.Object);
+ boolean useClassAsSuperClass = !qname
+ .equals(IASLanguageConstants.Object);
if (!useClassAsSuperClass)
{
- if (parseQualifiedName(node).equals("mx.core.EmbeddedFontRegistry") ||
- parseQualifiedName(node).equals("mx.managers.HistoryManagerImpl") ||
- parseQualifiedName(node).equals("mx.core.TextFieldFactory"))
- {
- useClassAsSuperClass = true;
- }
+ if (parseQualifiedName(node).equals("mx.core.EmbeddedFontRegistry")
+ || parseQualifiedName(node).equals(
+ "mx.managers.HistoryManagerImpl")
+ || parseQualifiedName(node).equals(
+ "mx.core.TextFieldFactory"))
+ {
+ useClassAsSuperClass = true;
+ }
}
-
+
return superClassDefinition != null && useClassAsSuperClass;
}
@@ -622,9 +636,8 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
def = node.getNameNode().resolve(project);
- isClassCast = (def instanceof ClassDefinition ||
- def instanceof InterfaceDefinition) &&
- !(NativeUtils.isJSNative(def.getBaseName()));
+ isClassCast = (def instanceof ClassDefinition || def instanceof InterfaceDefinition)
+ && !(NativeUtils.isJSNative(def.getBaseName()));
}
if (node.isNewExpression())
@@ -647,15 +660,18 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
{
if (def != null)
{
- boolean isInt = def.getBaseName().equals(IASGlobalFunctionConstants._int);
- if (isInt ||
- def.getBaseName().equals(IASGlobalFunctionConstants.trace) ||
- def.getBaseName().equals(IASGlobalFunctionConstants.uint))
+ boolean isInt = def.getBaseName().equals(
+ IASGlobalFunctionConstants._int);
+ if (isInt
+ || def.getBaseName().equals(
+ IASGlobalFunctionConstants.trace)
+ || def.getBaseName().equals(
+ IASGlobalFunctionConstants.uint))
{
write(JSFlexJSEmitterTokens.LANGUAGE_QNAME);
write(ASEmitterTokens.MEMBER_ACCESS);
if (isInt)
- write(JSFlexJSEmitterTokens.UNDERSCORE);
+ write(JSFlexJSEmitterTokens.UNDERSCORE);
}
}
getWalker().walk(node.getNameNode());
@@ -665,7 +681,8 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
}
else
{
- emitIsAs(node.getArgumentNodes()[0], node.getNameNode(), ASTNodeID.Op_AsID, true);
+ emitIsAs(node.getArgumentNodes()[0], node.getNameNode(),
+ ASTNodeID.Op_AsID, true);
}
}
else
@@ -686,11 +703,11 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
{
if (node instanceof NonResolvingIdentifierNode)
return false;
-
+
IClassNode classNode = (IClassNode) node
.getAncestorOfType(IClassNode.class);
- IDefinition nodeDef = ((IIdentifierNode) node).resolve(project);
+ IDefinition nodeDef = node.resolve(project);
IASNode parentNode = node.getParent();
ASTNodeID parentNodeId = parentNode.getNodeID();
@@ -704,7 +721,7 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
{
if (nodeDef instanceof ParameterDefinition)
return false;
-
+
if (nodeDef instanceof VariableDefinition)
{
IDefinition pdef = ((VariableDefinition) nodeDef).getParent();
@@ -745,19 +762,18 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
}
else
{
- if (nodeDef != null
- && !nodeDef.isInternal()
+ if (nodeDef != null && !nodeDef.isInternal()
&& isClassMember(nodeDef, classNode))
{
if (identifierIsMemberAccess)
{
- if (parentNode.getNodeID() == ASTNodeID.MemberAccessExpressionID
+ if (parentNode.getNodeID() == ASTNodeID.MemberAccessExpressionID
&& parentNode.getChild(0).getNodeID() == ASTNodeID.SuperID
&& !isSuperCallForOverride(node))
- {
- return true;
- }
-
+ {
+ return true;
+ }
+
return node == firstChild;
}
else
@@ -768,8 +784,8 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
.getFunctionClassification() == IFunctionDefinition.FunctionClassification.LOCAL;
if (nodeDef instanceof IParameterDefinition)
- return false;
-
+ return false;
+
return !identifierIsLocalFunction;
}
}
@@ -793,7 +809,7 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
while (visiblePropertiesIterator.hasNext())
{
if (parseQualifiedName(nodeDef).equals(
- parseQualifiedName(visiblePropertiesIterator.next())))
+ parseQualifiedName(visiblePropertiesIterator.next())))
return true;
}
@@ -806,7 +822,8 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
if (pdef == thisClass)
return true;
- IDefinition cdef = ((ClassDefinition) thisClass).resolveBaseClass(project);
+ IDefinition cdef = ((ClassDefinition) thisClass)
+ .resolveBaseClass(project);
while (cdef != null)
{
// needs to be a loop
@@ -823,7 +840,7 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
if (project == null)
project = getWalker().getProject();
- IDefinition nodeDef = ((IIdentifierNode) node).resolve(project);
+ IDefinition nodeDef = node.resolve(project);
IASNode parentNode = node.getParent();
ASTNodeID parentNodeId = parentNode.getNodeID();
@@ -834,8 +851,8 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
boolean emitName = true;
- if (nodeDef != null
- && nodeDef.isStatic() && nodeDef.getParent() != null)
+ if (nodeDef != null && nodeDef.isStatic()
+ && nodeDef.getParent() != null)
{
String sname = parseQualifiedName(nodeDef.getParent());
if (sname.length() > 0)
@@ -937,7 +954,7 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
// ToDo (erikdebruin): add VF2JS conditional -> only use check during full SDK compilation
if (cnode == null)
return;
-
+
write(parseQualifiedName(cnode));
write(ASEmitterTokens.MEMBER_ACCESS);
write(JSGoogEmitterTokens.GOOG_BASE);
@@ -966,16 +983,17 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
if (anode != null && isAssignment)
{
- getWalker().walk(((BinaryOperatorAssignmentNode) anode)
- .getRightOperandNode());
+ getWalker().walk(
+ ((BinaryOperatorAssignmentNode) anode)
+ .getRightOperandNode());
}
if (!(node instanceof NonResolvingIdentifierNode))
- write(ASEmitterTokens.PAREN_CLOSE);
+ write(ASEmitterTokens.PAREN_CLOSE);
}
else if (emitName)
{
- if (nodeDef != null)
+ if (nodeDef != null)
write(parseQualifiedName(nodeDef));
else
write(node.getName());
@@ -984,15 +1002,15 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
private boolean isSuperCallForOverride(IIdentifierNode node)
{
- IFunctionNode pfnode = (IFunctionNode) node.
- getAncestorOfType(FunctionNode.class);
+ IFunctionNode pfnode = (IFunctionNode) node
+ .getAncestorOfType(FunctionNode.class);
- if (pfnode == null)
- return false;
-
- return pfnode.getName().equals(node.getName());
+ if (pfnode == null)
+ return false;
+
+ return pfnode.getName().equals(node.getName());
}
-
+
//--------------------------------------------------------------------------
@Override
@@ -1024,7 +1042,7 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
if (cnode == null)
return;
-
+
// (erikdebruin): Catch when a 'super' call does NOT match the enclosing
// function call. The GCC only allows '.base()' calls
// to matching super methods, so we need to use
@@ -1032,20 +1050,23 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
boolean isCallToOtherSuperMethod = false;
try
{
- IExpressionNode d = fcnode.getNameNode();
- if (d != null && d instanceof IMemberAccessExpressionNode)
- {
- IIdentifierNode b = (IIdentifierNode) ((IMemberAccessExpressionNode) d).getRightOperandNode();
-
- isCallToOtherSuperMethod =
- b != null && !b.getName().equals(fnode.getName());
- }
+ IExpressionNode d = fcnode.getNameNode();
+ if (d != null && d instanceof IMemberAccessExpressionNode)
+ {
+ IIdentifierNode b = (IIdentifierNode) ((IMemberAccessExpressionNode) d)
+ .getRightOperandNode();
+
+ isCallToOtherSuperMethod = b != null
+ && !b.getName().equals(fnode.getName());
+ }
}
- catch (Exception e) { /* Eat it! */ }
-
+ catch (Exception e)
+ { /* Eat it! */
+ }
+
if (isCallToOtherSuperMethod)
{
- write(ASEmitterTokens.THIS);
+ write(ASEmitterTokens.THIS);
write(ASEmitterTokens.MEMBER_ACCESS);
write(JSGoogEmitterTokens.SUPERCLASS);
write(ASEmitterTokens.MEMBER_ACCESS);
@@ -1071,22 +1092,22 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
{
if (!isCallToOtherSuperMethod)
{
- writeToken(ASEmitterTokens.COMMA);
- write(ASEmitterTokens.SINGLE_QUOTE);
+ writeToken(ASEmitterTokens.COMMA);
+ write(ASEmitterTokens.SINGLE_QUOTE);
}
-
+
if (fnode.getNodeID() == ASTNodeID.GetterID
|| fnode.getNodeID() == ASTNodeID.SetterID)
writeGetSetPrefix(fnode.getNodeID() == ASTNodeID.GetterID);
-
+
// (erikdebruin): write(fnode.getName());
- IMemberAccessExpressionNode aenode =
- (IMemberAccessExpressionNode) fcnode.getNameNode();
+ IMemberAccessExpressionNode aenode = (IMemberAccessExpressionNode) fcnode
+ .getNameNode();
write(((IIdentifierNode) aenode.getRightOperandNode()).getName());
-
+
if (!isCallToOtherSuperMethod)
{
- write(ASEmitterTokens.SINGLE_QUOTE);
+ write(ASEmitterTokens.SINGLE_QUOTE);
}
else
{
@@ -1114,9 +1135,10 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
else if (fnode == null && node instanceof BinaryOperatorAssignmentNode)
{
BinaryOperatorAssignmentNode bnode = (BinaryOperatorAssignmentNode) node;
-
- IFunctionNode pnode = (IFunctionNode) bnode.getAncestorOfType(IFunctionNode.class);
-
+
+ IFunctionNode pnode = (IFunctionNode) bnode
+ .getAncestorOfType(IFunctionNode.class);
+
if (pnode.getNodeID() == ASTNodeID.SetterID)
{
writeToken(ASEmitterTokens.COMMA);
@@ -1222,15 +1244,15 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
public void emitBinaryOperator(IBinaryOperatorNode node)
{
ASTNodeID id = node.getNodeID();
- if (id == ASTNodeID.Op_InID
- || id == ASTNodeID.Op_LogicalAndAssignID
+ if (id == ASTNodeID.Op_InID || id == ASTNodeID.Op_LogicalAndAssignID
|| id == ASTNodeID.Op_LogicalOrAssignID)
{
super.emitBinaryOperator(node);
}
else if (id == ASTNodeID.Op_IsID || id == ASTNodeID.Op_AsID)
{
- emitIsAs(node.getLeftOperandNode(), node.getRightOperandNode(), id, false);
+ emitIsAs(node.getLeftOperandNode(), node.getRightOperandNode(), id,
+ false);
}
else if (id == ASTNodeID.Op_InstanceOfID)
{
@@ -1238,7 +1260,7 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
write(ASEmitterTokens.SPACE);
writeToken(ASEmitterTokens.INSTANCEOF);
-
+
IDefinition dnode = (node.getRightOperandNode()).resolve(project);
if (dnode != null)
write(parseQualifiedName(dnode));
@@ -1283,7 +1305,7 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
{
getWalker().walk(leftSide);
}
- else if (isSuper)
+ else if (isSuper)
{
emitSuperCall(node, "");
}
@@ -1307,7 +1329,7 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
}
}
- private void emitIsAs(IExpressionNode left, IExpressionNode right,
+ private void emitIsAs(IExpressionNode left, IExpressionNode right,
ASTNodeID id, boolean coercion)
{
write(JSFlexJSEmitterTokens.LANGUAGE_QNAME);
@@ -1325,16 +1347,16 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
write(parseQualifiedName(dnode));
else
getWalker().walk(right);
-
- if (coercion)
+
+ if (coercion)
{
writeToken(ASEmitterTokens.COMMA);
write(ASEmitterTokens.TRUE);
}
-
+
write(ASEmitterTokens.PAREN_CLOSE);
}
-
+
@Override
public void emitMemberAccessExpression(IMemberAccessExpressionNode node)
{
@@ -1353,12 +1375,12 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
if (!isStatic)
{
if (!(leftNode instanceof ILanguageIdentifierNode && ((ILanguageIdentifierNode) leftNode)
- .getKind() == ILanguageIdentifierNode.LanguageIdentifierKind.THIS))
+ .getKind() == ILanguageIdentifierNode.LanguageIdentifierKind.THIS))
{
- if (rightNode instanceof UnaryOperatorAtNode)
+ if (rightNode instanceof UnaryOperatorAtNode)
{
- // ToDo (erikdebruin): properly handle E4X
-
+ // ToDo (erikdebruin): properly handle E4X
+
write(ASEmitterTokens.THIS);
write(ASEmitterTokens.MEMBER_ACCESS);
getWalker().walk(node.getLeftOperandNode());
@@ -1369,10 +1391,10 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
write(ASEmitterTokens.SQUARE_CLOSE);
continueWalk = false;
}
- else if (node.getNodeID() == ASTNodeID.Op_DescendantsID)
- {
- // ToDo (erikdebruin): properly handle E4X
-
+ else if (node.getNodeID() == ASTNodeID.Op_DescendantsID)
+ {
+ // ToDo (erikdebruin): properly handle E4X
+
write(ASEmitterTokens.THIS);
write(ASEmitterTokens.MEMBER_ACCESS);
getWalker().walk(node.getLeftOperandNode());
@@ -1382,8 +1404,8 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
write(ASEmitterTokens.SINGLE_QUOTE);
write(ASEmitterTokens.SQUARE_CLOSE);
continueWalk = false;
- }
- else if (leftNode.getNodeID() != ASTNodeID.SuperID)
+ }
+ else if (leftNode.getNodeID() != ASTNodeID.SuperID)
{
getWalker().walk(node.getLeftOperandNode());
write(node.getOperator().getOperatorText());
@@ -1394,11 +1416,11 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
write(ASEmitterTokens.THIS);
write(node.getOperator().getOperatorText());
}
-
+
}
-
+
if (continueWalk)
- getWalker().walk(node.getRightOperandNode());
+ getWalker().walk(node.getRightOperandNode());
}
private static ITypeDefinition getTypeDefinition(IDefinitionNode node)
@@ -1428,11 +1450,11 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
// ToDo (erikdebruin): add VF2JS conditional -> only use check during full SDK compilation
if (type == null)
return;
-
+
if (project == null)
project = getWalker().getProject();
- getDoc().emitMethodDoc(fn, project);
+ getDocEmitter().emitMethodDoc(fn, project);
write(parseQualifiedName(type));
if (!node.hasModifier(ASModifier.STATIC))
{
@@ -1460,7 +1482,7 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
}
@Override
- public IDocEmitter getDocEmitter()
+ public IJSGoogDocEmitter getDocEmitter()
{
return new JSVF2JSDocEmitter(this);
}
@@ -1481,7 +1503,7 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
writeNewline(" * @suppress {checkTypes}");
writeNewline(" */");
writeNewline();
-
+
/* goog.provide('x');\n\n */
write(JSGoogEmitterTokens.GOOG_PROVIDE);
write(ASEmitterTokens.PAREN_OPEN);
@@ -1507,7 +1529,7 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
project = getWalker().getProject();
FlexJSProject flexProject = (FlexJSProject) project;
- ASProjectScope projectScope = (ASProjectScope) flexProject.getScope();
+ ASProjectScope projectScope = flexProject.getScope();
ICompilationUnit cu = projectScope
.getCompilationUnitForDefinition(type);
ArrayList<String> requiresList = flexProject.getRequires(cu);
@@ -1542,14 +1564,14 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
write(ASEmitterTokens.SINGLE_QUOTE);
write(ASEmitterTokens.PAREN_CLOSE);
writeNewline(ASEmitterTokens.SEMICOLON);
-
+
writtenInstances.add(imp);
-
+
emitsRequires = true;
}
}
}
-
+
boolean emitsInterfaces = false;
if (interfacesList != null)
{
@@ -1562,17 +1584,17 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
write(ASEmitterTokens.SINGLE_QUOTE);
write(ASEmitterTokens.PAREN_CLOSE);
writeNewline(ASEmitterTokens.SEMICOLON);
-
+
emitsInterfaces = true;
}
}
-
+
// erikdebruin: Add missing language feature support, with e.g. 'is' and
// 'as' operators. We don't need to worry about requiring
// this in every project: ADVANCED_OPTIMISATIONS will NOT
// include any of the code if it is not used in the project.
- boolean isMainCU = flexProject.mainCU != null &&
- cu.getName().equals(flexProject.mainCU.getName());
+ boolean isMainCU = flexProject.mainCU != null
+ && cu.getName().equals(flexProject.mainCU.getName());
if (isMainCU)
{
write(JSGoogEmitterTokens.GOOG_REQUIRE);
@@ -1612,11 +1634,11 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
writeNewline();
writeNewline();
writeNewline();
- getDoc().begin();
+ getDocEmitter().begin();
writeNewline(" * Metadata");
writeNewline(" *");
writeNewline(" * @type {Object.<string, Array.<Object>>}");
- getDoc().end();
+ getDocEmitter().end();
// a.B.prototype.AFJS_CLASS_INFO = { };
write(parseQualifiedName(type));
@@ -1626,7 +1648,7 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
writeToken(JSFlexJSEmitterTokens.FLEXJS_CLASS_INFO);
writeToken(ASEmitterTokens.EQUAL);
writeToken(ASEmitterTokens.BLOCK_OPEN);
-
+
// names: [{ name: '', qName: '' }]
write(JSFlexJSEmitterTokens.NAMES);
writeToken(ASEmitterTokens.COLON);
@@ -1651,7 +1673,7 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
enodes = ((IClassNode) tnode).getImplementedInterfaceNodes();
else
enodes = ((IInterfaceNode) tnode).getExtendedInterfaceNodes();
-
+
if (enodes.length > 0)
{
writeToken(ASEmitterTokens.COMMA);
@@ -1662,7 +1684,7 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
write(ASEmitterTokens.SQUARE_OPEN);
int i = 0;
for (IExpressionNode enode : enodes)
- {
+ {
write(parseQualifiedName(enode.resolve(project)));
if (i < enodes.length - 1)
writeToken(ASEmitterTokens.COMMA);
@@ -1823,16 +1845,16 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
public void emitLiteral(ILiteralNode node)
{
boolean isWritten = false;
-
+
String s = node.getValue(true);
if (!(node instanceof RegExpLiteralNode))
{
if (node.getLiteralType() == LiteralType.XML)
{
// ToDo (erikdebruin): VF2JS -> handle XML output properly...
-
+
write("'" + s + "'");
-
+
isWritten = true;
}
s = s.replaceAll("\n", "__NEWLINE_PLACEHOLDER__");
@@ -1850,33 +1872,34 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
s = s.replaceAll("__TAB_PLACEHOLDER__", "\\\\t");
s = s.replaceAll("__CR_PLACEHOLDER__", "\\\\r");
s = s.replaceAll("__NEWLINE_PLACEHOLDER__", "\\\\n");
-
+
Character c = s.charAt(0);
if (c.equals('"'))
{
- s = s.substring(1, s.length() - 1);
- s = s.replaceAll("\"", "\\\\\"");
- s = "\"" + s + "\"";
+ s = s.substring(1, s.length() - 1);
+ s = s.replaceAll("\"", "\\\\\"");
+ s = "\"" + s + "\"";
}
if (s.length() == 3)
{
- c = s.charAt(1);
- if (c.equals('\\')) {
- s = "\"\\\\\"";
- }
+ c = s.charAt(1);
+ if (c.equals('\\'))
+ {
+ s = "\"\\\\\"";
+ }
}
}
-
+
if (!isWritten)
{
write(s);
}
}
-
+
@Override
public void emitE4XFilter(IMemberAccessExpressionNode node)
{
- // ToDo (erikdebruin): implement E4X replacement !?!
+ // ToDo (erikdebruin): implement E4X replacement !?!
write(ASEmitterTokens.SINGLE_QUOTE);
write("E4XFilter");
write(ASEmitterTokens.SINGLE_QUOTE);
@@ -1889,36 +1912,36 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
for (int i = 0; i < nodeCount; i++)
{
getWalker().walk(node.getChild(i));
-
+
if (i < nodeCount - 1)
- writeToken(ASEmitterTokens.COMMA);
+ writeToken(ASEmitterTokens.COMMA);
}
}
-
+
private String parseQualifiedName(IDefinitionNode def)
{
- return parseQualifiedNameString(def.getQualifiedName());
+ return parseQualifiedNameString(def.getQualifiedName());
}
-
+
private String parseQualifiedName(IDefinition def)
{
- return parseQualifiedNameString(def.getQualifiedName());
+ return parseQualifiedNameString(def.getQualifiedName());
}
private String parseQualifiedNameString(String qNameString)
{
- // ToDo (erikdebruin): Ugly hacks for VF2JS ...
- if (qNameString.equals(IASLanguageConstants._int))
- {
- qNameString = qNameString.toUpperCase();
- }
-
- if (qNameString.equals("byte"))
- {
- qNameString = "$" + qNameString;
- }
-
- return qNameString;
+ // ToDo (erikdebruin): Ugly hacks for VF2JS ...
+ if (qNameString.equals(IASLanguageConstants._int))
+ {
+ qNameString = qNameString.toUpperCase();
+ }
+
+ if (qNameString.equals("byte"))
+ {
+ qNameString = "$" + qNameString;
+ }
+
+ return qNameString;
}
}
[2/3] git commit: [flex-falcon] [refs/heads/develop] - - Refactored
more shared utility methods. - Moved writeIndent() to ASEmitter.
Posted by ms...@apache.org.
- Refactored more shared utility methods.
- Moved writeIndent() to ASEmitter.
Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/f4404cef
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/f4404cef
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/f4404cef
Branch: refs/heads/develop
Commit: f4404cef5a2330f62f588b04b0f464eae5bccda4
Parents: a26406d
Author: Michael Schmalle <ms...@apache.org>
Authored: Sun May 31 14:28:16 2015 -0400
Committer: Michael Schmalle <ms...@apache.org>
Committed: Sun May 31 14:28:16 2015 -0400
----------------------------------------------------------------------
.../compiler/internal/codegen/as/ASEmitter.java | 26 ++--
.../internal/codegen/js/goog/JSGoogEmitter.java | 124 ++-----------------
.../internal/codegen/js/utils/EmitterUtils.java | 42 ++++++-
.../codegen/js/vf2js/JSVF2JSEmitter.java | 12 +-
4 files changed, 78 insertions(+), 126 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/f4404cef/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASEmitter.java
index 26b1100..7f5f46f 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASEmitter.java
@@ -147,12 +147,17 @@ public class ASEmitter implements IASEmitter, IEmitter
return currentIndent;
}
+ protected void writeIndent()
+ {
+ write(ASEmitterTokens.INDENT);
+ }
+
private IASBlockWalker walker;
@Override
public IBlockWalker getWalker()
{
- return (IBlockWalker) walker;
+ return walker;
}
@Override
@@ -1367,7 +1372,8 @@ public class ASEmitter implements IASEmitter, IEmitter
}
@Override
- public void emitNamespaceAccessExpression(INamespaceAccessExpressionNode node)
+ public void emitNamespaceAccessExpression(
+ INamespaceAccessExpressionNode node)
{
getWalker().walk(node.getLeftOperandNode());
write(node.getOperator().getOperatorText());
@@ -1379,7 +1385,7 @@ public class ASEmitter implements IASEmitter, IEmitter
{
if (ASNodeUtils.hasParenOpen(node))
write(ASEmitterTokens.PAREN_OPEN);
-
+
if (node.getNodeID() == ASTNodeID.Op_PreIncrID
|| node.getNodeID() == ASTNodeID.Op_PreDecrID
|| node.getNodeID() == ASTNodeID.Op_BitwiseNotID
@@ -1397,7 +1403,7 @@ public class ASEmitter implements IASEmitter, IEmitter
}
else
{
- getWalker().walk(node.getOperandNode());
+ getWalker().walk(node.getOperandNode());
}
}
@@ -1420,7 +1426,7 @@ public class ASEmitter implements IASEmitter, IEmitter
getWalker().walk(node.getOperandNode());
write(ASEmitterTokens.PAREN_CLOSE);
}
-
+
if (ASNodeUtils.hasParenClose(node))
write(ASEmitterTokens.PAREN_CLOSE);
}
@@ -1455,23 +1461,27 @@ public class ASEmitter implements IASEmitter, IEmitter
{
}
+ @Override
public void emitContainer(IContainerNode node)
{
}
+ @Override
public void emitE4XFilter(IMemberAccessExpressionNode node)
{
- // ToDo (erikdebruin)
+ // ToDo (erikdebruin)
}
+ @Override
public void emitUseNamespace(IUseNamespaceNode node)
{
- // ToDo (erikdebruin)
+ // ToDo (erikdebruin)
}
+ @Override
public String stringifyNode(IASNode node)
{
- boolean oldBufferWrite = isBufferWrite();
+ boolean oldBufferWrite = isBufferWrite();
StringBuilder oldBuilder = this.builder;
this.builder = new StringBuilder();
setBufferWrite(true);
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/f4404cef/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java
index c431553..7dd7cdb 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java
@@ -21,7 +21,6 @@ package org.apache.flex.compiler.internal.codegen.js.goog;
import java.io.FilterWriter;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -41,7 +40,6 @@ import org.apache.flex.compiler.internal.codegen.js.JSEmitter;
import org.apache.flex.compiler.internal.codegen.js.JSEmitterTokens;
import org.apache.flex.compiler.internal.codegen.js.JSSessionModel;
import org.apache.flex.compiler.internal.codegen.js.utils.EmitterUtils;
-import org.apache.flex.compiler.internal.definitions.ClassDefinition;
import org.apache.flex.compiler.internal.scopes.PackageScope;
import org.apache.flex.compiler.internal.tree.as.ChainedVariableNode;
import org.apache.flex.compiler.internal.tree.as.FunctionCallNode;
@@ -66,7 +64,6 @@ import org.apache.flex.compiler.tree.as.IIdentifierNode;
import org.apache.flex.compiler.tree.as.IInterfaceNode;
import org.apache.flex.compiler.tree.as.INamespaceAccessExpressionNode;
import org.apache.flex.compiler.tree.as.IParameterNode;
-import org.apache.flex.compiler.tree.as.IScopedNode;
import org.apache.flex.compiler.tree.as.ISetterNode;
import org.apache.flex.compiler.tree.as.ITypeNode;
import org.apache.flex.compiler.tree.as.ITypedExpressionNode;
@@ -98,11 +95,6 @@ public class JSGoogEmitter extends JSEmitter implements IJSGoogEmitter
return docEmitter;
}
- protected void writeIndent()
- {
- write(ASEmitterTokens.INDENT);
- }
-
//--------------------------------------------------------------------------
//
//--------------------------------------------------------------------------
@@ -142,7 +134,7 @@ public class JSGoogEmitter extends JSEmitter implements IJSGoogEmitter
if (type == null)
return;
- List<String> list = resolveImports(type);
+ List<String> list = EmitterUtils.resolveImports(type);
for (String imp : list)
{
if (imp.indexOf(JSGoogEmitterTokens.AS3.getToken()) != -1)
@@ -485,7 +477,7 @@ public class JSGoogEmitter extends JSEmitter implements IJSGoogEmitter
emitParameters(node.getParameterNodes());
- boolean hasSuperClass = hasSuperClass(node);
+ boolean hasSuperClass = EmitterUtils.hasSuperClass(project, node);
if (isConstructor && node.getScopedNode().getChildCount() == 0)
{
@@ -621,11 +613,12 @@ public class JSGoogEmitter extends JSEmitter implements IJSGoogEmitter
boolean isLocal = false;
if (node.getFunctionClassification() == IFunctionDefinition.FunctionClassification.LOCAL)
isLocal = true;
- if (hasBody(node) && !isStatic && !isLocal)
+ if (EmitterUtils.hasBody(node) && !isStatic && !isLocal)
emitSelfReference(node);
- if (node.isConstructor() && hasSuperClass(node)
- && !hasSuperCall(node.getScopedNode()))
+ if (node.isConstructor()
+ && EmitterUtils.hasSuperClass(getWalker().getProject(), node)
+ && !EmitterUtils.hasSuperCall(node.getScopedNode()))
emitSuperCall(node, JSSessionModel.CONSTRUCTOR_FULL);
emitRestParameterCodeBlock(node);
@@ -662,7 +655,8 @@ public class JSGoogEmitter extends JSEmitter implements IJSGoogEmitter
.getAncestorOfType(IFunctionNode.class);
}
- if (fnode.isConstructor() && !hasSuperClass(fnode))
+ if (fnode.isConstructor()
+ && !EmitterUtils.hasSuperClass(getWalker().getProject(), fnode))
return;
IClassNode cnode = (IClassNode) node
@@ -741,13 +735,14 @@ public class JSGoogEmitter extends JSEmitter implements IJSGoogEmitter
if (pnodes.length == 0)
return;
- Map<Integer, IParameterNode> defaults = getDefaults(pnodes);
+ Map<Integer, IParameterNode> defaults = EmitterUtils
+ .getDefaults(pnodes);
if (defaults != null)
{
final StringBuilder code = new StringBuilder();
- if (!hasBody(node))
+ if (!EmitterUtils.hasBody(node))
{
indentPush();
writeIndent();
@@ -790,7 +785,7 @@ public class JSGoogEmitter extends JSEmitter implements IJSGoogEmitter
write(code.toString());
- if (i == n - 1 && !hasBody(node))
+ if (i == n - 1 && !EmitterUtils.hasBody(node))
indentPop();
writeNewline();
@@ -803,7 +798,7 @@ public class JSGoogEmitter extends JSEmitter implements IJSGoogEmitter
{
IParameterNode[] pnodes = node.getParameterNodes();
- IParameterNode rest = getRest(pnodes);
+ IParameterNode rest = EmitterUtils.getRest(pnodes);
if (rest != null)
{
final StringBuilder code = new StringBuilder();
@@ -900,42 +895,6 @@ public class JSGoogEmitter extends JSEmitter implements IJSGoogEmitter
super(out);
}
- protected Map<Integer, IParameterNode> getDefaults(IParameterNode[] nodes)
- {
- Map<Integer, IParameterNode> result = new HashMap<Integer, IParameterNode>();
- int i = 0;
- boolean hasDefaults = false;
- for (IParameterNode node : nodes)
- {
- if (node.hasDefaultValue())
- {
- hasDefaults = true;
- result.put(i, node);
- }
- else
- {
- result.put(i, null);
- }
- i++;
- }
-
- if (!hasDefaults)
- return null;
-
- return result;
- }
-
- private IParameterNode getRest(IParameterNode[] nodes)
- {
- for (IParameterNode node : nodes)
- {
- if (node.isRest())
- return node;
- }
-
- return null;
- }
-
private static ITypeDefinition getTypeDefinition(IDefinitionNode node)
{
ITypeNode tnode = (ITypeNode) node.getAncestorOfType(ITypeNode.class);
@@ -951,38 +910,6 @@ public class JSGoogEmitter extends JSEmitter implements IJSGoogEmitter
return superClass;
}
- protected boolean hasSuperClass(IDefinitionNode node)
- {
- ICompilerProject project = getWalker().getProject();
- IClassDefinition superClassDefinition = getSuperClassDefinition(node,
- project);
- // XXX (mschmalle) this is nulling for MXML super class, figure out why
- if (superClassDefinition == null)
- return false;
- String qname = superClassDefinition.getQualifiedName();
- return superClassDefinition != null
- && !qname.equals(IASLanguageConstants.Object);
- }
-
- protected boolean hasSuperCall(IScopedNode node)
- {
- for (int i = node.getChildCount() - 1; i > -1; i--)
- {
- IASNode cnode = node.getChild(i);
- if (cnode.getNodeID() == ASTNodeID.FunctionCallID
- && cnode.getChild(0).getNodeID() == ASTNodeID.SuperID)
- return true;
- }
-
- return false;
- }
-
- protected static boolean hasBody(IFunctionNode node)
- {
- IScopedNode scope = node.getScopedNode();
- return scope.getChildCount() > 0;
- }
-
protected void emitObjectDefineProperty(IAccessorNode node)
{
/*
@@ -1139,29 +1066,4 @@ public class JSGoogEmitter extends JSEmitter implements IJSGoogEmitter
if (ASNodeUtils.hasParenOpen(node))
write(ASEmitterTokens.PAREN_CLOSE);
}
-
- //--------------------------------------------------------------------------
- //
- //--------------------------------------------------------------------------
-
- private List<String> resolveImports(ITypeDefinition type)
- {
- ArrayList<String> list = new ArrayList<String>();
- IScopedNode scopeNode = type.getContainedScope().getScopeNode();
- if (scopeNode != null)
- {
- scopeNode.getAllImports(list);
- }
- else
- {
- // MXML
- ClassDefinition cdefinition = (ClassDefinition) type;
- String[] implicitImports = cdefinition.getImplicitImports();
- for (String imp : implicitImports)
- {
- list.add(imp);
- }
- }
- return list;
- }
}
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/f4404cef/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 07da145..4f8482f 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
@@ -21,9 +21,11 @@ package org.apache.flex.compiler.internal.codegen.js.utils;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import org.apache.flex.compiler.constants.IASLanguageConstants;
@@ -50,6 +52,7 @@ import org.apache.flex.compiler.tree.as.IDefinitionNode;
import org.apache.flex.compiler.tree.as.IFunctionNode;
import org.apache.flex.compiler.tree.as.IIdentifierNode;
import org.apache.flex.compiler.tree.as.IPackageNode;
+import org.apache.flex.compiler.tree.as.IParameterNode;
import org.apache.flex.compiler.tree.as.IScopedNode;
import org.apache.flex.compiler.tree.as.ITypeNode;
@@ -167,13 +170,50 @@ public class EmitterUtils
return (tnode != null) ? tnode.getDefinition() : null;
}
+ public static IParameterNode getRest(IParameterNode[] nodes)
+ {
+ for (IParameterNode node : nodes)
+ {
+ if (node.isRest())
+ return node;
+ }
+
+ return null;
+ }
+
+ public static Map<Integer, IParameterNode> getDefaults(
+ IParameterNode[] nodes)
+ {
+ Map<Integer, IParameterNode> result = new HashMap<Integer, IParameterNode>();
+ int i = 0;
+ boolean hasDefaults = false;
+ for (IParameterNode node : nodes)
+ {
+ if (node.hasDefaultValue())
+ {
+ hasDefaults = true;
+ result.put(i, node);
+ }
+ else
+ {
+ result.put(i, null);
+ }
+ i++;
+ }
+
+ if (!hasDefaults)
+ return null;
+
+ return result;
+ }
+
public static boolean writeThis(ICompilerProject project,
JSSessionModel model, IIdentifierNode node)
{
IClassNode classNode = (IClassNode) node
.getAncestorOfType(IClassNode.class);
- IDefinition nodeDef = ((IIdentifierNode) node).resolve(project);
+ IDefinition nodeDef = node.resolve(project);
IASNode parentNode = node.getParent();
ASTNodeID parentNodeId = parentNode.getNodeID();
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/f4404cef/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/vf2js/JSVF2JSEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/vf2js/JSVF2JSEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/vf2js/JSVF2JSEmitter.java
index dab4472..b436b8a 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/vf2js/JSVF2JSEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/vf2js/JSVF2JSEmitter.java
@@ -267,7 +267,7 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
boolean isLocal = false;
if (node.getFunctionClassification() == IFunctionDefinition.FunctionClassification.LOCAL)
isLocal = true;
- if (hasBody(node) && !isStatic && !isLocal)
+ if (EmitterUtils.hasBody(node) && !isStatic && !isLocal)
emitSelfReference(node);
emitRestParameterCodeBlock(node);
@@ -280,7 +280,7 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
}
if (node.isConstructor() && hasSuperClass(node)
- && !hasSuperCall(node.getScopedNode()))
+ && !EmitterUtils.hasSuperCall(node.getScopedNode()))
emitSuperCall(node, JSSessionModel.CONSTRUCTOR_FULL);
}
@@ -578,7 +578,6 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
}
}
- @Override
protected boolean hasSuperClass(IDefinitionNode node)
{
ICompilerProject project = getWalker().getProject();
@@ -1182,13 +1181,14 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
if (pnodes.length == 0)
return;
- Map<Integer, IParameterNode> defaults = getDefaults(pnodes);
+ Map<Integer, IParameterNode> defaults = EmitterUtils
+ .getDefaults(pnodes);
if (defaults != null)
{
final StringBuilder code = new StringBuilder();
- if (!hasBody(node))
+ if (!EmitterUtils.hasBody(node))
{
indentPush();
write(JSFlexJSEmitterTokens.INDENT);
@@ -1231,7 +1231,7 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
write(code.toString());
- if (i == n - 1 && !hasBody(node))
+ if (i == n - 1 && !EmitterUtils.hasBody(node))
indentPop();
writeNewline();
[3/3] git commit: [flex-falcon] [refs/heads/develop] - - Refactored
interface to emitter. - Refactored var dec to emitter. - Refactored method to
emitter.
Posted by ms...@apache.org.
- Refactored interface to emitter.
- Refactored var dec to emitter.
- Refactored method to emitter.
Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/c9535aa1
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/c9535aa1
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/c9535aa1
Branch: refs/heads/develop
Commit: c9535aa13ec6553340e8e315fda670761dd8bcbc
Parents: f4404ce
Author: Michael Schmalle <ms...@apache.org>
Authored: Sun May 31 15:08:04 2015 -0400
Committer: Michael Schmalle <ms...@apache.org>
Committed: Sun May 31 15:08:04 2015 -0400
----------------------------------------------------------------------
.../compiler/internal/codegen/as/ASEmitter.java | 4 +-
.../internal/codegen/js/JSSessionModel.java | 7 ++
.../codegen/js/flexjs/JSFlexJSEmitter.java | 104 +++++++++++------
.../internal/codegen/js/goog/JSGoogEmitter.java | 71 ++++++------
.../codegen/js/jx/InterfaceEmitter.java | 112 ++++++++++++++++++
.../internal/codegen/js/jx/MethodEmitter.java | 114 +++++++++++++++++++
.../codegen/js/jx/VarDeclarationEmitter.java | 88 ++++++++++++++
.../internal/codegen/js/utils/EmitterUtils.java | 6 +
.../codegen/js/vf2js/JSVF2JSEmitter.java | 4 +-
9 files changed, 437 insertions(+), 73 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c9535aa1/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASEmitter.java
index 7f5f46f..d16081d 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/as/ASEmitter.java
@@ -699,7 +699,7 @@ public class ASEmitter implements IASEmitter, IEmitter
}
}
- protected void emitMemberKeyword(IDefinitionNode node)
+ public void emitMemberKeyword(IDefinitionNode node)
{
if (node instanceof IFunctionNode)
{
@@ -717,7 +717,7 @@ public class ASEmitter implements IASEmitter, IEmitter
getWalker().walk(node.getNameExpressionNode());
}
- protected void emitDeclarationName(IDefinitionNode node)
+ public void emitDeclarationName(IDefinitionNode node)
{
getWalker().walk(node.getNameExpressionNode());
}
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c9535aa1/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 48079fa..8bb30b4 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
@@ -46,6 +46,8 @@ public class JSSessionModel
private HashMap<String, PropertyNodes> propertyMap = new HashMap<String, PropertyNodes>();
+ private List<String> interfacePropertyMap = new ArrayList<String>();
+
private HashMap<String, PropertyNodes> staticPropertyMap = new HashMap<String, PropertyNodes>();
private ArrayList<String> bindableVars = new ArrayList<String>();
@@ -67,6 +69,11 @@ public class JSSessionModel
return propertyMap;
}
+ public List<String> getInterfacePropertyMap()
+ {
+ return interfacePropertyMap;
+ }
+
public HashMap<String, PropertyNodes> getStaticPropertyMap()
{
return staticPropertyMap;
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c9535aa1/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 d9b1c4e..4463d0a 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
@@ -41,10 +41,13 @@ import org.apache.flex.compiler.internal.codegen.js.jx.FieldEmitter;
import org.apache.flex.compiler.internal.codegen.js.jx.ForEachEmitter;
import org.apache.flex.compiler.internal.codegen.js.jx.FunctionCallEmitter;
import org.apache.flex.compiler.internal.codegen.js.jx.IdentifierEmitter;
+import org.apache.flex.compiler.internal.codegen.js.jx.InterfaceEmitter;
import org.apache.flex.compiler.internal.codegen.js.jx.MemberAccessEmitter;
+import org.apache.flex.compiler.internal.codegen.js.jx.MethodEmitter;
import org.apache.flex.compiler.internal.codegen.js.jx.PackageFooterEmitter;
import org.apache.flex.compiler.internal.codegen.js.jx.PackageHeaderEmitter;
import org.apache.flex.compiler.internal.codegen.js.jx.SuperCallEmitter;
+import org.apache.flex.compiler.internal.codegen.js.jx.VarDeclarationEmitter;
import org.apache.flex.compiler.internal.tree.as.FunctionNode;
import org.apache.flex.compiler.internal.tree.as.RegExpLiteralNode;
import org.apache.flex.compiler.internal.tree.as.SetterNode;
@@ -60,6 +63,7 @@ import org.apache.flex.compiler.tree.as.IFunctionCallNode;
import org.apache.flex.compiler.tree.as.IFunctionNode;
import org.apache.flex.compiler.tree.as.IGetterNode;
import org.apache.flex.compiler.tree.as.IIdentifierNode;
+import org.apache.flex.compiler.tree.as.IInterfaceNode;
import org.apache.flex.compiler.tree.as.ILiteralNode;
import org.apache.flex.compiler.tree.as.ILiteralNode.LiteralType;
import org.apache.flex.compiler.tree.as.IMemberAccessExpressionNode;
@@ -85,8 +89,13 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
private BindableEmitter bindableEmitter;
private ClassEmitter classEmitter;
+ private InterfaceEmitter interfaceEmitter;
+
private FieldEmitter fieldEmitter;
+ private VarDeclarationEmitter varDeclarationEmitter;
private AccessorEmitter accessorEmitter;
+ private MethodEmitter methodEmitter;
+
private FunctionCallEmitter functionCallEmitter;
private SuperCallEmitter superCallEmitter;
private ForEachEmitter forEachEmitter;
@@ -129,8 +138,13 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
bindableEmitter = new BindableEmitter(this);
classEmitter = new ClassEmitter(this);
+ interfaceEmitter = new InterfaceEmitter(this);
+
fieldEmitter = new FieldEmitter(this);
+ varDeclarationEmitter = new VarDeclarationEmitter(this);
accessorEmitter = new AccessorEmitter(this);
+ methodEmitter = new MethodEmitter(this);
+
functionCallEmitter = new FunctionCallEmitter(this);
superCallEmitter = new SuperCallEmitter(this);
forEachEmitter = new ForEachEmitter(this);
@@ -156,7 +170,7 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
}
@Override
- protected void emitMemberName(IDefinitionNode node)
+ public void emitMemberName(IDefinitionNode node)
{
write(node.getName());
}
@@ -170,6 +184,32 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
return name;
}
+ //--------------------------------------------------------------------------
+ // Package Level
+ //--------------------------------------------------------------------------
+
+ @Override
+ public void emitPackageHeader(IPackageDefinition definition)
+ {
+ packageHeaderEmitter.emit(definition);
+ }
+
+ @Override
+ public void emitPackageHeaderContents(IPackageDefinition definition)
+ {
+ packageHeaderEmitter.emitContents(definition);
+ }
+
+ @Override
+ public void emitPackageFooter(IPackageDefinition definition)
+ {
+ packageFooterEmitter.emit(definition);
+ }
+
+ //--------------------------------------------------------------------------
+ // Class
+ //--------------------------------------------------------------------------
+
@Override
public void emitClass(IClassNode node)
{
@@ -177,18 +217,48 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
}
@Override
+ public void emitInterface(IInterfaceNode node)
+ {
+ interfaceEmitter.emit(node);
+ }
+
+ @Override
public void emitField(IVariableNode node)
{
fieldEmitter.emit(node);
}
@Override
+ public void emitVarDeclaration(IVariableNode node)
+ {
+ varDeclarationEmitter.emit(node);
+ }
+
+ @Override
public void emitAccessors(IAccessorNode node)
{
accessorEmitter.emit(node);
}
@Override
+ public void emitGetAccessor(IGetterNode node)
+ {
+ accessorEmitter.emitGet(node);
+ }
+
+ @Override
+ public void emitSetAccessor(ISetterNode node)
+ {
+ accessorEmitter.emitSet(node);
+ }
+
+ @Override
+ public void emitMethod(IFunctionNode node)
+ {
+ methodEmitter.emit(node);
+ }
+
+ @Override
public void emitFunctionCall(IFunctionCallNode node)
{
functionCallEmitter.emit(node);
@@ -208,7 +278,6 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
@Override
public void emitIdentifier(IIdentifierNode node)
{
- // TODO (mschmalle) remove when project field is removed
identifierEmitter.emit(node);
}
@@ -235,23 +304,10 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
@Override
public void emitMemberAccessExpression(IMemberAccessExpressionNode node)
{
- // TODO (mschmalle) remove when project field is removed
memberAccessEmitter.emit(node);
}
@Override
- public void emitGetAccessor(IGetterNode node)
- {
- accessorEmitter.emitGet(node);
- }
-
- @Override
- public void emitSetAccessor(ISetterNode node)
- {
- accessorEmitter.emitSet(node);
- }
-
- @Override
protected void emitObjectDefineProperty(IAccessorNode node)
{
//TODO: ajh is this method needed anymore?
@@ -380,24 +436,6 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
}
@Override
- public void emitPackageHeader(IPackageDefinition definition)
- {
- packageHeaderEmitter.emit(definition);
- }
-
- @Override
- public void emitPackageHeaderContents(IPackageDefinition definition)
- {
- packageHeaderEmitter.emitContents(definition);
- }
-
- @Override
- public void emitPackageFooter(IPackageDefinition definition)
- {
- packageFooterEmitter.emit(definition);
- }
-
- @Override
public void emitForEachLoop(IForLoopNode node)
{
forEachEmitter.emit(node);
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c9535aa1/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java
index 7dd7cdb..40453ec 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java
@@ -95,16 +95,17 @@ public class JSGoogEmitter extends JSEmitter implements IJSGoogEmitter
return docEmitter;
}
- //--------------------------------------------------------------------------
- //
- //--------------------------------------------------------------------------
-
@Override
public String formatQualifiedName(String name)
{
return name;
}
+ //--------------------------------------------------------------------------
+ // Package Level
+ //--------------------------------------------------------------------------
+
+ // XXX DEAD
@Override
public void emitPackageHeader(IPackageDefinition definition)
{
@@ -124,6 +125,7 @@ public class JSGoogEmitter extends JSEmitter implements IJSGoogEmitter
writeNewline();
}
+ // XXX DEAD
@Override
public void emitPackageHeaderContents(IPackageDefinition definition)
{
@@ -160,6 +162,7 @@ public class JSGoogEmitter extends JSEmitter implements IJSGoogEmitter
}
}
+ // XXX DEAD
@Override
public void emitPackageContents(IPackageDefinition definition)
{
@@ -175,15 +178,17 @@ public class JSGoogEmitter extends JSEmitter implements IJSGoogEmitter
}
}
+ // XXX DEAD
@Override
public void emitPackageFooter(IPackageDefinition definition)
{
}
//--------------------------------------------------------------------------
- //
+ // Class
//--------------------------------------------------------------------------
+ // XXX DEAD
@Override
public void emitClass(IClassNode node)
{
@@ -253,6 +258,7 @@ public class JSGoogEmitter extends JSEmitter implements IJSGoogEmitter
}
}
+ // XXX Dead [InterfaceEmitter]
@Override
public void emitInterface(IInterfaceNode node)
{
@@ -315,6 +321,7 @@ public class JSGoogEmitter extends JSEmitter implements IJSGoogEmitter
}
}
+ // XXX Dead
@Override
public void emitField(IVariableNode node)
{
@@ -364,6 +371,7 @@ public class JSGoogEmitter extends JSEmitter implements IJSGoogEmitter
}
}
+ // XXX Dead [VarDeclarationEmitter]
@Override
public void emitVarDeclaration(IVariableNode node)
{
@@ -406,19 +414,8 @@ public class JSGoogEmitter extends JSEmitter implements IJSGoogEmitter
}
}
- @Override
- public void emitGetAccessor(IGetterNode node)
- {
- emitObjectDefineProperty(node);
- }
-
- @Override
- public void emitSetAccessor(ISetterNode node)
- {
- emitObjectDefineProperty(node);
- }
-
- protected void emitAccessors(IAccessorNode node)
+ // XXX Dead
+ public void emitAccessors(IAccessorNode node)
{
String qname = node.getQualifiedName();
if (!propertyNames.contains(qname))
@@ -441,6 +438,21 @@ public class JSGoogEmitter extends JSEmitter implements IJSGoogEmitter
}
}
+ // XXX Dead
+ @Override
+ public void emitGetAccessor(IGetterNode node)
+ {
+ emitObjectDefineProperty(node);
+ }
+
+ // XXX Dead
+ @Override
+ public void emitSetAccessor(ISetterNode node)
+ {
+ emitObjectDefineProperty(node);
+ }
+
+ // XXX Dead [MethodEmitter]
@Override
public void emitMethod(IFunctionNode node)
{
@@ -453,7 +465,7 @@ public class JSGoogEmitter extends JSEmitter implements IJSGoogEmitter
boolean isConstructor = node.isConstructor();
- String qname = getTypeDefinition(node).getQualifiedName();
+ String qname = EmitterUtils.getTypeDefinition(node).getQualifiedName();
if (qname != null && !qname.equals(""))
{
write(formatQualifiedName(qname));
@@ -499,13 +511,14 @@ public class JSGoogEmitter extends JSEmitter implements IJSGoogEmitter
write(ASEmitterTokens.PAREN_OPEN);
write(formatQualifiedName(qname));
writeToken(ASEmitterTokens.COMMA);
- String sname = getSuperClassDefinition(node, project)
+ String sname = EmitterUtils.getSuperClassDefinition(node, project)
.getQualifiedName();
write(formatQualifiedName(sname));
write(ASEmitterTokens.PAREN_CLOSE);
}
}
+ // XXX Dead
@Override
public void emitFunctionCall(IFunctionCallNode node)
{
@@ -534,6 +547,7 @@ public class JSGoogEmitter extends JSEmitter implements IJSGoogEmitter
}
}
+ // XXX Dead
@Override
public void emitIdentifier(IIdentifierNode node)
{
@@ -836,7 +850,7 @@ public class JSGoogEmitter extends JSEmitter implements IJSGoogEmitter
}
@Override
- protected void emitAssignedValue(IExpressionNode node)
+ public void emitAssignedValue(IExpressionNode node)
{
if (node != null)
{
@@ -895,21 +909,6 @@ public class JSGoogEmitter extends JSEmitter implements IJSGoogEmitter
super(out);
}
- private static ITypeDefinition getTypeDefinition(IDefinitionNode node)
- {
- ITypeNode tnode = (ITypeNode) node.getAncestorOfType(ITypeNode.class);
- return (ITypeDefinition) tnode.getDefinition();
- }
-
- private static IClassDefinition getSuperClassDefinition(
- IDefinitionNode node, ICompilerProject project)
- {
- IClassDefinition parent = (IClassDefinition) node.getDefinition()
- .getParent();
- IClassDefinition superClass = parent.resolveBaseClass(project);
- return superClass;
- }
-
protected void emitObjectDefineProperty(IAccessorNode node)
{
/*
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c9535aa1/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/InterfaceEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/InterfaceEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/InterfaceEmitter.java
new file mode 100644
index 0000000..d12a3ba
--- /dev/null
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/InterfaceEmitter.java
@@ -0,0 +1,112 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.flex.compiler.internal.codegen.js.jx;
+
+import org.apache.flex.compiler.codegen.ISubEmitter;
+import org.apache.flex.compiler.codegen.js.IJSEmitter;
+import org.apache.flex.compiler.internal.codegen.as.ASEmitterTokens;
+import org.apache.flex.compiler.internal.codegen.js.JSEmitterTokens;
+import org.apache.flex.compiler.internal.codegen.js.JSSubEmitter;
+import org.apache.flex.compiler.internal.codegen.js.flexjs.JSFlexJSEmitter;
+import org.apache.flex.compiler.projects.ICompilerProject;
+import org.apache.flex.compiler.tree.ASTNodeID;
+import org.apache.flex.compiler.tree.as.IDefinitionNode;
+import org.apache.flex.compiler.tree.as.IFunctionNode;
+import org.apache.flex.compiler.tree.as.IInterfaceNode;
+
+public class InterfaceEmitter extends JSSubEmitter implements
+ ISubEmitter<IInterfaceNode>
+{
+
+ public InterfaceEmitter(IJSEmitter emitter)
+ {
+ super(emitter);
+ }
+
+ @Override
+ public void emit(IInterfaceNode node)
+ {
+ // TODO (mschmalle) will remove this cast as more things get abstracted
+ JSFlexJSEmitter fjs = (JSFlexJSEmitter) getEmitter();
+
+ ICompilerProject project = getWalker().getProject();
+
+ fjs.getDocEmitter().emitInterfaceDoc(node, project);
+
+ String qname = node.getQualifiedName();
+ if (qname != null && !qname.equals(""))
+ {
+ write(getEmitter().formatQualifiedName(qname));
+ write(ASEmitterTokens.SPACE);
+ writeToken(ASEmitterTokens.EQUAL);
+ write(ASEmitterTokens.FUNCTION);
+ write(ASEmitterTokens.PAREN_OPEN);
+ write(ASEmitterTokens.PAREN_CLOSE);
+ write(ASEmitterTokens.SPACE);
+ write(ASEmitterTokens.BLOCK_OPEN);
+ writeNewline();
+ write(ASEmitterTokens.BLOCK_CLOSE);
+ write(ASEmitterTokens.SEMICOLON);
+ }
+
+ final IDefinitionNode[] members = node.getAllMemberDefinitionNodes();
+ for (IDefinitionNode mnode : members)
+ {
+ boolean isAccessor = mnode.getNodeID() == ASTNodeID.GetterID
+ || mnode.getNodeID() == ASTNodeID.SetterID;
+
+ if (!isAccessor
+ || !getModel().getInterfacePropertyMap().contains(qname))
+ {
+ writeNewline();
+
+ write(getEmitter().formatQualifiedName(qname));
+ write(ASEmitterTokens.MEMBER_ACCESS);
+ write(JSEmitterTokens.PROTOTYPE);
+ write(ASEmitterTokens.MEMBER_ACCESS);
+ write(mnode.getQualifiedName());
+
+ if (isAccessor
+ && !getModel().getInterfacePropertyMap()
+ .contains(qname))
+ {
+ getModel().getInterfacePropertyMap().add(qname);
+ }
+ else
+ {
+ write(ASEmitterTokens.SPACE);
+ writeToken(ASEmitterTokens.EQUAL);
+ write(ASEmitterTokens.FUNCTION);
+
+ fjs.emitParameters(((IFunctionNode) mnode)
+ .getParameterNodes());
+
+ write(ASEmitterTokens.SPACE);
+ write(ASEmitterTokens.BLOCK_OPEN);
+ writeNewline();
+ write(ASEmitterTokens.BLOCK_CLOSE);
+ }
+
+ write(ASEmitterTokens.SEMICOLON);
+ }
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c9535aa1/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/MethodEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/MethodEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/MethodEmitter.java
new file mode 100644
index 0000000..5caa357
--- /dev/null
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/MethodEmitter.java
@@ -0,0 +1,114 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.flex.compiler.internal.codegen.js.jx;
+
+import java.util.ArrayList;
+
+import org.apache.flex.compiler.codegen.ISubEmitter;
+import org.apache.flex.compiler.codegen.js.IJSEmitter;
+import org.apache.flex.compiler.common.ASModifier;
+import org.apache.flex.compiler.internal.codegen.as.ASEmitterTokens;
+import org.apache.flex.compiler.internal.codegen.js.JSEmitterTokens;
+import org.apache.flex.compiler.internal.codegen.js.JSSessionModel;
+import org.apache.flex.compiler.internal.codegen.js.JSSubEmitter;
+import org.apache.flex.compiler.internal.codegen.js.flexjs.JSFlexJSEmitter;
+import org.apache.flex.compiler.internal.codegen.js.goog.JSGoogEmitterTokens;
+import org.apache.flex.compiler.internal.codegen.js.utils.EmitterUtils;
+import org.apache.flex.compiler.internal.tree.as.FunctionNode;
+import org.apache.flex.compiler.problems.ICompilerProblem;
+import org.apache.flex.compiler.projects.ICompilerProject;
+import org.apache.flex.compiler.tree.as.IFunctionNode;
+
+public class MethodEmitter extends JSSubEmitter implements
+ ISubEmitter<IFunctionNode>
+{
+ public MethodEmitter(IJSEmitter emitter)
+ {
+ super(emitter);
+ }
+
+ @Override
+ public void emit(IFunctionNode node)
+ {
+ // TODO (mschmalle) will remove this cast as more things get abstracted
+ JSFlexJSEmitter fjs = (JSFlexJSEmitter) getEmitter();
+
+ FunctionNode fn = (FunctionNode) node;
+ fn.parseFunctionBody(new ArrayList<ICompilerProblem>());
+
+ ICompilerProject project = getWalker().getProject();
+
+ fjs.getDocEmitter().emitMethodDoc(node, project);
+
+ boolean isConstructor = node.isConstructor();
+
+ String qname = EmitterUtils.getTypeDefinition(node).getQualifiedName();
+ if (qname != null && !qname.equals(""))
+ {
+ write(fjs.formatQualifiedName(qname));
+ if (!isConstructor)
+ {
+ write(ASEmitterTokens.MEMBER_ACCESS);
+ if (!fn.hasModifier(ASModifier.STATIC))
+ {
+ write(JSEmitterTokens.PROTOTYPE);
+ write(ASEmitterTokens.MEMBER_ACCESS);
+ }
+ }
+ }
+
+ if (!isConstructor)
+ fjs.emitMemberName(node);
+
+ write(ASEmitterTokens.SPACE);
+ writeToken(ASEmitterTokens.EQUAL);
+ write(ASEmitterTokens.FUNCTION);
+
+ fjs.emitParameters(node.getParameterNodes());
+
+ boolean hasSuperClass = EmitterUtils.hasSuperClass(project, node);
+
+ if (isConstructor && node.getScopedNode().getChildCount() == 0)
+ {
+ write(ASEmitterTokens.SPACE);
+ write(ASEmitterTokens.BLOCK_OPEN);
+ if (hasSuperClass)
+ fjs.emitSuperCall(node, JSSessionModel.CONSTRUCTOR_EMPTY);
+ writeNewline();
+ write(ASEmitterTokens.BLOCK_CLOSE);
+ }
+
+ if (!isConstructor || node.getScopedNode().getChildCount() > 0)
+ fjs.emitMethodScope(node.getScopedNode());
+
+ if (isConstructor && hasSuperClass)
+ {
+ writeNewline(ASEmitterTokens.SEMICOLON);
+ write(JSGoogEmitterTokens.GOOG_INHERITS);
+ write(ASEmitterTokens.PAREN_OPEN);
+ write(fjs.formatQualifiedName(qname));
+ writeToken(ASEmitterTokens.COMMA);
+ String sname = EmitterUtils.getSuperClassDefinition(node, project)
+ .getQualifiedName();
+ write(fjs.formatQualifiedName(sname));
+ write(ASEmitterTokens.PAREN_CLOSE);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c9535aa1/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/VarDeclarationEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/VarDeclarationEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/VarDeclarationEmitter.java
new file mode 100644
index 0000000..8b57ea9
--- /dev/null
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/VarDeclarationEmitter.java
@@ -0,0 +1,88 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.flex.compiler.internal.codegen.js.jx;
+
+import org.apache.flex.compiler.codegen.ISubEmitter;
+import org.apache.flex.compiler.codegen.js.IJSEmitter;
+import org.apache.flex.compiler.definitions.IDefinition;
+import org.apache.flex.compiler.internal.codegen.as.ASEmitterTokens;
+import org.apache.flex.compiler.internal.codegen.js.JSSubEmitter;
+import org.apache.flex.compiler.internal.codegen.js.flexjs.JSFlexJSEmitter;
+import org.apache.flex.compiler.internal.tree.as.ChainedVariableNode;
+import org.apache.flex.compiler.tree.as.IASNode;
+import org.apache.flex.compiler.tree.as.IEmbedNode;
+import org.apache.flex.compiler.tree.as.IExpressionNode;
+import org.apache.flex.compiler.tree.as.IVariableNode;
+
+public class VarDeclarationEmitter extends JSSubEmitter implements
+ ISubEmitter<IVariableNode>
+{
+
+ public VarDeclarationEmitter(IJSEmitter emitter)
+ {
+ super(emitter);
+ }
+
+ @Override
+ public void emit(IVariableNode node)
+ {
+ // TODO (mschmalle) will remove this cast as more things get abstracted
+ JSFlexJSEmitter fjs = (JSFlexJSEmitter) getEmitter();
+
+ if (!(node instanceof ChainedVariableNode) && !node.isConst())
+ {
+ fjs.emitMemberKeyword(node);
+ }
+
+ IExpressionNode avnode = node.getAssignedValueNode();
+ if (avnode != null)
+ {
+ IDefinition def = avnode.resolveType(getWalker().getProject());
+
+ String opcode = avnode.getNodeID().getParaphrase();
+ if (opcode != "AnonymousFunction")
+ fjs.getDocEmitter().emitVarDoc(node, def);
+ }
+ else
+ {
+ fjs.getDocEmitter().emitVarDoc(node, null);
+ }
+
+ fjs.emitDeclarationName(node);
+ if (!(avnode instanceof IEmbedNode))
+ fjs.emitAssignedValue(avnode);
+
+ if (!(node instanceof ChainedVariableNode))
+ {
+ // check for chained variables
+ int len = node.getChildCount();
+ for (int i = 0; i < len; i++)
+ {
+ IASNode child = node.getChild(i);
+ if (child instanceof ChainedVariableNode)
+ {
+ writeToken(ASEmitterTokens.COMMA);
+ fjs.emitVarDeclaration((IVariableNode) child);
+ }
+ }
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c9535aa1/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 4f8482f..8a97565 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
@@ -83,6 +83,12 @@ public class EmitterUtils
return null;
}
+ public static ITypeDefinition getTypeDefinition(IDefinitionNode node)
+ {
+ ITypeNode tnode = (ITypeNode) node.getAncestorOfType(ITypeNode.class);
+ return (ITypeDefinition) tnode.getDefinition();
+ }
+
public static boolean isSameClass(IDefinition pdef, IDefinition thisClass,
ICompilerProject project)
{
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/c9535aa1/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/vf2js/JSVF2JSEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/vf2js/JSVF2JSEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/vf2js/JSVF2JSEmitter.java
index b436b8a..a25f98e 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/vf2js/JSVF2JSEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/vf2js/JSVF2JSEmitter.java
@@ -369,7 +369,7 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
}
@Override
- protected void emitMemberKeyword(IDefinitionNode node)
+ public void emitMemberKeyword(IDefinitionNode node)
{
if (node instanceof IFunctionNode)
{
@@ -496,7 +496,7 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
}
@Override
- protected void emitAccessors(IAccessorNode node)
+ public void emitAccessors(IAccessorNode node)
{
if (node.getNodeID() == ASTNodeID.GetterID)
{