You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by jo...@apache.org on 2016/04/06 01:56:23 UTC
[05/33] git commit: [flex-falcon] [refs/heads/develop] - source map
improvements for as/is/casting, binary operators, class fields and methods,
object/array literals, and better names field in the source map
source map improvements for as/is/casting, binary operators, class fields and methods, object/array literals, and better names field in the source map
Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/ad6f1d04
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/ad6f1d04
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/ad6f1d04
Branch: refs/heads/develop
Commit: ad6f1d04d19284515305353c730ef2c77d4e4fd6
Parents: 4b3f7be
Author: Josh Tynjala <jo...@apache.org>
Authored: Sat Mar 26 15:37:42 2016 -0700
Committer: Josh Tynjala <jo...@apache.org>
Committed: Sat Mar 26 15:37:42 2016 -0700
----------------------------------------------------------------------
.../flex/compiler/codegen/js/IJSEmitter.java | 3 +
.../compiler/internal/codegen/js/JSEmitter.java | 140 +++++++++++++++----
.../codegen/js/flexjs/JSFlexJSEmitter.java | 4 +-
.../internal/codegen/js/jx/AsIsEmitter.java | 46 +++++-
.../codegen/js/jx/BinaryOperatorEmitter.java | 5 +-
.../internal/codegen/js/jx/ClassEmitter.java | 4 +
.../internal/codegen/js/jx/FieldEmitter.java | 8 +-
.../codegen/js/jx/FunctionCallEmitter.java | 4 +-
.../internal/codegen/js/jx/MethodEmitter.java | 20 ++-
.../codegen/js/jx/PackageFooterEmitter.java | 1 +
.../codegen/js/jx/PackageHeaderEmitter.java | 2 +
11 files changed, 189 insertions(+), 48 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/ad6f1d04/compiler.jx/src/org/apache/flex/compiler/codegen/js/IJSEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/codegen/js/IJSEmitter.java b/compiler.jx/src/org/apache/flex/compiler/codegen/js/IJSEmitter.java
index f660fc3..6aa7f61 100644
--- a/compiler.jx/src/org/apache/flex/compiler/codegen/js/IJSEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/codegen/js/IJSEmitter.java
@@ -45,7 +45,10 @@ public interface IJSEmitter extends IASEmitter
String formatQualifiedName(String name);
void startMapping(ISourceLocation node);
+ void startMapping(ISourceLocation node, int startOffset);
void endMapping(ISourceLocation node);
+ void pushSourceMapName(ISourceLocation node);
+ void popSourceMapName();
void emitSourceMapDirective(ITypeNode node);
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/ad6f1d04/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 7e29a08..c830f73 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
@@ -22,33 +22,38 @@ package org.apache.flex.compiler.internal.codegen.js;
import java.io.FilterWriter;
import java.util.ArrayList;
import java.util.List;
+import java.util.Stack;
-import com.google.debugging.sourcemap.FilePosition;
import org.apache.flex.compiler.clients.JSConfiguration;
import org.apache.flex.compiler.codegen.js.IJSEmitter;
import org.apache.flex.compiler.common.ASModifier;
import org.apache.flex.compiler.common.ISourceLocation;
-import org.apache.flex.compiler.definitions.IClassDefinition;
import org.apache.flex.compiler.definitions.ITypeDefinition;
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;
+import org.apache.flex.compiler.tree.as.IContainerNode;
import org.apache.flex.compiler.tree.as.IDefinitionNode;
import org.apache.flex.compiler.tree.as.IExpressionNode;
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.INumericLiteralNode;
+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.IVariableNode;
import org.apache.flex.compiler.visitor.IBlockWalker;
+import com.google.debugging.sourcemap.FilePosition;
+
/**
* @author Michael Schmalle
*/
@@ -64,6 +69,8 @@ public class JSEmitter extends ASEmitter implements IJSEmitter
private SourceMapMapping lastMapping;
+ private Stack<String> nameStack = new Stack<String>();
+
private List<SourceMapMapping> sourceMapMappings;
public List<SourceMapMapping> getSourceMapMappings()
@@ -174,6 +181,62 @@ public class JSEmitter extends ASEmitter implements IJSEmitter
}
@Override
+ public void emitLiteralContainer(ILiteralContainerNode node)
+ {
+ final IContainerNode cnode = node.getContentsNode();
+ final IContainerNode.ContainerType type = cnode.getContainerType();
+ String preFix = null;
+ String postFix = null;
+
+ if (type == IContainerNode.ContainerType.BRACES)
+ {
+ preFix = ASEmitterTokens.BLOCK_OPEN.getToken();
+ postFix = ASEmitterTokens.BLOCK_CLOSE.getToken();
+ }
+ else if (type == IContainerNode.ContainerType.BRACKETS)
+ {
+ preFix = ASEmitterTokens.SQUARE_OPEN.getToken();
+ postFix = ASEmitterTokens.SQUARE_CLOSE.getToken();
+ }
+ else if (type == IContainerNode.ContainerType.IMPLICIT)
+ {
+ // nothing to write, move along
+ }
+ else if (type == IContainerNode.ContainerType.PARENTHESIS)
+ {
+ preFix = ASEmitterTokens.PAREN_OPEN.getToken();
+ postFix = ASEmitterTokens.PAREN_CLOSE.getToken();
+ }
+
+ if (preFix != null)
+ {
+ startMapping(node);
+ write(preFix);
+ endMapping(node);
+ }
+
+ final int len = cnode.getChildCount();
+ for (int i = 0; i < len; i++)
+ {
+ IASNode child = cnode.getChild(i);
+ getWalker().walk(child);
+ if (i < len - 1)
+ {
+ startMapping(node);
+ writeToken(ASEmitterTokens.COMMA);
+ endMapping(node);
+ }
+ }
+
+ if (postFix != null)
+ {
+ startMapping(node);
+ write(postFix);
+ endMapping(node);
+ }
+ }
+
+ @Override
public void emitReturn(IReturnNode node)
{
startMapping(node);
@@ -217,9 +280,53 @@ public class JSEmitter extends ASEmitter implements IJSEmitter
endMapping(keywordNode);
}
}
+
+ public void pushSourceMapName(ISourceLocation node)
+ {
+ boolean isValidMappingScope = node instanceof ITypeNode
+ || node instanceof IPackageNode
+ || node instanceof IFunctionNode;
+ if(!isValidMappingScope)
+ {
+ throw new IllegalStateException("A source mapping scope must be a package, type, or function.");
+ }
+
+ IDefinitionNode definitionNode = (IDefinitionNode) node;
+ String nodeName = definitionNode.getQualifiedName();
+ ITypeDefinition typeDef = EmitterUtils.getTypeDefinition(definitionNode);
+ if (typeDef != null)
+ {
+ boolean isConstructor = node instanceof IFunctionNode &&
+ ((IFunctionNode) node).isConstructor();
+ boolean isStatic = definitionNode.hasModifier(ASModifier.STATIC);
+ if (isConstructor)
+ {
+ nodeName = typeDef.getQualifiedName() + ".constructor";
+ }
+ else if (isStatic)
+ {
+ nodeName = typeDef.getQualifiedName() + "." + nodeName;
+ }
+ else
+ {
+ nodeName = typeDef.getQualifiedName() + ".prototype." + nodeName;
+ }
+ }
+ nameStack.push(nodeName);
+ }
+ public void popSourceMapName()
+ {
+ nameStack.pop();
+ }
+
public void startMapping(ISourceLocation node)
{
+ startMapping(node, 0);
+ }
+
+ public void startMapping(ISourceLocation node, int startOffset)
+ {
if (lastMapping != null)
{
FilePosition sourceStartPosition = lastMapping.sourceStartPosition;
@@ -246,37 +353,18 @@ public class JSEmitter extends ASEmitter implements IJSEmitter
}
return;
}
+ int sourceLine = node.getLine();
+ int sourceColumn = node.getColumn() + startOffset;
String nodeName = null;
- if (node instanceof IDefinitionNode)
+ if (nameStack.size() > 0)
{
- IDefinitionNode definitionNode = (IDefinitionNode) node;
- nodeName = definitionNode.getQualifiedName();
-
- ITypeDefinition typeDef = EmitterUtils.getTypeDefinition(definitionNode);
- if (typeDef != null)
- {
- boolean isConstructor = node instanceof IFunctionNode &&
- ((IFunctionNode) node).isConstructor();
- boolean isStatic = definitionNode.hasModifier(ASModifier.STATIC);
- if (isConstructor)
- {
- nodeName = typeDef.getQualifiedName() + ".constructor";
- }
- else if (isStatic)
- {
- nodeName = typeDef.getQualifiedName() + "." + nodeName;
- }
- else
- {
- nodeName = typeDef.getQualifiedName() + ".prototype." + nodeName;
- }
- }
+ nodeName = nameStack.lastElement();
}
SourceMapMapping mapping = new SourceMapMapping();
mapping.sourcePath = sourcePath;
mapping.name = nodeName;
- mapping.sourceStartPosition = new FilePosition(node.getLine(), node.getColumn());
+ mapping.sourceStartPosition = new FilePosition(sourceLine, sourceColumn);
mapping.destStartPosition = new FilePosition(getCurrentLine(), getCurrentColumn());
lastMapping = mapping;
}
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/ad6f1d04/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 2f5775e..94e1d5e 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
@@ -643,9 +643,9 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
// Specific
//--------------------------------------------------------------------------
- public void emitIsAs(IExpressionNode left, IExpressionNode right, ASTNodeID id, boolean coercion)
+ public void emitIsAs(IExpressionNode node, IExpressionNode left, IExpressionNode right, ASTNodeID id, boolean coercion)
{
- asIsEmitter.emitIsAs(left, right, id, coercion);
+ asIsEmitter.emitIsAs(node, left, right, id, coercion);
}
@Override
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/ad6f1d04/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/AsIsEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/AsIsEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/AsIsEmitter.java
index 9f242ba..1557b7e 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/AsIsEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/AsIsEmitter.java
@@ -21,6 +21,7 @@ package org.apache.flex.compiler.internal.codegen.js.jx;
import org.apache.flex.compiler.asdoc.flexjs.ASDocComment;
import org.apache.flex.compiler.codegen.js.IJSEmitter;
+import org.apache.flex.compiler.definitions.IClassDefinition;
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;
@@ -30,6 +31,8 @@ import org.apache.flex.compiler.internal.projects.FlexJSProject;
import org.apache.flex.compiler.projects.ICompilerProject;
import org.apache.flex.compiler.tree.ASTNodeID;
import org.apache.flex.compiler.tree.as.IASNode;
+import org.apache.flex.compiler.tree.as.IBinaryOperatorNode;
+import org.apache.flex.compiler.tree.as.IContainerNode;
import org.apache.flex.compiler.tree.as.IExpressionNode;
import org.apache.flex.compiler.tree.as.IFunctionNode;
@@ -41,8 +44,8 @@ public class AsIsEmitter extends JSSubEmitter
super(emitter);
}
- public void emitIsAs(IExpressionNode left, IExpressionNode right,
- ASTNodeID id, boolean coercion)
+ public void emitIsAs(IExpressionNode node, IExpressionNode left, IExpressionNode right,
+ ASTNodeID id, boolean coercion)
{
// project is null in unit tests
//IDefinition dnode = project != null ? (right).resolve(project) : null;
@@ -130,6 +133,15 @@ public class AsIsEmitter extends JSSubEmitter
if (project instanceof FlexJSProject)
((FlexJSProject)project).needLanguage = true;
+ if (node instanceof IBinaryOperatorNode)
+ {
+ IBinaryOperatorNode binaryOperatorNode = (IBinaryOperatorNode) node;
+ getEmitter().startMapping(node, binaryOperatorNode.getLeftOperandNode().getEnd() - binaryOperatorNode.getLeftOperandNode().getStart());
+ }
+ else
+ {
+ getEmitter().startMapping(node);
+ }
write(JSFlexJSEmitterTokens.LANGUAGE_QNAME);
write(ASEmitterTokens.MEMBER_ACCESS);
@@ -139,14 +151,41 @@ public class AsIsEmitter extends JSSubEmitter
write(ASEmitterTokens.AS);
write(ASEmitterTokens.PAREN_OPEN);
+ getEmitter().endMapping(node);
+
getWalker().walk(left);
+ if (node instanceof IBinaryOperatorNode)
+ {
+ IBinaryOperatorNode binaryOperatorNode = (IBinaryOperatorNode) node;
+ getEmitter().startMapping(node, binaryOperatorNode.getLeftOperandNode().getEnd() - binaryOperatorNode.getLeftOperandNode().getStart());
+ }
+ else
+ {
+ getEmitter().startMapping(node);
+ }
writeToken(ASEmitterTokens.COMMA);
+ getEmitter().endMapping(node);
- if (dnode instanceof ClassDefinition)
+ if (dnode instanceof IClassDefinition)
+ {
+ getEmitter().startMapping(right);
write(getEmitter().formatQualifiedName(dnode.getQualifiedName()));
+ getEmitter().endMapping(right);
+ }
else
+ {
getWalker().walk(right);
+ }
+ if (node instanceof IBinaryOperatorNode)
+ {
+ IBinaryOperatorNode binaryOperatorNode = (IBinaryOperatorNode) node;
+ getEmitter().startMapping(node, binaryOperatorNode.getLeftOperandNode().getEnd() - binaryOperatorNode.getLeftOperandNode().getStart());
+ }
+ else
+ {
+ getEmitter().startMapping(node);
+ }
if (coercion)
{
writeToken(ASEmitterTokens.COMMA);
@@ -154,6 +193,7 @@ public class AsIsEmitter extends JSSubEmitter
}
write(ASEmitterTokens.PAREN_CLOSE);
+ getEmitter().endMapping(node);
}
}
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/ad6f1d04/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/BinaryOperatorEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/BinaryOperatorEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/BinaryOperatorEmitter.java
index e37f0e1..9ef9060 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/BinaryOperatorEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/BinaryOperatorEmitter.java
@@ -64,7 +64,7 @@ public class BinaryOperatorEmitter extends JSSubEmitter implements
}
else */if (id == ASTNodeID.Op_IsID || id == ASTNodeID.Op_AsID)
{
- fjs.emitIsAs(node.getLeftOperandNode(), node.getRightOperandNode(),
+ fjs.emitIsAs(node, node.getLeftOperandNode(), node.getRightOperandNode(),
id, false);
}
else if (id == ASTNodeID.Op_InstanceOfID)
@@ -328,6 +328,8 @@ public class BinaryOperatorEmitter extends JSSubEmitter implements
{
getWalker().walk(node.getLeftOperandNode());
+ getEmitter().startMapping(node, node.getLeftOperandNode().getEnd() - node.getLeftOperandNode().getStart());
+
if (id != ASTNodeID.Op_CommaID)
write(ASEmitterTokens.SPACE);
@@ -349,6 +351,7 @@ public class BinaryOperatorEmitter extends JSSubEmitter implements
}
write(ASEmitterTokens.SPACE);
+ getEmitter().endMapping(node);
/*
IDefinition definition = node.getRightOperandNode().resolve(getProject());
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/ad6f1d04/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/ClassEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/ClassEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/ClassEmitter.java
index bd6289f..6bf01b7 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/ClassEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/ClassEmitter.java
@@ -54,6 +54,8 @@ public class ClassEmitter extends JSSubEmitter implements
// TODO (mschmalle) will remove this cast as more things get abstracted
JSFlexJSEmitter fjs = (JSFlexJSEmitter) getEmitter();
+
+ getEmitter().pushSourceMapName(node);
ASDocComment asDoc = (ASDocComment) node.getASDocComment();
if (asDoc != null && MXMLJSC.keepASDoc)
@@ -141,6 +143,8 @@ public class ClassEmitter extends JSSubEmitter implements
fjs.getAccessorEmitter().emit(definition);
fjs.getPackageFooterEmitter().emitClassInfo(node);
+
+ getEmitter().popSourceMapName();
getModel().popClass();
}
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/ad6f1d04/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/FieldEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/FieldEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/FieldEmitter.java
index b22c41d..8e03b91 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/FieldEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/FieldEmitter.java
@@ -83,12 +83,12 @@ public class FieldEmitter extends JSSubEmitter implements
if (definition == null)
definition = ndef.getContainingScope().getDefinition();
-
+
+ getEmitter().startMapping(node.getNameExpressionNode());
write(getEmitter().formatQualifiedName(definition.getQualifiedName())
+ ASEmitterTokens.MEMBER_ACCESS.getToken() + root);
- getEmitter().startMapping(node);
write(node.getName());
- getEmitter().endMapping(node);
+ getEmitter().endMapping(node.getNameExpressionNode());
}
if (node.getNodeID() == ASTNodeID.BindableVariableID)
@@ -101,8 +101,10 @@ public class FieldEmitter extends JSSubEmitter implements
if (vnode != null &&
(ndef.isStatic() || EmitterUtils.isScalar(vnode) || isPackageOrFileMember))
{
+ getEmitter().startMapping(node);
write(ASEmitterTokens.SPACE);
writeToken(ASEmitterTokens.EQUAL);
+ getEmitter().endMapping(node);
getEmitter().getWalker().walk(vnode);
}
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/ad6f1d04/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 a71b4dd..5f590e1 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
@@ -163,9 +163,9 @@ public class FunctionCallEmitter extends JSSubEmitter implements ISubEmitter<IFu
fjs.walkArguments(node.getArgumentNodes());
write(ASEmitterTokens.PAREN_CLOSE);
}
- else
+ else //function-style cast
{
- fjs.emitIsAs(node.getArgumentNodes()[0], node.getNameNode(), ASTNodeID.Op_AsID, true);
+ fjs.emitIsAs(node, node.getArgumentNodes()[0], node.getNameNode(), ASTNodeID.Op_AsID, true);
}
}
else
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/ad6f1d04/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
index 15d9fa7..e067bda 100644
--- 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
@@ -74,6 +74,7 @@ public class MethodEmitter extends JSSubEmitter implements
}
else
{
+ getEmitter().startMapping(node.getNameExpressionNode());
ITypeDefinition typeDef = EmitterUtils.getTypeDefinition(node);
if (typeDef != null)
{
@@ -81,16 +82,8 @@ public class MethodEmitter extends JSSubEmitter implements
}
if (qname != null && !qname.equals(""))
{
- if (isConstructor)
- {
- getEmitter().startMapping(node);
- }
write(fjs.formatQualifiedName(qname));
- if (isConstructor)
- {
- getEmitter().endMapping(node);
- }
- else
+ if (!isConstructor)
{
write(ASEmitterTokens.MEMBER_ACCESS);
if (!fn.hasModifier(ASModifier.STATIC))
@@ -102,15 +95,16 @@ public class MethodEmitter extends JSSubEmitter implements
}
if (!isConstructor)
{
- getEmitter().startMapping(node);
fjs.emitMemberName(node);
- getEmitter().endMapping(node);
}
+ getEmitter().endMapping(node.getNameExpressionNode());
}
+ getEmitter().startMapping(node);
write(ASEmitterTokens.SPACE);
writeToken(ASEmitterTokens.EQUAL);
write(ASEmitterTokens.FUNCTION);
+ getEmitter().endMapping(node);
fjs.emitParameters(node.getParameterNodes());
@@ -130,7 +124,11 @@ public class MethodEmitter extends JSSubEmitter implements
}
if (!isConstructor || node.getScopedNode().getChildCount() > 0)
+ {
+ getEmitter().pushSourceMapName(node);
fjs.emitMethodScope(node.getScopedNode());
+ getEmitter().popSourceMapName();
+ }
if (isConstructor && hasSuperClass)
{
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/ad6f1d04/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/PackageFooterEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/PackageFooterEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/PackageFooterEmitter.java
index eab3413..e5aaf34 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/PackageFooterEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/PackageFooterEmitter.java
@@ -66,6 +66,7 @@ public class PackageFooterEmitter extends JSSubEmitter implements
@Override
public void emit(IPackageDefinition definition)
{
+ getEmitter().popSourceMapName();
IASScope containedScope = definition.getContainedScope();
ITypeDefinition type = EmitterUtils.findType(containedScope
.getAllLocalDefinitions());
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/ad6f1d04/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/PackageHeaderEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/PackageHeaderEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/PackageHeaderEmitter.java
index 64b560a..48acf5b 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/PackageHeaderEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/PackageHeaderEmitter.java
@@ -131,6 +131,8 @@ public class PackageHeaderEmitter extends JSSubEmitter implements
{
// TODO (mschmalle) will remove this cast as more things get abstracted
JSFlexJSEmitter fjs = (JSFlexJSEmitter) getEmitter();
+
+ getEmitter().pushSourceMapName(definition.getNode());
PackageScope containedScope = (PackageScope) definition
.getContainedScope();