You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2017/04/13 17:43:46 UTC
[15/50] git commit: [flex-falcon] [refs/heads/dual] - compiler-jx:
MXMLFlexJSEmitter does not stringify script nodes because this fails to
generate source maps.
compiler-jx: MXMLFlexJSEmitter does not stringify script nodes because this fails to generate source maps.
Instead, it saves the script nodes for later, and walks them normally.
Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/d939b626
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/d939b626
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/d939b626
Branch: refs/heads/dual
Commit: d939b6267d98cd62e0a6adcfa575b184e1dd8ac4
Parents: 51ddb85
Author: Josh Tynjala <jo...@apache.org>
Authored: Fri Mar 17 15:48:39 2017 -0700
Committer: Josh Tynjala <jo...@apache.org>
Committed: Fri Mar 17 15:48:39 2017 -0700
----------------------------------------------------------------------
.../codegen/mxml/flexjs/MXMLFlexJSEmitter.java | 112 ++++++++-----------
1 file changed, 49 insertions(+), 63 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/d939b626/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
index 21aef44..0b87cd6 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
@@ -76,6 +76,7 @@ import org.apache.flex.compiler.tree.metadata.IMetaTagsNode;
import org.apache.flex.compiler.tree.mxml.*;
import org.apache.flex.compiler.units.ICompilationUnit;
import org.apache.flex.compiler.utils.NativeUtils;
+import org.apache.flex.compiler.visitor.IBlockWalker;
import org.apache.flex.compiler.visitor.mxml.IMXMLBlockWalker;
import org.apache.flex.swc.ISWC;
@@ -99,7 +100,7 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
private ArrayList<MXMLDescriptorSpecifier> instances;
// all instances in the document AND its subdocuments
private ArrayList<MXMLDescriptorSpecifier> allInstances = new ArrayList<MXMLDescriptorSpecifier>();
- private ArrayList<MXMLScriptSpecifier> scripts;
+ private ArrayList<IMXMLScriptNode> scripts;
//private ArrayList<MXMLStyleSpecifier> styles;
private IClassDefinition classDefinition;
private IClassDefinition documentDefinition;
@@ -344,7 +345,7 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
events = new ArrayList<MXMLEventSpecifier>();
instances = new ArrayList<MXMLDescriptorSpecifier>();
- scripts = new ArrayList<MXMLScriptSpecifier>();
+ scripts = new ArrayList<IMXMLScriptNode>();
//styles = new ArrayList<MXMLStyleSpecifier>();
currentInstances = new ArrayList<MXMLDescriptorSpecifier>();
@@ -411,7 +412,7 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
ArrayList<MXMLDescriptorSpecifier> oldDescriptorTree;
MXMLDescriptorSpecifier oldPropertiesTree;
ArrayList<MXMLEventSpecifier> oldEvents;
- ArrayList<MXMLScriptSpecifier> oldScripts;
+ ArrayList<IMXMLScriptNode> oldScripts;
ArrayList<MXMLDescriptorSpecifier> oldCurrentInstances;
ArrayList<MXMLDescriptorSpecifier> oldInstances;
ArrayList<MXMLDescriptorSpecifier> oldCurrentPropertySpecifiers;
@@ -431,7 +432,7 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
oldInstances = instances;
instances = new ArrayList<MXMLDescriptorSpecifier>();
oldScripts = scripts;
- scripts = new ArrayList<MXMLScriptSpecifier>();
+ scripts = new ArrayList<IMXMLScriptNode>();
//styles = new ArrayList<MXMLStyleSpecifier>();
oldCurrentInstances = currentInstances;
@@ -1293,13 +1294,49 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
protected void emitScripts()
{
- for (MXMLScriptSpecifier script : scripts)
+ for (IMXMLScriptNode node : scripts)
{
- String output = script.output();
+ IASEmitter asEmitter = ((IMXMLBlockWalker) getMXMLWalker())
+ .getASEmitter();
- if (!output.equals(""))
+ int len = node.getChildCount();
+ if (len > 0)
{
- writeNewline(output);
+ for (int i = 0; i < len; i++)
+ {
+ IASNode cnode = node.getChild(i);
+ if (cnode.getNodeID() == ASTNodeID.VariableID) {
+ ((JSFlexJSEmitter) asEmitter).getModel().getVars().add((IVariableNode) cnode);
+ } else {
+ if (cnode.getNodeID() == ASTNodeID.BindableVariableID) {
+ IVariableNode variableNode = (IVariableNode) cnode;
+ BindableVarInfo bindableVarInfo = new BindableVarInfo();
+ bindableVarInfo.isStatic = variableNode.hasModifier(ASModifier.STATIC);;
+ bindableVarInfo.namespace = variableNode.getNamespace();
+ IMetaTagsNode metaTags = variableNode.getMetaTags();
+ if (metaTags != null) {
+ IMetaTagNode[] tags = metaTags.getAllTags();
+ if (tags.length > 0)
+ bindableVarInfo.metaTags = tags;
+ }
+
+ bindableVarInfo.type = variableNode.getVariableTypeNode().resolveType(getMXMLWalker().getProject()).getQualifiedName();
+ ((JSFlexJSEmitter) asEmitter).getModel().getBindableVars().put(variableNode.getName(), bindableVarInfo);
+ }
+ }
+
+ if (!(cnode instanceof IImportNode))
+ {
+ asEmitter.getWalker().walk(cnode);
+ write(ASEmitterTokens.SEMICOLON.getToken());
+
+ if (i == len - 1)
+ indentPop();
+
+ writeNewline();
+ writeNewline();
+ }
+ }
}
}
}
@@ -2061,61 +2098,10 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
@Override
public void emitScript(IMXMLScriptNode node)
{
- IASEmitter asEmitter = ((IMXMLBlockWalker) getMXMLWalker())
- .getASEmitter();
-
- String nl = ASEmitterTokens.NEW_LINE.getToken();
-
- StringBuilder sb = null;
- MXMLScriptSpecifier scriptSpecifier = null;
-
- int len = node.getChildCount();
- if (len > 0)
- {
- for (int i = 0; i < len; i++)
- {
- IASNode cnode = node.getChild(i);
- if (cnode.getNodeID() == ASTNodeID.VariableID) {
- ((JSFlexJSEmitter) asEmitter).getModel().getVars().add((IVariableNode) cnode);
- } else {
- if (cnode.getNodeID() == ASTNodeID.BindableVariableID) {
- IVariableNode variableNode = (IVariableNode) cnode;
- BindableVarInfo bindableVarInfo = new BindableVarInfo();
- bindableVarInfo.isStatic = variableNode.hasModifier(ASModifier.STATIC);;
- bindableVarInfo.namespace = variableNode.getNamespace();
- IMetaTagsNode metaTags = variableNode.getMetaTags();
- if (metaTags != null) {
- IMetaTagNode[] tags = metaTags.getAllTags();
- if (tags.length > 0)
- bindableVarInfo.metaTags = tags;
- }
-
- bindableVarInfo.type = variableNode.getVariableTypeNode().resolveType(getMXMLWalker().getProject()).getQualifiedName();
- ((JSFlexJSEmitter) asEmitter).getModel().getBindableVars().put(variableNode.getName(), bindableVarInfo);
- }
- }
-
- if (!(cnode instanceof IImportNode))
- {
- sb = new StringBuilder();
- scriptSpecifier = new MXMLScriptSpecifier();
-
- sb.append(asEmitter.stringifyNode(cnode));
-
- sb.append(ASEmitterTokens.SEMICOLON.getToken());
-
- if (i == len - 1)
- indentPop();
-
- sb.append(nl);
- sb.append(nl);
-
- scriptSpecifier.fragment = sb.toString();
-
- scripts.add(scriptSpecifier);
- }
- }
- }
+ //save the script for emitting later in emitScripts()
+ //previously, we stringified the node and saved that instead of the
+ //node, but source maps don't work when you stringify a node -JT
+ scripts.add(node);
}
@Override