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 <[email protected]> Authored: Sat Mar 26 15:37:42 2016 -0700 Committer: Josh Tynjala <[email protected]> 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();
