You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by cd...@apache.org on 2016/04/11 15:59:29 UTC
[02/50] git commit: [flex-falcon]
[refs/heads/feature/maven-migration] - cleaned up some parts of the source
map to include things like commas and parentheses,
moved assignment operator out of assigned value because it's not in the source
location of tha
cleaned up some parts of the source map to include things like commas and parentheses, moved assignment operator out of assigned value because it's not in the source location of that node, but before it (and that made it possible to source map it)
Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/109b56b8
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/109b56b8
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/109b56b8
Branch: refs/heads/feature/maven-migration
Commit: 109b56b894ac8572dbb1e4251641a7f87b9df065
Parents: ad6f1d0
Author: Josh Tynjala <jo...@apache.org>
Authored: Sat Mar 26 17:36:48 2016 -0700
Committer: Josh Tynjala <jo...@apache.org>
Committed: Sat Mar 26 17:36:48 2016 -0700
----------------------------------------------------------------------
.../codegen/js/goog/TestGoogGlobalClasses.java | 2 +-
.../js/goog/TestGoogGlobalFunctions.java | 2 +-
.../compiler/internal/codegen/as/ASEmitter.java | 25 +++++--
.../compiler/internal/codegen/js/JSEmitter.java | 49 ++++++++++++--
.../internal/codegen/js/JSEmitterTokens.java | 3 +-
.../codegen/js/flexjs/JSFlexJSEmitter.java | 7 --
.../internal/codegen/js/goog/JSGoogEmitter.java | 70 +++++++++-----------
.../codegen/js/jx/FunctionCallEmitter.java | 6 +-
.../codegen/js/jx/VarDeclarationEmitter.java | 8 ++-
.../codegen/js/vf2js/JSVF2JSEmitter.java | 6 +-
10 files changed, 114 insertions(+), 64 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/109b56b8/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/goog/TestGoogGlobalClasses.java
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/goog/TestGoogGlobalClasses.java b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/goog/TestGoogGlobalClasses.java
index 1bbdf55..fc9e523 100644
--- a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/goog/TestGoogGlobalClasses.java
+++ b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/goog/TestGoogGlobalClasses.java
@@ -271,7 +271,7 @@ public class TestGoogGlobalClasses extends TestGlobalClasses
{
IVariableNode node = getVariable("var a:Vector.<String> = new Vector.<String>(['Hello', 'World']);");
asBlockWalker.visitVariable(node);
- assertOut("var /** @type {Vector.<string>} */ a = new Vector(['Hello', 'World'])");
+ assertOut("var /** @type {Vector.<string>} */ a = new Array(['Hello', 'World'])");
}
@Override
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/109b56b8/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/goog/TestGoogGlobalFunctions.java
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/goog/TestGoogGlobalFunctions.java b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/goog/TestGoogGlobalFunctions.java
index 79acf92..614edd5 100644
--- a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/goog/TestGoogGlobalFunctions.java
+++ b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/goog/TestGoogGlobalFunctions.java
@@ -209,7 +209,7 @@ public class TestGoogGlobalFunctions extends TestGlobalFunctions
{
IVariableNode node = getVariable("var a:Vector.<String> = Vector.<String>(['Hello', 'World']);");
asBlockWalker.visitVariable(node);
- assertOut("var /** @type {Vector.<string>} */ a = Vector(['Hello', 'World'])");
+ assertOut("var /** @type {Vector.<string>} */ a = Array(['Hello', 'World'])");
}
@Override
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/109b56b8/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 14ae6c5..47f633b 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
@@ -523,7 +523,14 @@ public class ASEmitter implements IASEmitter, IEmitter
emitDeclarationName(node);
emitType(node.getVariableTypeNode());
- emitAssignedValue(node.getAssignedValueNode());
+
+ IExpressionNode avnode = node.getAssignedValueNode();
+ if (avnode != null)
+ {
+ write(ASEmitterTokens.SPACE);
+ writeToken(ASEmitterTokens.EQUAL);
+ emitAssignedValue(avnode);
+ }
if (!(node instanceof ChainedVariableNode))
{
@@ -570,7 +577,14 @@ public class ASEmitter implements IASEmitter, IEmitter
emitMemberName(node);
emitType(node.getVariableTypeNode());
- emitAssignedValue(node.getAssignedValueNode());
+
+ IExpressionNode avnode = node.getAssignedValueNode();
+ if (avnode != null)
+ {
+ write(ASEmitterTokens.SPACE);
+ writeToken(ASEmitterTokens.EQUAL);
+ emitAssignedValue(avnode);
+ }
if (!(node instanceof ChainedVariableNode))
{
@@ -810,12 +824,11 @@ public class ASEmitter implements IASEmitter, IEmitter
protected void emitAssignedValue(IExpressionNode node)
{
- if (node != null)
+ if (node == null)
{
- write(ASEmitterTokens.SPACE);
- writeToken(ASEmitterTokens.EQUAL);
- getWalker().walk(node);
+ return;
}
+ getWalker().walk(node);
}
@Override
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/109b56b8/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSEmitter.java
index c830f73..d510230 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSEmitter.java
@@ -33,7 +33,6 @@ import org.apache.flex.compiler.internal.codegen.as.ASEmitter;
import org.apache.flex.compiler.internal.codegen.as.ASEmitterTokens;
import org.apache.flex.compiler.internal.codegen.js.utils.EmitterUtils;
import org.apache.flex.compiler.internal.projects.FlexJSProject;
-import org.apache.flex.compiler.internal.tree.as.ContainerNode;
import org.apache.flex.compiler.internal.tree.as.FunctionNode;
import org.apache.flex.compiler.tree.ASTNodeID;
import org.apache.flex.compiler.tree.as.IASNode;
@@ -44,11 +43,14 @@ import org.apache.flex.compiler.tree.as.IFunctionNode;
import org.apache.flex.compiler.tree.as.IFunctionObjectNode;
import org.apache.flex.compiler.tree.as.IKeywordNode;
import org.apache.flex.compiler.tree.as.ILiteralContainerNode;
+import org.apache.flex.compiler.tree.as.ILiteralNode;
import org.apache.flex.compiler.tree.as.INumericLiteralNode;
+import org.apache.flex.compiler.tree.as.IObjectLiteralValuePairNode;
import org.apache.flex.compiler.tree.as.IPackageNode;
import org.apache.flex.compiler.tree.as.IParameterNode;
import org.apache.flex.compiler.tree.as.IReturnNode;
import org.apache.flex.compiler.tree.as.ITypeNode;
+import org.apache.flex.compiler.tree.as.ITypedExpressionNode;
import org.apache.flex.compiler.tree.as.IVariableNode;
import org.apache.flex.compiler.visitor.IBlockWalker;
@@ -222,7 +224,7 @@ public class JSEmitter extends ASEmitter implements IJSEmitter
getWalker().walk(child);
if (i < len - 1)
{
- startMapping(node);
+ startMapping(node, child.getAbsoluteEnd() - node.getAbsoluteStart() + 1);
writeToken(ASEmitterTokens.COMMA);
endMapping(node);
}
@@ -230,27 +232,62 @@ public class JSEmitter extends ASEmitter implements IJSEmitter
if (postFix != null)
{
- startMapping(node);
+ startMapping(node, node.getAbsoluteEnd() - node.getAbsoluteStart());
write(postFix);
endMapping(node);
}
}
@Override
+ public void emitObjectLiteralValuePair(IObjectLiteralValuePairNode node)
+ {
+ ISourceLocation sourceLocationNode = (ISourceLocation) node;
+
+ IExpressionNode nameNode = node.getNameNode();
+ if (!(nameNode instanceof ILiteralNode))
+ {
+ startMapping(nameNode);
+ }
+ getWalker().walk(node.getNameNode());
+ if (!(nameNode instanceof ILiteralNode))
+ {
+ endMapping(nameNode);
+ }
+
+ startMapping(sourceLocationNode, nameNode.getAbsoluteEnd() - sourceLocationNode.getAbsoluteStart());
+ write(ASEmitterTokens.COLON);
+ endMapping(sourceLocationNode);
+
+ getWalker().walk(node.getValueNode());
+ }
+
+ @Override
public void emitReturn(IReturnNode node)
{
+ IExpressionNode rnode = node.getReturnValueNode();
+ boolean hasReturnValue = rnode != null && rnode.getNodeID() != ASTNodeID.NilID;
+
startMapping(node);
write(ASEmitterTokens.RETURN);
- endMapping(node);
- IExpressionNode rnode = node.getReturnValueNode();
- if (rnode != null && rnode.getNodeID() != ASTNodeID.NilID)
+ if (hasReturnValue)
{
write(ASEmitterTokens.SPACE);
+ }
+ endMapping(node);
+
+ if (hasReturnValue)
+ {
getWalker().walk(rnode);
}
}
@Override
+ public void emitTypedExpression(ITypedExpressionNode node)
+ {
+ write(JSEmitterTokens.ARRAY);
+ }
+
+ @Override
public void emitMemberKeyword(IDefinitionNode node)
{
IKeywordNode keywordNode = null;
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/109b56b8/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSEmitterTokens.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSEmitterTokens.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSEmitterTokens.java
index ab8d079..82935af 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSEmitterTokens.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/JSEmitterTokens.java
@@ -30,7 +30,8 @@ public enum JSEmitterTokens implements IEmitterTokens
DEFINE_PROPERTIES("defineProperties"),
INTERFACE("interface"),
PROTOTYPE("prototype"),
- SLICE("slice");
+ SLICE("slice"),
+ ARRAY("Array");
private String token;
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/109b56b8/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 94e1d5e..355250f 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
@@ -87,7 +87,6 @@ import org.apache.flex.compiler.tree.as.INamespaceNode;
import org.apache.flex.compiler.tree.as.IPackageNode;
import org.apache.flex.compiler.tree.as.IScopedNode;
import org.apache.flex.compiler.tree.as.ISetterNode;
-import org.apache.flex.compiler.tree.as.ITypedExpressionNode;
import org.apache.flex.compiler.tree.as.IUnaryOperatorNode;
import org.apache.flex.compiler.tree.as.IVariableNode;
import org.apache.flex.compiler.utils.ASNodeUtils;
@@ -622,12 +621,6 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
}
@Override
- public void emitTypedExpression(ITypedExpressionNode node)
- {
- write(JSGoogEmitterTokens.ARRAY);
- }
-
- @Override
public void emitIdentifier(IIdentifierNode node)
{
identifierEmitter.emit(node);
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/109b56b8/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 6e7d555..bc48f83 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
@@ -70,7 +70,6 @@ import org.apache.flex.compiler.tree.as.INamespaceAccessExpressionNode;
import org.apache.flex.compiler.tree.as.IParameterNode;
import org.apache.flex.compiler.tree.as.ISetterNode;
import org.apache.flex.compiler.tree.as.ITypeNode;
-import org.apache.flex.compiler.tree.as.ITypedExpressionNode;
import org.apache.flex.compiler.tree.as.IVariableExpressionNode;
import org.apache.flex.compiler.tree.as.IVariableNode;
import org.apache.flex.compiler.utils.ASNodeUtils;
@@ -422,8 +421,12 @@ public class JSGoogEmitter extends JSEmitter implements IJSGoogEmitter
}
emitDeclarationName(node);
- if (!(avnode instanceof IEmbedNode))
+ if (avnode != null && !(avnode instanceof IEmbedNode))
+ {
+ write(ASEmitterTokens.SPACE);
+ writeToken(ASEmitterTokens.EQUAL);
emitAssignedValue(avnode);
+ }
if (!(node instanceof ChainedVariableNode))
{
@@ -881,49 +884,42 @@ public class JSGoogEmitter extends JSEmitter implements IJSGoogEmitter
@Override
public void emitAssignedValue(IExpressionNode node)
{
- if (node != null)
+ if (node == null)
{
- write(ASEmitterTokens.SPACE);
- writeToken(ASEmitterTokens.EQUAL);
- IDefinition definition = node.resolve(getWalker().getProject());
- if (node.getNodeID() == ASTNodeID.ClassReferenceID)
+ return;
+ }
+ IDefinition definition = node.resolve(getWalker().getProject());
+ if (node.getNodeID() == ASTNodeID.ClassReferenceID)
+ {
+ write(definition.getQualifiedName());
+ }
+ else
+ {
+ // AJH need Language.bind here and maybe not require
+ // that the node is a MemberAccessExpression
+ if (definition instanceof FunctionDefinition &&
+ !((FunctionDefinition)definition).isStatic() &&
+ (!(definition instanceof AccessorDefinition)) &&
+ node instanceof MemberAccessExpressionNode)
{
- write(definition.getQualifiedName());
+ emitClosureStart();
+ getWalker().walk(node);
+ writeToken(ASEmitterTokens.COMMA);
+ getWalker().walk(((MemberAccessExpressionNode)node).getLeftOperandNode());
+ emitClosureEnd(((MemberAccessExpressionNode)node).getLeftOperandNode());
}
- else
+ else if (node.getNodeID() == ASTNodeID.XMLContentID)
{
- // AJH need Language.bind here and maybe not require
- // that the node is a MemberAccessExpression
- if (definition instanceof FunctionDefinition &&
- !((FunctionDefinition)definition).isStatic() &&
- (!(definition instanceof AccessorDefinition)) &&
- node instanceof MemberAccessExpressionNode)
- {
- emitClosureStart();
- getWalker().walk(node);
- writeToken(ASEmitterTokens.COMMA);
- getWalker().walk(((MemberAccessExpressionNode)node).getLeftOperandNode());
- emitClosureEnd(((MemberAccessExpressionNode)node).getLeftOperandNode());
- }
- else if (node.getNodeID() == ASTNodeID.XMLContentID)
- {
- write("new XML");
- writeToken(ASEmitterTokens.PAREN_OPEN);
- getWalker().walk(node);
- writeToken(ASEmitterTokens.PAREN_CLOSE);
- }
- else
- getWalker().walk(node);
+ write("new XML");
+ writeToken(ASEmitterTokens.PAREN_OPEN);
+ getWalker().walk(node);
+ writeToken(ASEmitterTokens.PAREN_CLOSE);
}
+ else
+ getWalker().walk(node);
}
}
- @Override
- public void emitTypedExpression(ITypedExpressionNode node)
- {
- getWalker().walk(node.getCollectionNode());
- }
-
// XXX Dead
@Override
public void emitForEachLoop(IForLoopNode node)
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/109b56b8/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/FunctionCallEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/FunctionCallEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/FunctionCallEmitter.java
index 5f590e1..9c4d225 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/FunctionCallEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/FunctionCallEmitter.java
@@ -104,16 +104,16 @@ public class FunctionCallEmitter extends JSSubEmitter implements ISubEmitter<IFu
if (node.isNewExpression())
{
def = node.resolveCalledExpression(getProject());
+ IExpressionNode nameNode = node.getNameNode();
// all new calls to a class should be fully qualified names
if (def instanceof ClassDefinition)
{
- getEmitter().startMapping(node);
+ getEmitter().startMapping(nameNode);
write(getEmitter().formatQualifiedName(def.getQualifiedName()));
- getEmitter().endMapping(node);
+ getEmitter().endMapping(nameNode);
}
else
{
- IExpressionNode nameNode = node.getNameNode();
// wrap "new someFunctionCall(args)" in parens so the
// function call gets parsed and evaluated before new
// otherwise it just looks like any other "new function"
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/109b56b8/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
index b945282..3829b68 100644
--- 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
@@ -79,8 +79,14 @@ public class VarDeclarationEmitter extends JSSubEmitter implements
}
fjs.emitDeclarationName(node);
- if (!(avnode instanceof IEmbedNode))
+ if (avnode != null && !(avnode instanceof IEmbedNode))
+ {
+ getEmitter().startMapping(node, node.getVariableTypeNode().getEnd() - node.getStart());
+ write(ASEmitterTokens.SPACE);
+ writeToken(ASEmitterTokens.EQUAL);
+ getEmitter().endMapping(node);
fjs.emitAssignedValue(avnode);
+ }
if (!(node instanceof ChainedVariableNode))
{
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/109b56b8/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 fceccc2..0eb2a78 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
@@ -350,8 +350,12 @@ public class JSVF2JSEmitter extends JSGoogEmitter implements IJSVF2JSEmitter
}
emitDeclarationName(node);
- if (!(avnode instanceof IEmbedNode))
+ if (avnode != null && !(avnode instanceof IEmbedNode))
+ {
+ write(ASEmitterTokens.SPACE);
+ writeToken(ASEmitterTokens.EQUAL);
emitAssignedValue(avnode);
+ }
if (!(node instanceof ChainedVariableNode))
{