flex-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From aha...@apache.org
Subject git commit: [flex-falcon] [refs/heads/develop] - change getter/setters to use get__/set__ methods so we can eliminate the slower Language.superGetter/superSetter calls to base class getter/setters
Date Mon, 26 Sep 2016 21:57:13 GMT
Repository: flex-falcon
Updated Branches:
  refs/heads/develop 1dabb68d7 -> 796b5e8cf


change getter/setters to use get__/set__ methods so we can eliminate the slower Language.superGetter/superSetter calls to base class getter/setters


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

Branch: refs/heads/develop
Commit: 796b5e8cfecb69472f4e97f7fc4221cbfee8949f
Parents: 1dabb68
Author: Alex Harui <aharui@apache.org>
Authored: Mon Sep 26 14:56:08 2016 -0700
Committer: Alex Harui <aharui@apache.org>
Committed: Mon Sep 26 14:56:08 2016 -0700

----------------------------------------------------------------------
 .../js/flexjs/JSFlexJSEmitterTokens.java        |   2 +
 .../internal/codegen/js/jx/AccessorEmitter.java | 431 +++++++++++--------
 .../codegen/js/jx/BinaryOperatorEmitter.java    |  23 +-
 .../codegen/js/jx/MemberAccessEmitter.java      |  14 +-
 .../codegen/js/jx/SuperCallEmitter.java         |  18 +-
 .../js/flexjs/TestFlexJSAccessorMembers.java    |  48 ++-
 .../codegen/js/flexjs/TestFlexJSAccessors.java  |  29 +-
 .../codegen/js/flexjs/TestFlexJSClass.java      |  23 +-
 .../codegen/js/flexjs/TestFlexJSPackage.java    |  32 +-
 .../flexjs/files/MyInitialView_result.js        |  36 +-
 .../flexjs/files/models/MyModel_result.js       |  38 +-
 .../flexjs/projects/super/Base_result.js        |  23 +-
 .../flexjs/projects/super/Super_result.js       |  20 +-
 13 files changed, 453 insertions(+), 284 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/796b5e8c/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitterTokens.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitterTokens.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitterTokens.java
index 2e24236..b285987 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitterTokens.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/flexjs/JSFlexJSEmitterTokens.java
@@ -46,6 +46,8 @@ public enum JSFlexJSEmitterTokens implements IEmitterTokens
     POSTDECREMENT("postdecrement"),
     SUPERGETTER("superGetter"),
     SUPERSETTER("superSetter"),
+    GETTER_PREFIX("get__"),
+    SETTER_PREFIX("set__"),
     CLOSURE_FUNCTION_NAME("org.apache.flex.utils.Language.closure"),
     SKIP_AS_COERCIONS("skipAsCoercions"),
     SKIP_FUNCTION_COERCIONS("skipFunctionCoercions"),

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/796b5e8c/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/AccessorEmitter.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/AccessorEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/AccessorEmitter.java
index 69959db..de8e86b 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/AccessorEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/AccessorEmitter.java
@@ -81,6 +81,83 @@ public class AccessorEmitter extends JSSubEmitter implements
 
         if (!getModel().getPropertyMap().isEmpty())
         {
+            String qname = definition.getQualifiedName();
+            Set<String> propertyNames = getModel().getPropertyMap().keySet();
+            for (String propName : propertyNames)
+            {
+                PropertyNodes p = getModel().getPropertyMap().get(propName);
+                IGetterNode getterNode = p.getter;
+                ISetterNode setterNode = p.setter;
+                if (getterNode != null)
+                {
+                    writeNewline();
+                    writeNewline();
+                    writeNewline();
+                    write(getEmitter().formatQualifiedName(qname));
+                    write(ASEmitterTokens.MEMBER_ACCESS);
+                    write(JSEmitterTokens.PROTOTYPE);
+                    if (fjs.isCustomNamespace((FunctionNode)getterNode))
+                    {
+            			INamespaceDecorationNode ns = ((FunctionNode)getterNode).getActualNamespaceNode();
+                        ICompilerProject project = getWalker().getProject();
+            			INamespaceDefinition nsDef = (INamespaceDefinition)ns.resolve(project);
+            			fjs.formatQualifiedName(nsDef.getQualifiedName()); // register with used names 
+            			String s = nsDef.getURI();
+            			write("[\"" + s + "::" + JSFlexJSEmitterTokens.GETTER_PREFIX.getToken() + propName + "\"]");
+                    }
+                    else
+                    {
+                        write(ASEmitterTokens.MEMBER_ACCESS);
+                        write(JSFlexJSEmitterTokens.GETTER_PREFIX);
+                    	write(propName);
+                    }
+                    write(ASEmitterTokens.SPACE);
+                    write(ASEmitterTokens.EQUAL);
+                    write(ASEmitterTokens.SPACE);
+                    write(ASEmitterTokens.FUNCTION);
+                    fjs.emitParameters(getterNode.getParametersContainerNode());
+
+                    fjs.emitDefinePropertyFunction(getterNode);
+                                        
+                    write(ASEmitterTokens.SEMICOLON);
+                }
+                if (setterNode != null)
+                {
+                    writeNewline();
+                    writeNewline();
+                    writeNewline();
+                    write(getEmitter().formatQualifiedName(qname));
+                    write(ASEmitterTokens.MEMBER_ACCESS);
+                    write(JSEmitterTokens.PROTOTYPE);
+                    if (fjs.isCustomNamespace((FunctionNode)setterNode))
+                    {
+            			INamespaceDecorationNode ns = ((FunctionNode)setterNode).getActualNamespaceNode();
+                        ICompilerProject project = getWalker().getProject();
+            			INamespaceDefinition nsDef = (INamespaceDefinition)ns.resolve(project);
+            			fjs.formatQualifiedName(nsDef.getQualifiedName()); // register with used names 
+            			String s = nsDef.getURI();
+            			write("[\"" + s + "::" + JSFlexJSEmitterTokens.SETTER_PREFIX.getToken() + propName + "\"]");
+                    }
+                    else
+                    {
+                        write(ASEmitterTokens.MEMBER_ACCESS);
+                        write(JSFlexJSEmitterTokens.SETTER_PREFIX);
+                    	write(propName);
+                    }
+                    write(ASEmitterTokens.SPACE);
+                    write(ASEmitterTokens.EQUAL);
+                    write(ASEmitterTokens.SPACE);
+                    write(ASEmitterTokens.FUNCTION);
+                    fjs.emitParameters(setterNode.getParametersContainerNode());
+
+                    fjs.emitDefinePropertyFunction(setterNode);
+                    
+                    write(ASEmitterTokens.SEMICOLON);
+                }
+            }
+        }
+        if (!getModel().getPropertyMap().isEmpty())
+        {
             writeNewline();
             writeNewline();
             writeNewline();
@@ -112,14 +189,6 @@ public class AccessorEmitter extends JSSubEmitter implements
                 IGetterNode getterNode = p.getter;
                 ISetterNode setterNode = p.setter;
                 writeNewline("/** @export */");
-                if (getterNode != null)
-                {
-                    startMapping(getterNode);
-                }
-                else
-                {
-                    startMapping(setterNode);
-                }
                 FunctionNode fnNode = getterNode != null ? (FunctionNode) getterNode : (FunctionNode) setterNode;
                 if (fjs.isCustomNamespace(fnNode))
                 {
@@ -135,37 +204,30 @@ public class AccessorEmitter extends JSSubEmitter implements
                 write(ASEmitterTokens.COLON);
                 write(ASEmitterTokens.SPACE);
                 write(ASEmitterTokens.BLOCK_OPEN);
-                if (getterNode != null)
-                {
-                    endMapping(getterNode);
-                }
-                else
-                {
-                    endMapping(setterNode);
-                }
                 writeNewline();
                 if (getterNode != null)
                 {
-                    startMapping(getterNode);
                     write(ASEmitterTokens.GET);
                     write(ASEmitterTokens.COLON);
                     write(ASEmitterTokens.SPACE);
-                    write(JSDocEmitterTokens.JSDOC_OPEN);
-                    write(ASEmitterTokens.SPACE);
-                    write(ASEmitterTokens.ATSIGN);
-                    write(ASEmitterTokens.THIS);
-                    write(ASEmitterTokens.SPACE);
-                    write(ASEmitterTokens.BLOCK_OPEN);
                     write(getEmitter().formatQualifiedName(qname));
-                    write(ASEmitterTokens.BLOCK_CLOSE);
-                    write(ASEmitterTokens.SPACE);
-                    write(JSDocEmitterTokens.JSDOC_CLOSE);
-                    write(ASEmitterTokens.SPACE);
-                    write(ASEmitterTokens.FUNCTION);
-                    endMapping(getterNode);
-                    fjs.emitParameters(getterNode.getParametersContainerNode());
-
-                    fjs.emitDefinePropertyFunction(getterNode);
+                    write(ASEmitterTokens.MEMBER_ACCESS);
+                    write(JSEmitterTokens.PROTOTYPE);
+                    if (fjs.isCustomNamespace((FunctionNode)getterNode))
+                    {
+            			INamespaceDecorationNode ns = ((FunctionNode)getterNode).getActualNamespaceNode();
+                        ICompilerProject project = getWalker().getProject();
+            			INamespaceDefinition nsDef = (INamespaceDefinition)ns.resolve(project);
+            			fjs.formatQualifiedName(nsDef.getQualifiedName()); // register with used names 
+            			String s = nsDef.getURI();
+            			write("[\"" + s + "::" + JSFlexJSEmitterTokens.GETTER_PREFIX.getToken() + propName + "\"]");
+                    }
+                    else
+                    {
+                        write(ASEmitterTokens.MEMBER_ACCESS);
+                        write(JSFlexJSEmitterTokens.GETTER_PREFIX);
+                    	write(propName);
+                    }
                     wroteGetter = true;
                 }
                 else if (setterNode != null && setterNode.getDefinition().isOverride())
@@ -181,44 +243,26 @@ public class AccessorEmitter extends JSSubEmitter implements
                         write(ASEmitterTokens.GET);
                         write(ASEmitterTokens.COLON);
                         write(ASEmitterTokens.SPACE);
-                        write(JSDocEmitterTokens.JSDOC_OPEN);
-                        write(ASEmitterTokens.SPACE);
-                        write(ASEmitterTokens.ATSIGN);
-                        write(ASEmitterTokens.THIS);
-                        write(ASEmitterTokens.SPACE);
-                        write(ASEmitterTokens.BLOCK_OPEN);
-                        write(getEmitter().formatQualifiedName(qname));
-                        write(ASEmitterTokens.BLOCK_CLOSE);
-                        write(ASEmitterTokens.SPACE);
-                        write(JSDocEmitterTokens.JSDOC_CLOSE);
-                        write(ASEmitterTokens.SPACE);
-                        write(ASEmitterTokens.FUNCTION);
-                        write(ASEmitterTokens.PAREN_OPEN);
-                        write(ASEmitterTokens.PAREN_CLOSE);
-                        write(ASEmitterTokens.SPACE);
-                        writeNewline(ASEmitterTokens.BLOCK_OPEN);
                         
-                        ICompilerProject project = this.getProject();
-                        if (project instanceof FlexJSProject)
-                        	((FlexJSProject)project).needLanguage = true;
-                        // setter is handled in binaryOperator
-                        write(ASEmitterTokens.RETURN);
-                        write(ASEmitterTokens.SPACE);
-                        write(JSFlexJSEmitterTokens.LANGUAGE_QNAME);
+                        write(getEmitter().formatQualifiedName(other.getParent().getQualifiedName()));
                         write(ASEmitterTokens.MEMBER_ACCESS);
-                        write(JSFlexJSEmitterTokens.SUPERGETTER);
-                        write(ASEmitterTokens.PAREN_OPEN);
-                        write(getEmitter().formatQualifiedName(qname));
-                        writeToken(ASEmitterTokens.COMMA);
-                        write(ASEmitterTokens.THIS);
-                        writeToken(ASEmitterTokens.COMMA);
-                        write(ASEmitterTokens.SINGLE_QUOTE);
-                        write(propName);
-                        write(ASEmitterTokens.SINGLE_QUOTE);
-                        write(ASEmitterTokens.PAREN_CLOSE);
-                        writeNewline(ASEmitterTokens.SEMICOLON);
-                        write(ASEmitterTokens.BLOCK_CLOSE);
-                		wroteGetter = true;
+                        write(JSEmitterTokens.PROTOTYPE);
+                        if (fjs.isCustomNamespace((FunctionNode)setterNode))
+                        {
+                			INamespaceDecorationNode ns = ((FunctionNode)setterNode).getActualNamespaceNode();
+                            ICompilerProject project = getWalker().getProject();
+                			INamespaceDefinition nsDef = (INamespaceDefinition)ns.resolve(project);
+                			fjs.formatQualifiedName(nsDef.getQualifiedName()); // register with used names 
+                			String s = nsDef.getURI();
+                			write("[\"" + s + "::" + JSFlexJSEmitterTokens.GETTER_PREFIX.getToken() + propName + "\"]");
+                        }
+                        else
+                        {
+                            write(ASEmitterTokens.MEMBER_ACCESS);
+                            write(JSFlexJSEmitterTokens.GETTER_PREFIX);
+                        	write(propName);
+                        }
+                        wroteGetter = true;
                 	}
                 }
                 if (setterNode != null)
@@ -226,26 +270,27 @@ public class AccessorEmitter extends JSSubEmitter implements
                     if (wroteGetter)
                         writeNewline(ASEmitterTokens.COMMA);
 
-                    startMapping(setterNode);
                     write(ASEmitterTokens.SET);
                     write(ASEmitterTokens.COLON);
                     write(ASEmitterTokens.SPACE);
-                    write(JSDocEmitterTokens.JSDOC_OPEN);
-                    write(ASEmitterTokens.SPACE);
-                    write(ASEmitterTokens.ATSIGN);
-                    write(ASEmitterTokens.THIS);
-                    write(ASEmitterTokens.SPACE);
-                    write(ASEmitterTokens.BLOCK_OPEN);
                     write(getEmitter().formatQualifiedName(qname));
-                    write(ASEmitterTokens.BLOCK_CLOSE);
-                    write(ASEmitterTokens.SPACE);
-                    write(JSDocEmitterTokens.JSDOC_CLOSE);
-                    write(ASEmitterTokens.SPACE);
-                    write(ASEmitterTokens.FUNCTION);
-                    endMapping(setterNode);
-                    fjs.emitParameters(setterNode.getParametersContainerNode());
-
-                    fjs.emitDefinePropertyFunction(setterNode);
+                    write(ASEmitterTokens.MEMBER_ACCESS);
+                    write(JSEmitterTokens.PROTOTYPE);
+                    if (fjs.isCustomNamespace((FunctionNode)setterNode))
+                    {
+            			INamespaceDecorationNode ns = ((FunctionNode)setterNode).getActualNamespaceNode();
+                        ICompilerProject project = getWalker().getProject();
+            			INamespaceDefinition nsDef = (INamespaceDefinition)ns.resolve(project);
+            			fjs.formatQualifiedName(nsDef.getQualifiedName()); // register with used names 
+            			String s = nsDef.getURI();
+            			write("[\"" + s + "::" + JSFlexJSEmitterTokens.SETTER_PREFIX.getToken() + propName + "\"]");
+                    }
+                    else
+                    {
+                        write(ASEmitterTokens.MEMBER_ACCESS);
+                        write(JSFlexJSEmitterTokens.SETTER_PREFIX);
+                    	write(propName);
+                    }
                 }
                 else if (getterNode != null && getterNode.getDefinition().isOverride())
                 {
@@ -263,70 +308,110 @@ public class AccessorEmitter extends JSSubEmitter implements
                         write(ASEmitterTokens.SET);
                         write(ASEmitterTokens.COLON);
                         write(ASEmitterTokens.SPACE);
-                        write(JSDocEmitterTokens.JSDOC_OPEN);
-                        write(ASEmitterTokens.SPACE);
-                        write(ASEmitterTokens.ATSIGN);
-                        write(ASEmitterTokens.THIS);
-                        write(ASEmitterTokens.SPACE);
-                        write(ASEmitterTokens.BLOCK_OPEN);
-                        write(getEmitter().formatQualifiedName(qname));
-                        write(ASEmitterTokens.BLOCK_CLOSE);
-                        write(ASEmitterTokens.SPACE);
-                        write(JSDocEmitterTokens.JSDOC_CLOSE);
-                        write(ASEmitterTokens.SPACE);
-                        write(ASEmitterTokens.FUNCTION);
-                        write(ASEmitterTokens.PAREN_OPEN);
-                        write("value");
-                        write(ASEmitterTokens.PAREN_CLOSE);
-                        write(ASEmitterTokens.SPACE);
-                        writeNewline(ASEmitterTokens.BLOCK_OPEN);
-                        
-                        ICompilerProject project = this.getProject();
-                        if (project instanceof FlexJSProject)
-                        	((FlexJSProject)project).needLanguage = true;
-                        
-                        write(JSFlexJSEmitterTokens.LANGUAGE_QNAME);
+                        write(getEmitter().formatQualifiedName(other.getParent().getQualifiedName()));
                         write(ASEmitterTokens.MEMBER_ACCESS);
-                        write(JSFlexJSEmitterTokens.SUPERSETTER);
-                        write(ASEmitterTokens.PAREN_OPEN);
-                        write(getEmitter().formatQualifiedName(qname));
-                        writeToken(ASEmitterTokens.COMMA);
-                        write(ASEmitterTokens.THIS);
-                        writeToken(ASEmitterTokens.COMMA);
-                        write(ASEmitterTokens.SINGLE_QUOTE);
-                        write(propName);
-                        write(ASEmitterTokens.SINGLE_QUOTE);
-                        writeToken(ASEmitterTokens.COMMA);
-                        write("value");
-                        write(ASEmitterTokens.PAREN_CLOSE);
-                        writeNewline(ASEmitterTokens.SEMICOLON);
-                        write(ASEmitterTokens.BLOCK_CLOSE);
+                        write(JSEmitterTokens.PROTOTYPE);
+                        if (fjs.isCustomNamespace((FunctionNode)getterNode))
+                        {
+                			INamespaceDecorationNode ns = ((FunctionNode)getterNode).getActualNamespaceNode();
+                            ICompilerProject project = getWalker().getProject();
+                			INamespaceDefinition nsDef = (INamespaceDefinition)ns.resolve(project);
+                			fjs.formatQualifiedName(nsDef.getQualifiedName()); // register with used names 
+                			String s = nsDef.getURI();
+                			write("[\"" + s + "::" + JSFlexJSEmitterTokens.SETTER_PREFIX.getToken() + propName + "\"]");
+                        }
+                        else
+                        {
+                            write(ASEmitterTokens.MEMBER_ACCESS);
+                            write(JSFlexJSEmitterTokens.SETTER_PREFIX);
+                        	write(propName);
+                        }
                 	}
                 }
-                if (getterNode != null)
-                {
-                    startMapping(getterNode);
-                }
-                else
-                {
-                    startMapping(setterNode);
-                }
                 write(ASEmitterTokens.BLOCK_CLOSE);
+            }
+            writeNewline(ASEmitterTokens.BLOCK_CLOSE);
+            write(ASEmitterTokens.PAREN_CLOSE);
+            write(ASEmitterTokens.SEMICOLON);
+        }
+        if (!getModel().getStaticPropertyMap().isEmpty())
+        {
+            String qname = definition.getQualifiedName();
+            Set<String> propertyNames = getModel().getStaticPropertyMap().keySet();
+            for (String propName : propertyNames)
+            {
+                PropertyNodes p = getModel().getStaticPropertyMap().get(propName);
+                IGetterNode getterNode = p.getter;
+                ISetterNode setterNode = p.setter;
                 if (getterNode != null)
                 {
-                    endMapping(getterNode);
+                    writeNewline();
+                    writeNewline();
+                    writeNewline();
+                    write(getEmitter().formatQualifiedName(qname));
+                    if (fjs.isCustomNamespace((FunctionNode)getterNode))
+                    {
+            			INamespaceDecorationNode ns = ((FunctionNode)getterNode).getActualNamespaceNode();
+                        ICompilerProject project = getWalker().getProject();
+            			INamespaceDefinition nsDef = (INamespaceDefinition)ns.resolve(project);
+            			fjs.formatQualifiedName(nsDef.getQualifiedName()); // register with used names 
+            			String s = nsDef.getURI();
+            			write("[\"" + s + "::" + JSFlexJSEmitterTokens.GETTER_PREFIX.getToken() + propName + "\"]");
+                    }
+                    else
+                    {
+                        write(ASEmitterTokens.MEMBER_ACCESS);
+                        write(JSFlexJSEmitterTokens.GETTER_PREFIX);
+                    	write(propName);
+                    }
+                    write(ASEmitterTokens.SPACE);
+                    write(ASEmitterTokens.EQUAL);
+                    write(ASEmitterTokens.SPACE);
+                    write(ASEmitterTokens.FUNCTION);
+                    fjs.emitParameters(getterNode.getParametersContainerNode());
+
+                    fjs.emitDefinePropertyFunction(getterNode);
+                    
+                    write(ASEmitterTokens.SEMICOLON);
                 }
-                else
+                if (setterNode != null)
                 {
-                    endMapping(setterNode);
+                    writeNewline();
+                    writeNewline();
+                    writeNewline();
+                    write(getEmitter().formatQualifiedName(qname));
+                    if (fjs.isCustomNamespace((FunctionNode)setterNode))
+                    {
+            			INamespaceDecorationNode ns = ((FunctionNode)setterNode).getActualNamespaceNode();
+                        ICompilerProject project = getWalker().getProject();
+            			INamespaceDefinition nsDef = (INamespaceDefinition)ns.resolve(project);
+            			fjs.formatQualifiedName(nsDef.getQualifiedName()); // register with used names 
+            			String s = nsDef.getURI();
+            			write("[\"" + s + "::" + JSFlexJSEmitterTokens.SETTER_PREFIX.getToken() + propName + "\"]");
+                    }
+                    else
+                    {
+                        write(ASEmitterTokens.MEMBER_ACCESS);
+                        write(JSFlexJSEmitterTokens.SETTER_PREFIX);
+                    	write(propName);
+                    }
+                    write(ASEmitterTokens.SPACE);
+                    write(ASEmitterTokens.EQUAL);
+                    write(ASEmitterTokens.SPACE);
+                    write(ASEmitterTokens.FUNCTION);
+                    fjs.emitParameters(setterNode.getParametersContainerNode());
+
+                    fjs.emitDefinePropertyFunction(setterNode);
+                    
+                    write(ASEmitterTokens.SEMICOLON);
                 }
             }
-            writeNewline(ASEmitterTokens.BLOCK_CLOSE);
-            write(ASEmitterTokens.PAREN_CLOSE);
-            write(ASEmitterTokens.SEMICOLON);
         }
         if (!getModel().getStaticPropertyMap().isEmpty())
         {
+            writeNewline();
+            writeNewline();
+            writeNewline();
             write(JSGoogEmitterTokens.OBJECT);
             write(ASEmitterTokens.MEMBER_ACCESS);
             write(JSEmitterTokens.DEFINE_PROPERTIES);
@@ -358,71 +443,59 @@ public class AccessorEmitter extends JSSubEmitter implements
                 // build with ADVANCED_OPTIMIZATIONS, so I don't know what else
                 // to do. maybe it's a bug in closure compiler... -JT
                 writeNewline("/** @expose */");
-                if (getterNode != null)
-                {
-                    startMapping(getterNode);
-                }
-                else
-                {
-                    startMapping(setterNode);
-                }
                 write(propName);
                 write(ASEmitterTokens.COLON);
                 write(ASEmitterTokens.SPACE);
                 write(ASEmitterTokens.BLOCK_OPEN);
-                if (getterNode != null)
-                {
-                    endMapping(getterNode);
-                }
-                else
-                {
-                    endMapping(setterNode);
-                }
                 writeNewline();
                 if (getterNode != null)
                 {
-                    startMapping(getterNode);
                     write(ASEmitterTokens.GET);
                     write(ASEmitterTokens.COLON);
                     write(ASEmitterTokens.SPACE);
-                    write(ASEmitterTokens.FUNCTION);
-                    endMapping(getterNode);
-                    fjs.emitParameters(getterNode.getParametersContainerNode());
-
-                    fjs.emitDefinePropertyFunction(getterNode);
+                    write(getEmitter().formatQualifiedName(qname));
+                    if (fjs.isCustomNamespace((FunctionNode)getterNode))
+                    {
+            			INamespaceDecorationNode ns = ((FunctionNode)getterNode).getActualNamespaceNode();
+                        ICompilerProject project = getWalker().getProject();
+            			INamespaceDefinition nsDef = (INamespaceDefinition)ns.resolve(project);
+            			fjs.formatQualifiedName(nsDef.getQualifiedName()); // register with used names 
+            			String s = nsDef.getURI();
+            			write("[\"" + s + "::" + JSFlexJSEmitterTokens.GETTER_PREFIX.getToken() + propName + "\"]");
+                    }
+                    else
+                    {
+                        write(ASEmitterTokens.MEMBER_ACCESS);
+                        write(JSFlexJSEmitterTokens.GETTER_PREFIX);
+                    	write(propName);
+                    }
                 }
                 if (setterNode != null)
                 {
                     if (p.getter != null)
                         writeNewline(ASEmitterTokens.COMMA);
 
-                    startMapping(setterNode);
                     write(ASEmitterTokens.SET);
                     write(ASEmitterTokens.COLON);
                     write(ASEmitterTokens.SPACE);
-                    write(ASEmitterTokens.FUNCTION);
-                    endMapping(setterNode);
-                    fjs.emitParameters(setterNode.getParametersContainerNode());
-
-                    fjs.emitDefinePropertyFunction(setterNode);
-                }
-                if (getterNode != null)
-                {
-                    startMapping(getterNode);
-                }
-                else
-                {
-                    startMapping(setterNode);
+                    write(getEmitter().formatQualifiedName(qname));
+                    if (fjs.isCustomNamespace((FunctionNode)setterNode))
+                    {
+            			INamespaceDecorationNode ns = ((FunctionNode)setterNode).getActualNamespaceNode();
+                        ICompilerProject project = getWalker().getProject();
+            			INamespaceDefinition nsDef = (INamespaceDefinition)ns.resolve(project);
+            			fjs.formatQualifiedName(nsDef.getQualifiedName()); // register with used names 
+            			String s = nsDef.getURI();
+            			write("[\"" + s + "::" + JSFlexJSEmitterTokens.SETTER_PREFIX.getToken() + propName + "\"]");
+                    }
+                    else
+                    {
+                        write(ASEmitterTokens.MEMBER_ACCESS);
+                        write(JSFlexJSEmitterTokens.SETTER_PREFIX);
+                    	write(propName);
+                    }
                 }
                 write(ASEmitterTokens.BLOCK_CLOSE);
-                if (getterNode != null)
-                {
-                    endMapping(getterNode);
-                }
-                else
-                {
-                    endMapping(setterNode);
-                }
             }
             writeNewline(ASEmitterTokens.BLOCK_CLOSE);
             write(ASEmitterTokens.PAREN_CLOSE);

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/796b5e8c/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/BinaryOperatorEmitter.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/BinaryOperatorEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/BinaryOperatorEmitter.java
index 4e55256..38d13fe 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/BinaryOperatorEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/BinaryOperatorEmitter.java
@@ -28,6 +28,7 @@ import org.apache.flex.compiler.internal.codegen.js.JSSubEmitter;
 import org.apache.flex.compiler.internal.codegen.js.flexjs.JSFlexJSDocEmitter;
 import org.apache.flex.compiler.internal.codegen.js.flexjs.JSFlexJSEmitter;
 import org.apache.flex.compiler.internal.codegen.js.flexjs.JSFlexJSEmitterTokens;
+import org.apache.flex.compiler.internal.codegen.js.goog.JSGoogEmitterTokens;
 import org.apache.flex.compiler.internal.definitions.AccessorDefinition;
 import org.apache.flex.compiler.internal.projects.FlexJSProject;
 import org.apache.flex.compiler.internal.tree.as.FunctionCallNode;
@@ -109,14 +110,6 @@ public class BinaryOperatorEmitter extends JSSubEmitter implements
                 {
                     if (isAssignment)
                     {
-                        ICompilerProject project = this.getProject();
-                        if (project instanceof FlexJSProject)
-                        	((FlexJSProject)project).needLanguage = true;
-                        
-                        write(JSFlexJSEmitterTokens.LANGUAGE_QNAME);
-                        write(ASEmitterTokens.MEMBER_ACCESS);
-                        write(JSFlexJSEmitterTokens.SUPERSETTER);
-                        write(ASEmitterTokens.PAREN_OPEN);
                         IClassNode cnode = (IClassNode) node
                                 .getAncestorOfType(IClassNode.class);
                         if (cnode != null)
@@ -126,26 +119,28 @@ public class BinaryOperatorEmitter extends JSSubEmitter implements
                         	write(getEmitter().formatQualifiedName(
                         		getModel().getCurrentClass().getQualifiedName()));
                         			
-                        writeToken(ASEmitterTokens.COMMA);
+                        write(ASEmitterTokens.MEMBER_ACCESS);
+                        write(JSGoogEmitterTokens.GOOG_BASE);
+                        write(ASEmitterTokens.PAREN_OPEN);
                         write(ASEmitterTokens.THIS);
                         writeToken(ASEmitterTokens.COMMA);
                         write(ASEmitterTokens.SINGLE_QUOTE);
+                        write(JSFlexJSEmitterTokens.SETTER_PREFIX);
                         write(rnodeDef.getBaseName());
                         write(ASEmitterTokens.SINGLE_QUOTE);
                         writeToken(ASEmitterTokens.COMMA);
 
                         if (op.length() > 1) // += and things like that
                         {
-                            write(JSFlexJSEmitterTokens.LANGUAGE_QNAME);
-                            write(ASEmitterTokens.MEMBER_ACCESS);
-                            write(JSFlexJSEmitterTokens.SUPERSETTER);
-                            write(ASEmitterTokens.PAREN_OPEN);
                             write(getEmitter().formatQualifiedName(
                                     cnode.getQualifiedName()));
-                            writeToken(ASEmitterTokens.COMMA);
+                            write(ASEmitterTokens.MEMBER_ACCESS);
+                            write(JSGoogEmitterTokens.GOOG_BASE);
+                            write(ASEmitterTokens.PAREN_OPEN);
                             write(ASEmitterTokens.THIS);
                             writeToken(ASEmitterTokens.COMMA);
                             write(ASEmitterTokens.SINGLE_QUOTE);
+                            write(JSFlexJSEmitterTokens.SETTER_PREFIX);
                             write(rnodeDef.getBaseName());
                             write(ASEmitterTokens.SINGLE_QUOTE);
                             write(ASEmitterTokens.PAREN_CLOSE);

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/796b5e8c/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/MemberAccessEmitter.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/MemberAccessEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/MemberAccessEmitter.java
index 8778cfb..88a0262 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/MemberAccessEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/MemberAccessEmitter.java
@@ -27,6 +27,7 @@ import org.apache.flex.compiler.internal.codegen.as.ASEmitterTokens;
 import org.apache.flex.compiler.internal.codegen.js.JSSubEmitter;
 import org.apache.flex.compiler.internal.codegen.js.flexjs.JSFlexJSEmitter;
 import org.apache.flex.compiler.internal.codegen.js.flexjs.JSFlexJSEmitterTokens;
+import org.apache.flex.compiler.internal.codegen.js.goog.JSGoogEmitterTokens;
 import org.apache.flex.compiler.internal.definitions.AccessorDefinition;
 import org.apache.flex.compiler.internal.definitions.FunctionDefinition;
 import org.apache.flex.compiler.internal.projects.FlexJSProject;
@@ -289,22 +290,17 @@ public class MemberAccessEmitter extends JSSubEmitter implements
             else if (leftNode.getNodeID() == ASTNodeID.SuperID
                     && (rightNode.getNodeID() == ASTNodeID.GetterID || (rightDef != null && rightDef instanceof AccessorDefinition)))
             {
-                ICompilerProject project = this.getProject();
-                if (project instanceof FlexJSProject)
-                	((FlexJSProject)project).needLanguage = true;
-                // setter is handled in binaryOperator
-                write(JSFlexJSEmitterTokens.LANGUAGE_QNAME);
-                write(ASEmitterTokens.MEMBER_ACCESS);
-                write(JSFlexJSEmitterTokens.SUPERGETTER);
-                write(ASEmitterTokens.PAREN_OPEN);
                 IClassNode cnode = (IClassNode) node
                         .getAncestorOfType(IClassNode.class);
                 write(getEmitter().formatQualifiedName(
                         cnode.getQualifiedName()));
-                writeToken(ASEmitterTokens.COMMA);
+                write(ASEmitterTokens.MEMBER_ACCESS);
+                write(JSGoogEmitterTokens.GOOG_BASE);
+                write(ASEmitterTokens.PAREN_OPEN);
                 write(ASEmitterTokens.THIS);
                 writeToken(ASEmitterTokens.COMMA);
                 write(ASEmitterTokens.SINGLE_QUOTE);
+                write(JSFlexJSEmitterTokens.GETTER_PREFIX);
                 if (rightDef != null)
                     write(rightDef.getBaseName());
                 else

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/796b5e8c/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/SuperCallEmitter.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/SuperCallEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/SuperCallEmitter.java
index c8e41fb..0dc766d 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/SuperCallEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/SuperCallEmitter.java
@@ -84,26 +84,22 @@ public class SuperCallEmitter extends JSSubEmitter
                     && (fnode.getNodeID() == ASTNodeID.GetterID || fnode
                             .getNodeID() == ASTNodeID.SetterID))
             {
-                ICompilerProject project = this.getProject();
-                if (project instanceof FlexJSProject)
-                	((FlexJSProject)project).needLanguage = true;
-                write(JSFlexJSEmitterTokens.LANGUAGE_QNAME);
-                write(ASEmitterTokens.MEMBER_ACCESS);
-                if (fnode.getNodeID() == ASTNodeID.GetterID)
-                    write(JSFlexJSEmitterTokens.SUPERGETTER);
-                else
-                    write(JSFlexJSEmitterTokens.SUPERSETTER);
-                write(ASEmitterTokens.PAREN_OPEN);
                 if (cnode == null && thisClass != null)
                     write(getEmitter().formatQualifiedName(
                             thisClass.getQualifiedName()));
                 else
                     write(getEmitter().formatQualifiedName(
                             cnode.getQualifiedName()));
-                writeToken(ASEmitterTokens.COMMA);
+                write(ASEmitterTokens.MEMBER_ACCESS);
+                write(JSGoogEmitterTokens.GOOG_BASE);
+                write(ASEmitterTokens.PAREN_OPEN);
                 write(ASEmitterTokens.THIS);
                 writeToken(ASEmitterTokens.COMMA);
                 write(ASEmitterTokens.SINGLE_QUOTE);
+                if (fnode.getNodeID() == ASTNodeID.GetterID)
+                    write(JSFlexJSEmitterTokens.GETTER_PREFIX);
+                else
+                    write(JSFlexJSEmitterTokens.SETTER_PREFIX);
                 write(fnode.getName());
                 write(ASEmitterTokens.SINGLE_QUOTE);
 

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/796b5e8c/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessorMembers.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessorMembers.java b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessorMembers.java
index b00d31e..f4b0513 100644
--- a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessorMembers.java
+++ b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessorMembers.java
@@ -37,7 +37,9 @@ public class TestFlexJSAccessorMembers extends TestGoogAccessorMembers
         IClassNode node = (IClassNode) getNode("function get foo():int{}",
         		IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\nObject.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/** @export */\nfoo: {\nget: /** @this {FalconTest_A} */ function() {\n}}}\n);");
+        assertOut("/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\n" +
+				"FalconTest_A.prototype.get__foo = function() {\n};\n\n\n" +
+        		"Object.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/** @export */\nfoo: {\nget: FalconTest_A.prototype.get__foo}}\n);");
     }
 
     @Override
@@ -47,7 +49,9 @@ public class TestFlexJSAccessorMembers extends TestGoogAccessorMembers
     	IClassNode node = (IClassNode) getNode("function get foo():int{return -1;}",
     			IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\nObject.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/** @export */\nfoo: {\nget: /** @this {FalconTest_A} */ function() {\n  return -1;\n}}}\n);");
+        assertOut("/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\n" +
+				"FalconTest_A.prototype.get__foo = function() {\n  return -1;\n};\n\n\n" +
+        		"Object.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/** @export */\nfoo: {\nget: FalconTest_A.prototype.get__foo}}\n);");
     }
 
     @Override
@@ -57,7 +61,9 @@ public class TestFlexJSAccessorMembers extends TestGoogAccessorMembers
     	IClassNode node = (IClassNode) getNode("public function get foo():int{return -1;}",
         		IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\nObject.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/** @export */\nfoo: {\nget: /** @this {FalconTest_A} */ function() {\n  return -1;\n}}}\n);");
+        assertOut("/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\n" +
+				"FalconTest_A.prototype.get__foo = function() {\n  return -1;\n};\n\n\n" +
+        		"Object.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/** @export */\nfoo: {\nget: FalconTest_A.prototype.get__foo}}\n);");
     }
 
     @Override
@@ -67,7 +73,9 @@ public class TestFlexJSAccessorMembers extends TestGoogAccessorMembers
     	IClassNode node = (IClassNode) getNode("public class B extends A { public override function get foo():int{return super.foo;} }; public class A {public function get foo():int {return 0;}} ",
         		IClassNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @extends {A}\n */\nB = function() {\n  B.base(this, 'constructor');\n};\ngoog.inherits(B, A);\n\n\nObject.defineProperties(B.prototype, /** @lends {B.prototype} */ {\n/** @export */\nfoo: {\nget: /** @this {B} */ function() {\n  return org.apache.flex.utils.Language.superGetter(B, this, 'foo');\n}}}\n);");
+        assertOut("/**\n * @constructor\n * @extends {A}\n */\nB = function() {\n  B.base(this, 'constructor');\n};\ngoog.inherits(B, A);\n\n\n" +
+				"B.prototype.get__foo = function() {\n  return B.base(this, 'get__foo');\n};\n\n\n" +
+        		"Object.defineProperties(B.prototype, /** @lends {B.prototype} */ {\n/** @export */\nfoo: {\nget: B.prototype.get__foo}}\n);");
     }
 
     @Test
@@ -76,7 +84,9 @@ public class TestFlexJSAccessorMembers extends TestGoogAccessorMembers
     	IClassNode node = (IClassNode) getNode("public class B extends A { public override function get foo():int{return super.foo;} }; public class A { public function set foo(value:int):void{} public function get foo():int {return 0;}}",
         		IClassNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @extends {A}\n */\nB = function() {\n  B.base(this, 'constructor');\n};\ngoog.inherits(B, A);\n\n\nObject.defineProperties(B.prototype, /** @lends {B.prototype} */ {\n/** @export */\nfoo: {\nget: /** @this {B} */ function() {\n  return org.apache.flex.utils.Language.superGetter(B, this, 'foo');\n},\nset: /** @this {B} */ function(value) {\norg.apache.flex.utils.Language.superSetter(B, this, 'foo', value);\n}}}\n);");
+        assertOut("/**\n * @constructor\n * @extends {A}\n */\nB = function() {\n  B.base(this, 'constructor');\n};\ngoog.inherits(B, A);\n\n\n" +
+				"B.prototype.get__foo = function() {\n  return B.base(this, 'get__foo');\n};\n\n\n" +
+        		"Object.defineProperties(B.prototype, /** @lends {B.prototype} */ {\n/** @export */\nfoo: {\nget: B.prototype.get__foo,\nset: A.prototype.set__foo}}\n);");
     }
     
     @Override
@@ -86,7 +96,9 @@ public class TestFlexJSAccessorMembers extends TestGoogAccessorMembers
     	IClassNode node = (IClassNode) getNode("public static function get foo():int{return -1;}",
         		IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\nFalconTest_A = function() {\n};Object.defineProperties(FalconTest_A, /** @lends {FalconTest_A} */ {\n/** @expose */\nfoo: {\nget: function() {\n  return -1;\n}}}\n);");
+        assertOut("/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\n" +
+				"FalconTest_A.get__foo = function() {\n  return -1;\n};\n\n\n" +
+        		"Object.defineProperties(FalconTest_A, /** @lends {FalconTest_A} */ {\n/** @expose */\nfoo: {\nget: FalconTest_A.get__foo}}\n);");
     }
 
     @Override
@@ -96,7 +108,9 @@ public class TestFlexJSAccessorMembers extends TestGoogAccessorMembers
     	IClassNode node = (IClassNode) getNode("function set foo(value:int):void{}",
         		IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\nObject.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/** @export */\nfoo: {\nset: /** @this {FalconTest_A} */ function(value) {\n}}}\n);");
+        assertOut("/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\n" +
+				"FalconTest_A.prototype.set__foo = function(value) {\n};\n\n\n" +
+        		"Object.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/** @export */\nfoo: {\nset: FalconTest_A.prototype.set__foo}}\n);");
     }
 
     @Override
@@ -106,7 +120,9 @@ public class TestFlexJSAccessorMembers extends TestGoogAccessorMembers
     	IClassNode node = (IClassNode) getNode("function set foo(value:int):void{fetch('haai');}",
         		IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\nObject.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/** @export */\nfoo: {\nset: /** @this {FalconTest_A} */ function(value) {\n  fetch('haai');\n}}}\n);");
+        assertOut("/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\n" +
+				"FalconTest_A.prototype.set__foo = function(value) {\n  fetch('haai');\n};\n\n\n" +
+        		"Object.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/** @export */\nfoo: {\nset: FalconTest_A.prototype.set__foo}}\n);");
     }
 
     @Override
@@ -116,7 +132,9 @@ public class TestFlexJSAccessorMembers extends TestGoogAccessorMembers
     	IClassNode node = (IClassNode) getNode("public function set foo(value:int):void{}",
         		IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\nObject.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/** @export */\nfoo: {\nset: /** @this {FalconTest_A} */ function(value) {\n}}}\n);");
+        assertOut("/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\n" +
+				"FalconTest_A.prototype.set__foo = function(value) {\n};\n\n\n" +
+        		"Object.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/** @export */\nfoo: {\nset: FalconTest_A.prototype.set__foo}}\n);");
     }
 
     @Override
@@ -126,7 +144,9 @@ public class TestFlexJSAccessorMembers extends TestGoogAccessorMembers
     	IClassNode node = (IClassNode) getNode("public class B extends A { public override function set foo(value:int):void {super.foo = value;} }; public class A { public function set foo(value:int):void{}}",
         		IClassNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @extends {A}\n */\nB = function() {\n  B.base(this, 'constructor');\n};\ngoog.inherits(B, A);\n\n\nObject.defineProperties(B.prototype, /** @lends {B.prototype} */ {\n/** @export */\nfoo: {\nset: /** @this {B} */ function(value) {\n  org.apache.flex.utils.Language.superSetter(B, this, 'foo', value);\n}}}\n);");
+        assertOut("/**\n * @constructor\n * @extends {A}\n */\nB = function() {\n  B.base(this, 'constructor');\n};\ngoog.inherits(B, A);\n\n\n" +
+				"B.prototype.set__foo = function(value) {\n  B.base(this, 'set__foo', value);\n};\n\n\n" +
+        		"Object.defineProperties(B.prototype, /** @lends {B.prototype} */ {\n/** @export */\nfoo: {\nset: B.prototype.set__foo}}\n);");
     }
 
     @Override
@@ -136,7 +156,9 @@ public class TestFlexJSAccessorMembers extends TestGoogAccessorMembers
     	IClassNode node = (IClassNode) getNode("public static function set foo(value:int):void{}",
         		IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\nFalconTest_A = function() {\n};Object.defineProperties(FalconTest_A, /** @lends {FalconTest_A} */ {\n/** @expose */\nfoo: {\nset: function(value) {\n}}}\n);");
+        assertOut("/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\n" +
+				"FalconTest_A.set__foo = function(value) {\n};\n\n\n" +
+        		"Object.defineProperties(FalconTest_A, /** @lends {FalconTest_A} */ {\n/** @expose */\nfoo: {\nset: FalconTest_A.set__foo}}\n);");
     }
 
     @Test
@@ -145,7 +167,9 @@ public class TestFlexJSAccessorMembers extends TestGoogAccessorMembers
     	IClassNode node = (IClassNode) getNode("public class B extends A { public override function set foo(value:int):void {super.foo = value;} }; public class A { public function set foo(value:int):void{} public function get foo():int { return 0;}}",
         		IClassNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n * @extends {A}\n */\nB = function() {\n  B.base(this, 'constructor');\n};\ngoog.inherits(B, A);\n\n\nObject.defineProperties(B.prototype, /** @lends {B.prototype} */ {\n/** @export */\nfoo: {\nget: /** @this {B} */ function() {\nreturn org.apache.flex.utils.Language.superGetter(B, this, 'foo');\n},\nset: /** @this {B} */ function(value) {\n  org.apache.flex.utils.Language.superSetter(B, this, 'foo', value);\n}}}\n);");
+        assertOut("/**\n * @constructor\n * @extends {A}\n */\nB = function() {\n  B.base(this, 'constructor');\n};\ngoog.inherits(B, A);\n\n\n" +
+				"B.prototype.set__foo = function(value) {\n  B.base(this, 'set__foo', value);\n};\n\n\n" +
+        		"Object.defineProperties(B.prototype, /** @lends {B.prototype} */ {\n/** @export */\nfoo: {\nget: A.prototype.get__foo,\nset: B.prototype.set__foo}}\n);");
     }
     
     @Override

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/796b5e8c/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessors.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessors.java b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessors.java
index eeec770..eb27626 100644
--- a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessors.java
+++ b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSAccessors.java
@@ -38,7 +38,11 @@ public class TestFlexJSAccessors extends ASTestBase
                 "public function doStuff():void {label = 'hello, bye'; var theLabel:String = label;}; private var _label:String; public function get label():String {return _label}; public function set label(value:String):void {_label = value}; ",
                 IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\n/**\n * @export\n */\nFalconTest_A.prototype.doStuff = function() {\n  this.label = 'hello, bye';\n  var /** @type {string} */ theLabel = this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nFalconTest_A.prototype._label;\n\n\nObject.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/** @export */\nlabel: {\nget: /** @this {FalconTest_A} */ function() {\n  return this._label;\n},\nset: /** @this {FalconTest_A} */ function(value) {\n  this._label = value;\n}}}\n);";
+        String expected = "/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\n/**\n * @export\n */\nFalconTest_A.prototype.doStuff = function() {\n  this.label = 'hello, bye';\n  var /** @type {string} */ theLabel = this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nFalconTest_A.prototype._label;\n\n\n" +
+        		"FalconTest_A.prototype.get__label = function() {\n  return this._label;\n};\n\n\n" +
+        		"FalconTest_A.prototype.set__label = function(value) {\n  this._label = value;\n};\n\n\n" +
+        		"Object.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/** @export */\n" +
+        		"label: {\nget: FalconTest_A.prototype.get__label,\nset: FalconTest_A.prototype.set__label}}\n);";
         assertOut(expected);
     }
 
@@ -49,7 +53,11 @@ public class TestFlexJSAccessors extends ASTestBase
                 "public class B { public function B() {}; public function doStuff():void {this.label = label + 'bye'; var theLabel:String = label;}; private var _label:String; public function get label():String {return _label}; public function set label(value:String):void {_label = value};}",
                 IClassNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\nB = function() {\n};\n\n\n/**\n * @export\n */\nB.prototype.doStuff = function() {\n  this.label = this.label + 'bye';\n  var /** @type {string} */ theLabel = this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nB.prototype._label;\n\n\nObject.defineProperties(B.prototype, /** @lends {B.prototype} */ {\n/** @export */\nlabel: {\nget: /** @this {B} */ function() {\n  return this._label;\n},\nset: /** @this {B} */ function(value) {\n  this._label = value;\n}}}\n);"; 
+        String expected = "/**\n * @constructor\n */\nB = function() {\n};\n\n\n/**\n * @export\n */\nB.prototype.doStuff = function() {\n  this.label = this.label + 'bye';\n  var /** @type {string} */ theLabel = this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nB.prototype._label;\n\n\n" +
+				"B.prototype.get__label = function() {\n  return this._label;\n};\n\n\n" +
+				"B.prototype.set__label = function(value) {\n  this._label = value;\n};\n\n\n" +
+        		"Object.defineProperties(B.prototype, /** @lends {B.prototype} */ {\n/** @export */\nlabel: {\n" +
+        		"get: B.prototype.get__label,\nset: B.prototype.set__label}}\n);"; 
         assertOut(expected);
     }
 
@@ -60,7 +68,11 @@ public class TestFlexJSAccessors extends ASTestBase
                 "public function doStuff():void {label = label + 'bye'; var theLabel:String = label;}; private var _label:String; public function get label():String {return _label}; public function set label(value:String):void {_label = value}; ",
                 IClassNode.class, WRAP_LEVEL_CLASS);
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\n/**\n * @export\n */\nFalconTest_A.prototype.doStuff = function() {\n  this.label = this.label + 'bye';\n  var /** @type {string} */ theLabel = this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nFalconTest_A.prototype._label;\n\n\nObject.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/** @export */\nlabel: {\nget: /** @this {FalconTest_A} */ function() {\n  return this._label;\n},\nset: /** @this {FalconTest_A} */ function(value) {\n  this._label = value;\n}}}\n);";
+        String expected = "/**\n * @constructor\n */\nFalconTest_A = function() {\n};\n\n\n/**\n * @export\n */\nFalconTest_A.prototype.doStuff = function() {\n  this.label = this.label + 'bye';\n  var /** @type {string} */ theLabel = this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nFalconTest_A.prototype._label;\n\n\n" +
+				"FalconTest_A.prototype.get__label = function() {\n  return this._label;\n};\n\n\n" +
+				"FalconTest_A.prototype.set__label = function(value) {\n  this._label = value;\n};\n\n\n" +
+				"Object.defineProperties(FalconTest_A.prototype, /** @lends {FalconTest_A.prototype} */ {\n/** @export */\nlabel: {\n" +
+				"get: FalconTest_A.prototype.get__label,\nset: FalconTest_A.prototype.set__label}}\n);"; 
         assertOut(expected);
     }
     
@@ -71,7 +83,11 @@ public class TestFlexJSAccessors extends ASTestBase
                 "public class B { public function B() {}; public function doStuff():void {label = this.label; var theLabel:String = label;}; private var _label:String; public function get label():String {return _label}; public function set label(value:String):void {_label = value};}",
                 IClassNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\nB = function() {\n};\n\n\n/**\n * @export\n */\nB.prototype.doStuff = function() {\n  this.label = this.label;\n  var /** @type {string} */ theLabel = this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nB.prototype._label;\n\n\nObject.defineProperties(B.prototype, /** @lends {B.prototype} */ {\n/** @export */\nlabel: {\nget: /** @this {B} */ function() {\n  return this._label;\n},\nset: /** @this {B} */ function(value) {\n  this._label = value;\n}}}\n);";
+        String expected = "/**\n * @constructor\n */\nB = function() {\n};\n\n\n/**\n * @export\n */\nB.prototype.doStuff = function() {\n  this.label = this.label;\n  var /** @type {string} */ theLabel = this.label;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nB.prototype._label;\n\n\n" +
+				"B.prototype.get__label = function() {\n  return this._label;\n};\n\n\n" +
+				"B.prototype.set__label = function(value) {\n  this._label = value;\n};\n\n\n" +
+				"Object.defineProperties(B.prototype, /** @lends {B.prototype} */ {\n/** @export */\nlabel: {\n" +
+				"get: B.prototype.get__label,\nset: B.prototype.set__label}}\n);"; 
         assertOut(expected);
     }
 
@@ -82,7 +98,10 @@ public class TestFlexJSAccessors extends ASTestBase
                 "import flash.utils.flash_proxy;use namespace flash_proxy;public class B { public function B() {}; public function doStuff():void {var theLabel:String = label; label = theLabel;}; private var _label:String; flash_proxy function get label():String {return _label}; flash_proxy function set label(value:String):void {_label = value};}",
                 IClassNode.class, WRAP_LEVEL_PACKAGE);
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\nB = function() {\n};\n\n\n/**\n * @export\n */\nB.prototype.doStuff = function() {\n  var /** @type {string} */ theLabel = this[\"http://www.adobe.com/2006/actionscript/flash/proxy::label\"];\n  this[\"http://www.adobe.com/2006/actionscript/flash/proxy::label\"] = theLabel;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nB.prototype._label;\n\n\nObject.defineProperties(B.prototype, /** @lends {B.prototype} */ {\n/** @export */\n\"http://www.adobe.com/2006/actionscript/flash/proxy::label\": {\nget: /** @this {B} */ function() {\n  return this._label;\n},\nset: /** @this {B} */ function(value) {\n  this._label = value;\n}}}\n);";
+        String expected = "/**\n * @constructor\n */\nB = function() {\n};\n\n\n/**\n * @export\n */\nB.prototype.doStuff = function() {\n  var /** @type {string} */ theLabel = this[\"http://www.adobe.com/2006/actionscript/flash/proxy::label\"];\n  this[\"http://www.adobe.com/2006/actionscript/flash/proxy::label\"] = theLabel;\n};\n\n\n/**\n * @private\n * @type {string}\n */\nB.prototype._label;\n\n\n" +
+				"B.prototype[\"http://www.adobe.com/2006/actionscript/flash/proxy::get__label\"] = function() {\n  return this._label;\n};\n\n\n" +
+				"B.prototype[\"http://www.adobe.com/2006/actionscript/flash/proxy::set__label\"] = function(value) {\n  this._label = value;\n};\n\n\n" +
+        		"Object.defineProperties(B.prototype, /** @lends {B.prototype} */ {\n/** @export */\n\"http://www.adobe.com/2006/actionscript/flash/proxy::label\": {\nget: B.prototype[\"http://www.adobe.com/2006/actionscript/flash/proxy::get__label\"],\nset: B.prototype[\"http://www.adobe.com/2006/actionscript/flash/proxy::set__label\"]}}\n);";
         assertOut(expected);
     }
 

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/796b5e8c/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSClass.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSClass.java b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSClass.java
index f4ba174..f03414d 100644
--- a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSClass.java
+++ b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSClass.java
@@ -183,7 +183,7 @@ public class TestFlexJSClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class B {public function B() {}; public function set baz(value:Object):void {}; public function set foo(value:Object):void {baz = value;};}");
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n */\norg.apache.flex.B = function() {\n};\n\n\nObject.defineProperties(org.apache.flex.B.prototype, /** @lends {org.apache.flex.B.prototype} */ {\n/** @export */\nbaz: {\nset: /** @this {org.apache.flex.B} */ function(value) {\n}},\n/** @export */\nfoo: {\nset: /** @this {org.apache.flex.B} */ function(value) {\n  this.baz = value;\n}}}\n);";
+        String expected = "/**\n * @constructor\n */\norg.apache.flex.B = function() {\n};\n\n\norg.apache.flex.B.prototype.set__baz = function(value) {\n};\n\n\norg.apache.flex.B.prototype.set__foo = function(value) {\n  this.baz = value;\n};\n\n\nObject.defineProperties(org.apache.flex.B.prototype, /** @lends {org.apache.flex.B.prototype} */ {\n/** @export */\nbaz: {\nset: org.apache.flex.B.prototype.set__baz},\n/** @export */\nfoo: {\nset: org.apache.flex.B.prototype.set__foo}}\n);";
         assertOut(expected);
     }
 
@@ -192,7 +192,7 @@ public class TestFlexJSClass extends TestGoogClass
     {
         IClassNode node = getClassNode("public class B extends A {public function B() {}; override public function set foo(value:Object):void {super.foo = value;};} class A {public function set foo(value:Object):void {}}");
         asBlockWalker.visitClass(node);
-        String expected = "/**\n * @constructor\n * @extends {org.apache.flex.A}\n */\norg.apache.flex.B = function() {\n  org.apache.flex.B.base(this, 'constructor');\n};\ngoog.inherits(org.apache.flex.B, org.apache.flex.A);\n\n\nObject.defineProperties(org.apache.flex.B.prototype, /** @lends {org.apache.flex.B.prototype} */ {\n/** @export */\nfoo: {\nset: /** @this {org.apache.flex.B} */ function(value) {\n  org.apache.flex.utils.Language.superSetter(org.apache.flex.B, this, 'foo', value);\n}}}\n);";
+        String expected = "/**\n * @constructor\n * @extends {org.apache.flex.A}\n */\norg.apache.flex.B = function() {\n  org.apache.flex.B.base(this, 'constructor');\n};\ngoog.inherits(org.apache.flex.B, org.apache.flex.A);\n\n\norg.apache.flex.B.prototype.set__foo = function(value) {\n  org.apache.flex.B.base(this, 'set__foo', value);\n};\n\n\nObject.defineProperties(org.apache.flex.B.prototype, /** @lends {org.apache.flex.B.prototype} */ {\n/** @export */\nfoo: {\nset: org.apache.flex.B.prototype.set__foo}}\n);";
         assertOut(expected);
     }
 
@@ -253,7 +253,24 @@ public class TestFlexJSClass extends TestGoogClass
                 + "flash_proxy function get foo6():Object{return null;}"
                 + "flash_proxy function set foo6(value:Object):void{}" + "}");
         asBlockWalker.visitClass(node);
-        assertOut("/**\n * @constructor\n */\norg.apache.flex.A = function() {\n};\n\n\nObject.defineProperties(org.apache.flex.A.prototype, /** @lends {org.apache.flex.A.prototype} */ {\n/** @export */\nfoo1: {\nget: /** @this {org.apache.flex.A} */ function() {\n  return null;\n},\nset: /** @this {org.apache.flex.A} */ function(value) {\n}},\n/** @export */\nfoo2: {\nget: /** @this {org.apache.flex.A} */ function() {\n  return null;\n},\nset: /** @this {org.apache.flex.A} */ function(value) {\n}},\n/** @export */\nfoo3: {\nget: /** @this {org.apache.flex.A} */ function() {\n  return null;\n},\nset: /** @this {org.apache.flex.A} */ function(value) {\n}},\n/** @export */\nfoo5: {\nget: /** @this {org.apache.flex.A} */ function() {\n  return null;\n},\nset: /** @this {org.apache.flex.A} */ function(value) {\n}},\n/** @export */\n\"http://www.adobe.com/2006/actionscript/flash/proxy::foo6\": {\nget: /** @this {org.apache.flex.A} */ function() {\n  return null;\n},\nset: /** @this {org.
 apache.flex.A} */ function(value) {\n}}}\n);");
+        assertOut("/**\n * @constructor\n */\norg.apache.flex.A = function() {\n};\n\n\n" +
+        		"org.apache.flex.A.prototype.get__foo1 = function() {\n  return null;\n};\n\n\n" +
+        		"org.apache.flex.A.prototype.set__foo1 = function(value) {\n};\n\n\n" +
+        		"org.apache.flex.A.prototype.get__foo2 = function() {\n  return null;\n};\n\n\n" +
+        		"org.apache.flex.A.prototype.set__foo2 = function(value) {\n};\n\n\n" +
+        		"org.apache.flex.A.prototype.get__foo3 = function() {\n  return null;\n};\n\n\n" +
+        		"org.apache.flex.A.prototype.set__foo3 = function(value) {\n};\n\n\n" +
+        		"org.apache.flex.A.prototype.get__foo5 = function() {\n  return null;\n};\n\n\n" +
+        		"org.apache.flex.A.prototype.set__foo5 = function(value) {\n};\n\n\n" +
+        		"org.apache.flex.A.prototype[\"http://www.adobe.com/2006/actionscript/flash/proxy::get__foo6\"] = function() {\n  return null;\n};\n\n\n" +
+        		"org.apache.flex.A.prototype[\"http://www.adobe.com/2006/actionscript/flash/proxy::set__foo6\"] = function(value) {\n};\n\n\n" +
+        		"Object.defineProperties(org.apache.flex.A.prototype, /** @lends {org.apache.flex.A.prototype} */ {\n/** @export */\n" +
+        		    "foo1: {\nget: org.apache.flex.A.prototype.get__foo1,\nset: org.apache.flex.A.prototype.set__foo1},\n/** @export */\n" +
+        		    "foo2: {\nget: org.apache.flex.A.prototype.get__foo2,\nset: org.apache.flex.A.prototype.set__foo2},\n/** @export */\n" +
+        		    "foo3: {\nget: org.apache.flex.A.prototype.get__foo3,\nset: org.apache.flex.A.prototype.set__foo3},\n/** @export */\n" +
+        		    "foo5: {\nget: org.apache.flex.A.prototype.get__foo5,\nset: org.apache.flex.A.prototype.set__foo5},\n/** @export */\n" +
+        		    "\"http://www.adobe.com/2006/actionscript/flash/proxy::foo6\": {\nget: org.apache.flex.A.prototype[\"http://www.adobe.com/2006/actionscript/flash/proxy::get__foo6\"],\n" +
+        		    																"set: org.apache.flex.A.prototype[\"http://www.adobe.com/2006/actionscript/flash/proxy::set__foo6\"]}}\n);");
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/796b5e8c/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSPackage.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSPackage.java b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSPackage.java
index e6ab1e4..7b88384 100644
--- a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSPackage.java
+++ b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSPackage.java
@@ -847,14 +847,20 @@ public class TestFlexJSPackage extends TestGoogPackage
         		  "};\n" +
         		  "\n" +
         		  "\n" +
+                  "foo.bar.baz.A.prototype.get__myString = function() {\n" +
+                  "  return null;\n" +
+                  "};\n" +
+        		  "\n" +
+        		  "\n" +
+                  "foo.bar.baz.A.prototype.set__myString = function(value) {\n" +
+                  "};\n" +
+        		  "\n" +
+        		  "\n" +
         		  "Object.defineProperties(foo.bar.baz.A.prototype, /** @lends {foo.bar.baz.A.prototype} */ {\n" +
                   "/** @export */\n" +
                   "myString: {\n" +
-                  "get: /** @this {foo.bar.baz.A} */ function() {\n" +
-                  "  return null;\n" +
-                  "},\n" +
-                  "set: /** @this {foo.bar.baz.A} */ function(value) {\n" +
-                  "}}}\n" +
+                  "get: foo.bar.baz.A.prototype.get__myString,\n" +
+                  "set: foo.bar.baz.A.prototype.set__myString}}\n" +
                   ");\n" +
         		  "\n" +
         		  "\n" +
@@ -906,14 +912,20 @@ public class TestFlexJSPackage extends TestGoogPackage
         		  "};\n" +
         		  "\n" +
         		  "\n" +
+                  "foo.bar.baz.A.InternalClass.prototype.get__someString = function() {\n" +
+                  "  return null;\n" +
+                  "};\n" +
+        		  "\n" +
+        		  "\n" +
+                  "foo.bar.baz.A.InternalClass.prototype.set__someString = function(value) {\n" +
+                  "};\n" +
+        		  "\n" +
+        		  "\n" +
         		  "Object.defineProperties(foo.bar.baz.A.InternalClass.prototype, /** @lends {foo.bar.baz.A.InternalClass.prototype} */ {\n" +
                   "/** @export */\n" +
                   "someString: {\n" +
-                  "get: /** @this {foo.bar.baz.A.InternalClass} */ function() {\n" +
-                  "  return null;\n" +
-                  "},\n" +
-                  "set: /** @this {foo.bar.baz.A.InternalClass} */ function(value) {\n" +
-                  "}}}\n" +
+                  "get: foo.bar.baz.A.InternalClass.prototype.get__someString,\n" +
+                  "set: foo.bar.baz.A.InternalClass.prototype.set__someString}}\n" +
                   ");\n" +
         		  "\n" +
         		  "\n" +

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/796b5e8c/compiler-jx/src/test/resources/flexjs/files/MyInitialView_result.js
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/resources/flexjs/files/MyInitialView_result.js b/compiler-jx/src/test/resources/flexjs/files/MyInitialView_result.js
index 6d5bb11..cb99317 100644
--- a/compiler-jx/src/test/resources/flexjs/files/MyInitialView_result.js
+++ b/compiler-jx/src/test/resources/flexjs/files/MyInitialView_result.js
@@ -301,27 +301,39 @@ MyInitialView.prototype.timerHandler = function(event) {
 
 
 
+MyInitialView.prototype.get__symbol = function() {
+  return org.apache.flex.utils.Language.as(this.list.selectedItem, String);
+};
+
+
+MyInitialView.prototype.get__city = function() {
+  return org.apache.flex.utils.Language.as(this.cityList.selectedItem, String);
+};
+
+
+MyInitialView.prototype.get__inputText = function() {
+  return this.input.text;
+};
+
+
+MyInitialView.prototype.get__comboBoxValue = function() {
+  return String(this.comboBox.selectedItem);
+};
+
+
 Object.defineProperties(MyInitialView.prototype, /** @lends {MyInitialView.prototype} */ {
 /** @export */
 symbol: {
-get: /** @this {MyInitialView} */ function() {
-  return org.apache.flex.utils.Language.as(this.list.selectedItem, String);
-}},
+get: MyInitialView.prototype.get__symbol},
 /** @export */
 city: {
-get: /** @this {MyInitialView} */ function() {
-  return org.apache.flex.utils.Language.as(this.cityList.selectedItem, String);
-}},
+get: MyInitialView.prototype.get__city},
 /** @export */
 inputText: {
-get: /** @this {MyInitialView} */ function() {
-  return this.input.text;
-}},
+get: MyInitialView.prototype.get__inputText},
 /** @export */
 comboBoxValue: {
-get: /** @this {MyInitialView} */ function() {
-  return String(this.comboBox.selectedItem);
-}}}
+get: MyInitialView.prototype.get__comboBoxValue}}
 );/**
  * @export
  * @param {org.apache.flex.events.MouseEvent} event

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/796b5e8c/compiler-jx/src/test/resources/flexjs/files/models/MyModel_result.js
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/resources/flexjs/files/models/MyModel_result.js b/compiler-jx/src/test/resources/flexjs/files/models/MyModel_result.js
index 7a26fe9..fdded26 100644
--- a/compiler-jx/src/test/resources/flexjs/files/models/MyModel_result.js
+++ b/compiler-jx/src/test/resources/flexjs/files/models/MyModel_result.js
@@ -57,28 +57,40 @@ models.MyModel.prototype._strings;
 models.MyModel.prototype._cities;
 
 
-Object.defineProperties(models.MyModel.prototype, /** @lends {models.MyModel.prototype} */ {
-/** @export */
-labelText: {
-get: /** @this {models.MyModel} */ function() {
+models.MyModel.prototype.get__labelText = function() {
   return this._labelText;
-},
-set: /** @this {models.MyModel} */ function(value) {
+};
+
+
+models.MyModel.prototype.set__labelText = function(value) {
   if (value != this._labelText) {
     this._labelText = value;
     this.dispatchEvent(new org.apache.flex.events.Event("labelTextChanged"));
   }
-}},
+};
+
+
+models.MyModel.prototype.get__strings = function() {
+  return this._strings;
+};
+
+
+models.MyModel.prototype.get__cities = function() {
+  return this._cities;
+};
+
+
+Object.defineProperties(models.MyModel.prototype, /** @lends {models.MyModel.prototype} */ {
+/** @export */
+labelText: {
+get: models.MyModel.prototype.get__labelText,
+set: models.MyModel.prototype.set__labelText},
 /** @export */
 strings: {
-get: /** @this {models.MyModel} */ function() {
-  return this._strings;
-}},
+get: models.MyModel.prototype.get__strings},
 /** @export */
 cities: {
-get: /** @this {models.MyModel} */ function() {
-  return this._cities;
-}}}
+get: models.MyModel.prototype.get__cities}}
 );
 
 

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/796b5e8c/compiler-jx/src/test/resources/flexjs/projects/super/Base_result.js
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/resources/flexjs/projects/super/Base_result.js b/compiler-jx/src/test/resources/flexjs/projects/super/Base_result.js
index 1306674..82416c8 100644
--- a/compiler-jx/src/test/resources/flexjs/projects/super/Base_result.js
+++ b/compiler-jx/src/test/resources/flexjs/projects/super/Base_result.js
@@ -22,7 +22,6 @@
 goog.provide('Base');
 
 goog.require('Super');
-goog.require('org.apache.flex.utils.Language');
 
 
 
@@ -36,17 +35,23 @@ Base = function() {
 goog.inherits(Base, Super);
 
 
+Base.prototype.get__text = function() {
+  return "A" + Base.base(this, 'get__text');
+};
+
+
+Base.prototype.set__text = function(value) {
+  if (value != Base.base(this, 'get__text')) {
+    Base.base(this, 'set__text', "B" + value);
+  }
+};
+
+
 Object.defineProperties(Base.prototype, /** @lends {Base.prototype} */ {
 /** @export */
 text: {
-get: /** @this {Base} */ function() {
-  return "A" + org.apache.flex.utils.Language.superGetter(Base, this, 'text');
-},
-set: /** @this {Base} */ function(value) {
-  if (value != org.apache.flex.utils.Language.superGetter(Base, this, 'text')) {
-    org.apache.flex.utils.Language.superSetter(Base, this, 'text', "B" + value);
-  }
-}}}
+get: Base.prototype.get__text,
+set: Base.prototype.set__text}}
 );
 
 

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/796b5e8c/compiler-jx/src/test/resources/flexjs/projects/super/Super_result.js
----------------------------------------------------------------------
diff --git a/compiler-jx/src/test/resources/flexjs/projects/super/Super_result.js b/compiler-jx/src/test/resources/flexjs/projects/super/Super_result.js
index 665c502..0f44dd5 100644
--- a/compiler-jx/src/test/resources/flexjs/projects/super/Super_result.js
+++ b/compiler-jx/src/test/resources/flexjs/projects/super/Super_result.js
@@ -37,17 +37,23 @@ Super = function() {
 Super.prototype._text = '';
 
 
-Object.defineProperties(Super.prototype, /** @lends {Super.prototype} */ {
-/** @export */
-text: {
-get: /** @this {Super} */ function() {
+Super.prototype.get__text = function() {
   return this._text;
-},
-set: /** @this {Super} */ function(value) {
+};
+
+
+Super.prototype.set__text = function(value) {
   if (value != this._text) {
     this._text = value;
   }
-}}}
+};
+
+
+Object.defineProperties(Super.prototype, /** @lends {Super.prototype} */ {
+/** @export */
+text: {
+get: Super.prototype.get__text,
+set: Super.prototype.set__text}}
 );
 
 


Mime
View raw message