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 2016/04/06 17:02:27 UTC

[18/50] git commit: [flex-falcon] [refs/heads/master] - hack in emitting sub-components as inner classes. Implementation needs improvement someday

hack in emitting sub-components as inner classes.  Implementation needs improvement someday


Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/47852ab4
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/47852ab4
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/47852ab4

Branch: refs/heads/master
Commit: 47852ab48748b2a4fe865351f8aade16634395c5
Parents: eb41d25
Author: Alex Harui <ah...@apache.org>
Authored: Mon Feb 29 14:53:47 2016 -0800
Committer: Alex Harui <ah...@apache.org>
Committed: Mon Feb 29 17:50:29 2016 -0800

----------------------------------------------------------------------
 .../compiler/internal/codegen/as/ASEmitter.java |  2 +-
 .../codegen/js/flexjs/JSFlexJSEmitter.java      |  5 ++++
 .../codegen/mxml/flexjs/MXMLFlexJSEmitter.java  | 25 ++++++++++++++++----
 .../codegen/mxml/jsc/MXMLJSCJSEmitter.java      |  2 +-
 4 files changed, 27 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/47852ab4/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 32e7130..107e809 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
@@ -115,7 +115,7 @@ public class ASEmitter implements IASEmitter, IEmitter
         return bufferWrite;
     }
 
-    protected void setBufferWrite(boolean value)
+    public void setBufferWrite(boolean value)
     {
         bufferWrite = value;
     }

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/47852ab4/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 f3fd8b6..72a59f1 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
@@ -52,6 +52,7 @@ import org.apache.flex.compiler.internal.codegen.js.jx.PackageHeaderEmitter;
 import org.apache.flex.compiler.internal.codegen.js.jx.SelfReferenceEmitter;
 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.codegen.mxml.flexjs.MXMLFlexJSEmitter;
 import org.apache.flex.compiler.internal.projects.FlexJSProject;
 import org.apache.flex.compiler.internal.projects.FlexProject;
 import org.apache.flex.compiler.internal.tree.as.BinaryOperatorAsNode;
@@ -327,8 +328,12 @@ public class JSFlexJSEmitter extends JSGoogEmitter implements IJSFlexJSEmitter
         return formatQualifiedName(name, false);
     }
 
+    public MXMLFlexJSEmitter mxmlEmitter = null;
+    
     public String formatQualifiedName(String name, boolean isDoc)
     {
+    	if (mxmlEmitter != null)
+    		name = mxmlEmitter.formatQualifiedName(name);
         /*
         if (name.contains("goog.") || name.startsWith("Vector."))
             return name;

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/47852ab4/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
index d8d99ea..dd89f6b 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSEmitter.java
@@ -116,6 +116,7 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
     private ArrayList<MXMLScriptSpecifier> scripts;
     //private ArrayList<MXMLStyleSpecifier> styles;
     private IClassDefinition classDefinition;
+    private IClassDefinition documentDefinition;
     private ArrayList<String> usedNames = new ArrayList<String>();
     private ArrayList<IMXMLMetadataNode> metadataNodes = new ArrayList<IMXMLMetadataNode>();
     
@@ -228,6 +229,7 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
         // visit MXML
         IClassDefinition cdef = node.getClassDefinition();
         classDefinition = cdef;
+        documentDefinition = cdef;
         
         // TODO (mschmalle) will remove this cast as more things get abstracted
         JSFlexJSEmitter fjs = (JSFlexJSEmitter) ((IMXMLBlockWalker) getMXMLWalker())
@@ -246,9 +248,6 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
 
         emitHeader(node);
 
-        write(subDocuments.toString());
-        writeNewline();
-
         emitClassDeclStart(cname, node.getBaseClassName(), false);
 
         emitComplexInitializers(node);
@@ -259,6 +258,9 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
 
         emitMetaData(cdef);
 
+        write(subDocuments.toString());
+        writeNewline();
+
         emitScripts();
 
         fjs.getBindableEmitter().emit(cdef);
@@ -318,7 +320,7 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
         IASEmitter asEmitter = ((IMXMLBlockWalker) getMXMLWalker())
                 .getASEmitter();
         ((JSFlexJSEmitter) asEmitter).getModel().pushClass(cdef);
-
+        
         IASNode classNode = node.getContainedClassDefinitionNode();
         // visit tags
         final int len = classNode.getChildCount();
@@ -329,6 +331,7 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
 
         String cname = cdef.getQualifiedName();
         subDocumentNames.add(cname);
+        ((JSFlexJSEmitter) asEmitter).mxmlEmitter = this;
         String baseClassName = cdef.getBaseClassAsDisplayString();
 
         emitClassDeclStart(cname, baseClassName, false);
@@ -366,6 +369,7 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
         inMXMLContent = oldInMXMLContent;
         classDefinition = oldClassDef;
         ((JSFlexJSEmitter) asEmitter).getModel().popClass();
+        ((JSFlexJSEmitter) asEmitter).mxmlEmitter = null;
 
     }
 
@@ -1929,6 +1933,7 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
         MXMLDescriptorSpecifier ps = getCurrentDescriptor("ps");
         ps.value = "new " + formatQualifiedName("org.apache.flex.core.ClassFactory") + "(";
 
+        ps.value += formatQualifiedName(documentDefinition.getQualifiedName()) + ".";
         ps.value += formatQualifiedName(node.getName());
         ps.value += ")";
         
@@ -1939,6 +1944,14 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
         setBufferWrite(false);
     }
 
+    @Override
+    protected void setBufferWrite(boolean value)
+    {
+    	super.setBufferWrite(value);
+        IASEmitter asEmitter = ((IMXMLBlockWalker) getMXMLWalker()).getASEmitter();
+        ((JSFlexJSEmitter)asEmitter).setBufferWrite(value);
+    }
+    
     //--------------------------------------------------------------------------
     //    JS output
     //--------------------------------------------------------------------------
@@ -2146,7 +2159,7 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
         }
     }
 
-    protected String formatQualifiedName(String name)
+    public String formatQualifiedName(String name)
     {
     	return formatQualifiedName(name, true);
     }
@@ -2158,6 +2171,8 @@ public class MXMLFlexJSEmitter extends MXMLEmitter implements
     		return name;
     	name = name.replaceAll("\\.", "_");
     	*/
+    	if (subDocumentNames.contains(name))
+    		return documentDefinition.getQualifiedName() + "." + name;
 		if (useName && !usedNames.contains(name))
 			usedNames.add(name);
     	return name;

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/47852ab4/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/jsc/MXMLJSCJSEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/jsc/MXMLJSCJSEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/jsc/MXMLJSCJSEmitter.java
index 184158b..088ee62 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/jsc/MXMLJSCJSEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/jsc/MXMLJSCJSEmitter.java
@@ -38,7 +38,7 @@ public class MXMLJSCJSEmitter extends MXMLFlexJSEmitter implements
 	}
 
 	@Override
-	protected String formatQualifiedName(String name)
+	public String formatQualifiedName(String name)
     {
     	return name;
     }