FieldEmitter, MethodEmitter: can handle package-level and internal fields and 
methods


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

Branch: refs/heads/develop
Commit: 4faab6be81030b5e650b53d8149e0509d2e27141
Parents: 2450d14
Author: Josh Tynjala <[email protected]>
Authored: Mon Jan 11 11:52:06 2016 -0800
Committer: Josh Tynjala <[email protected]>
Committed: Mon Jan 11 11:52:06 2016 -0800

----------------------------------------------------------------------
 .../internal/codegen/js/jx/FieldEmitter.java    | 32 ++++++++++++------
 .../internal/codegen/js/jx/MethodEmitter.java   | 35 ++++++++++++++------
 2 files changed, 46 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/4faab6be/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 f7b2c1a..3c80d83 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
@@ -25,6 +25,7 @@ import 
org.apache.flex.compiler.codegen.js.goog.IJSGoogDocEmitter;
 import org.apache.flex.compiler.common.ASModifier;
 import org.apache.flex.compiler.common.ModifiersSet;
 import org.apache.flex.compiler.definitions.IDefinition;
+import org.apache.flex.compiler.definitions.IVariableDefinition;
 import org.apache.flex.compiler.internal.codegen.as.ASEmitterTokens;
 import org.apache.flex.compiler.internal.codegen.js.JSEmitterTokens;
 import org.apache.flex.compiler.internal.codegen.js.JSSubEmitter;
@@ -63,20 +64,29 @@ public class FieldEmitter extends JSSubEmitter implements
 
         IDefinition ndef = node.getDefinition();
 
-        ModifiersSet modifierSet = ndef.getModifiers();
         String root = "";
-        if (modifierSet != null && !modifierSet.hasModifier(ASModifier.STATIC))
+        IVariableDefinition.VariableClassification classification = 
node.getVariableClassification();
+        if (classification == 
IVariableDefinition.VariableClassification.PACKAGE_MEMBER ||
+                classification == 
IVariableDefinition.VariableClassification.FILE_MEMBER)
         {
-            root = JSEmitterTokens.PROTOTYPE.getToken();
-            root += ASEmitterTokens.MEMBER_ACCESS.getToken();
+            write(getEmitter().formatQualifiedName(node.getQualifiedName()));
+        }
+        else
+        {
+            ModifiersSet modifierSet = ndef.getModifiers();
+            if (modifierSet != null && 
!modifierSet.hasModifier(ASModifier.STATIC))
+            {
+                root = JSEmitterTokens.PROTOTYPE.getToken();
+                root += ASEmitterTokens.MEMBER_ACCESS.getToken();
+            }
+            
+            if (definition == null)
+                definition = ndef.getContainingScope().getDefinition();
+            
+            
write(getEmitter().formatQualifiedName(definition.getQualifiedName())
+                    + ASEmitterTokens.MEMBER_ACCESS.getToken() + root
+                    + node.getName());
         }
-
-        if (definition == null)
-            definition = ndef.getContainingScope().getDefinition();
-
-        write(getEmitter().formatQualifiedName(definition.getQualifiedName())
-                + ASEmitterTokens.MEMBER_ACCESS.getToken() + root
-                + node.getName());
 
         if (node.getNodeID() == ASTNodeID.BindableVariableID)
         {

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/4faab6be/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 7383859..086fcc0 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
@@ -24,6 +24,8 @@ import java.util.ArrayList;
 import org.apache.flex.compiler.codegen.ISubEmitter;
 import org.apache.flex.compiler.codegen.js.IJSEmitter;
 import org.apache.flex.compiler.common.ASModifier;
+import org.apache.flex.compiler.definitions.IFunctionDefinition;
+import org.apache.flex.compiler.definitions.ITypeDefinition;
 import org.apache.flex.compiler.internal.codegen.as.ASEmitterTokens;
 import org.apache.flex.compiler.internal.codegen.js.JSEmitterTokens;
 import org.apache.flex.compiler.internal.codegen.js.JSSessionModel;
@@ -60,24 +62,37 @@ public class MethodEmitter extends JSSubEmitter implements
 
         boolean isConstructor = node.isConstructor();
 
-        String qname = EmitterUtils.getTypeDefinition(node).getQualifiedName();
-        if (qname != null && !qname.equals(""))
+        String qname = null;
+        IFunctionDefinition.FunctionClassification classification = 
fn.getFunctionClassification();
+        if(classification == 
IFunctionDefinition.FunctionClassification.FILE_MEMBER ||
+                classification == 
IFunctionDefinition.FunctionClassification.PACKAGE_MEMBER)
         {
-            write(fjs.formatQualifiedName(qname));
-            if (!isConstructor)
+            write(fjs.formatQualifiedName(fn.getQualifiedName()));
+        }
+        else
+        {
+            ITypeDefinition typeDef = EmitterUtils.getTypeDefinition(node);
+            if (typeDef != null)
             {
-                write(ASEmitterTokens.MEMBER_ACCESS);
-                if (!fn.hasModifier(ASModifier.STATIC))
+                qname = typeDef.getQualifiedName();
+            }
+            if (qname != null && !qname.equals(""))
+            {
+                write(fjs.formatQualifiedName(qname));
+                if (!isConstructor)
                 {
-                    write(JSEmitterTokens.PROTOTYPE);
                     write(ASEmitterTokens.MEMBER_ACCESS);
+                    if (!fn.hasModifier(ASModifier.STATIC))
+                    {
+                        write(JSEmitterTokens.PROTOTYPE);
+                        write(ASEmitterTokens.MEMBER_ACCESS);
+                    }
                 }
             }
+            if (!isConstructor)
+                fjs.emitMemberName(node);
         }
 
-        if (!isConstructor)
-            fjs.emitMemberName(node);
-
         write(ASEmitterTokens.SPACE);
         writeToken(ASEmitterTokens.EQUAL);
         write(ASEmitterTokens.FUNCTION);

Reply via email to