This is an automated email from the ASF dual-hosted git repository.

joshtynjala pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-compiler.git


The following commit(s) were added to refs/heads/develop by this push:
     new 3f89ec9  js-getter-prefix and js-setter-prefix compiler options
3f89ec9 is described below

commit 3f89ec9196b2645de234be7d4a9247ebff772531
Author: Josh Tynjala <[email protected]>
AuthorDate: Wed Sep 8 09:15:57 2021 -0700

    js-getter-prefix and js-setter-prefix compiler options
    
    Allows the names of the getter/setter functions generated for JS to be 
customized. If Royale is targeting an existing framework that uses different 
names (such as get_ instead of get__), this ensures that subclassing works as 
expected.
---
 .../internal/codegen/js/jx/AccessorEmitter.java    | 62 +++++++++-------------
 .../codegen/js/jx/BinaryOperatorEmitter.java       |  6 +--
 .../internal/codegen/js/jx/FieldEmitter.java       | 32 ++++++-----
 .../codegen/js/jx/MemberAccessEmitter.java         | 10 ++--
 .../internal/codegen/js/jx/SuperCallEmitter.java   | 10 ++--
 .../codegen/js/royale/JSRoyaleEmitter.java         | 28 ++++++++++
 .../driver/js/goog/JSGoogCompcConfiguration.java   | 38 +++++++++++++
 .../driver/js/goog/JSGoogConfiguration.java        | 38 +++++++++++++
 8 files changed, 159 insertions(+), 65 deletions(-)

diff --git 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/AccessorEmitter.java
 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/AccessorEmitter.java
index 2c193bc..f14a956 100644
--- 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/AccessorEmitter.java
+++ 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/AccessorEmitter.java
@@ -181,13 +181,12 @@ public class AccessorEmitter extends JSSubEmitter 
implements
                                        INamespaceDecorationNode ns = 
((FunctionNode)getterNode).getActualNamespaceNode();
                                        INamespaceDefinition nsDef = 
(INamespaceDefinition)ns.resolve(project);
                                        
fjs.formatQualifiedName(nsDef.getQualifiedName()); // register with used names
-                                       
write(JSRoyaleEmitter.formatNamespacedProperty(p.uri, 
JSRoyaleEmitterTokens.GETTER_PREFIX.getToken() + baseName, true));
+                                       
write(JSRoyaleEmitter.formatNamespacedProperty(p.uri, 
fjs.formatGetter(baseName), true));
                            }
                            else
                            {
                                write(ASEmitterTokens.MEMBER_ACCESS);
-                               write(JSRoyaleEmitterTokens.GETTER_PREFIX);
-                               write(baseName);
+                            write(fjs.formatGetter(baseName));
                            }
                            write(ASEmitterTokens.SPACE);
                            write(ASEmitterTokens.EQUAL);
@@ -241,18 +240,16 @@ public class AccessorEmitter extends JSSubEmitter 
implements
                                        INamespaceDecorationNode ns = 
((FunctionNode)setterNode).getActualNamespaceNode();
                                        INamespaceDefinition nsDef = 
(INamespaceDefinition)ns.resolve(project);
                                        
fjs.formatQualifiedName(nsDef.getQualifiedName()); // register with used names
-                                       
write(JSRoyaleEmitter.formatNamespacedProperty(p.uri, 
JSRoyaleEmitterTokens.SETTER_PREFIX.getToken() + baseName, true));
+                                       
write(JSRoyaleEmitter.formatNamespacedProperty(p.uri, 
fjs.formatSetter(baseName), true));
                            }
                            else
                            {
                                write(ASEmitterTokens.MEMBER_ACCESS);
                                if (isBindable) {
                                                                
write(JSRoyaleEmitterTokens.BINDABLE_PREFIX);
-                                                               
write(JSRoyaleEmitterTokens.SETTER_PREFIX);
-                                                               
write(getEmitter().formatPrivateName(definition.getQualifiedName(), baseName, 
true));
+                                
write(fjs.formatSetter(fjs.formatPrivateName(definition.getQualifiedName(), 
baseName, true)));
                                                        } else {
-                                                               
write(JSRoyaleEmitterTokens.SETTER_PREFIX);
-                                                               write(baseName);
+                                write(fjs.formatSetter(baseName));
                                                        }
                            }
                            write(ASEmitterTokens.SPACE);
@@ -274,8 +271,7 @@ public class AccessorEmitter extends JSSubEmitter implements
                                write(ASEmitterTokens.MEMBER_ACCESS);
                                write(JSEmitterTokens.PROTOTYPE);
                                write(ASEmitterTokens.MEMBER_ACCESS);
-                               write(JSRoyaleEmitterTokens.SETTER_PREFIX);
-                               write(baseName);
+                            write(fjs.formatSetter(baseName));
                                write(ASEmitterTokens.SPACE);
                                write(ASEmitterTokens.EQUAL);
                                write(ASEmitterTokens.SPACE);
@@ -293,8 +289,7 @@ public class AccessorEmitter extends JSSubEmitter implements
                                write(ASEmitterTokens.SPACE);
                                write(ASEmitterTokens.THIS);
                                write(ASEmitterTokens.MEMBER_ACCESS);
-                               write(JSRoyaleEmitterTokens.GETTER_PREFIX);
-                               write(baseName);
+                               write(fjs.formatGetter(baseName));
                                write(ASEmitterTokens.PAREN_OPEN);
                                write(ASEmitterTokens.PAREN_CLOSE);
                                writeNewline(ASEmitterTokens.SEMICOLON);
@@ -308,8 +303,7 @@ public class AccessorEmitter extends JSSubEmitter implements
                                write(ASEmitterTokens.THIS);
                                write(ASEmitterTokens.MEMBER_ACCESS);
                                write(JSRoyaleEmitterTokens.BINDABLE_PREFIX);
-                               write(JSRoyaleEmitterTokens.SETTER_PREFIX);
-                                                       
write(getEmitter().formatPrivateName(definition.getQualifiedName(), baseName, 
true));
+                            
write(fjs.formatSetter(fjs.formatPrivateName(definition.getQualifiedName(), 
baseName, true)));
                                write(ASEmitterTokens.PAREN_OPEN);
                                write("value");
                                write(ASEmitterTokens.PAREN_CLOSE);
@@ -396,13 +390,12 @@ public class AccessorEmitter extends JSSubEmitter 
implements
                                INamespaceDefinition nsDef = 
(INamespaceDefinition)ns.resolve(project);
                                
fjs.formatQualifiedName(nsDef.getQualifiedName()); // register with used names 
                                //String s = nsDef.getURI();
-                               
write(JSRoyaleEmitter.formatNamespacedProperty(p.uri, 
JSRoyaleEmitterTokens.GETTER_PREFIX.getToken() + baseName, true));
+                               
write(JSRoyaleEmitter.formatNamespacedProperty(p.uri, 
fjs.formatGetter(baseName), true));
                     }
                     else
                     {
                         write(ASEmitterTokens.MEMBER_ACCESS);
-                        write(JSRoyaleEmitterTokens.GETTER_PREFIX);
-                       write(baseName);
+                        write(fjs.formatGetter(baseName));
                     }
                     wroteGetter = true;
                 }
@@ -429,13 +422,12 @@ public class AccessorEmitter extends JSSubEmitter 
implements
                                        INamespaceDefinition nsDef = 
(INamespaceDefinition)ns.resolve(project);
                                        
fjs.formatQualifiedName(nsDef.getQualifiedName()); // register with used names 
                                        //String s = nsDef.getURI();
-                                       
write(JSRoyaleEmitter.formatNamespacedProperty(p.uri, 
JSRoyaleEmitterTokens.GETTER_PREFIX.getToken() + baseName, true));
+                                       
write(JSRoyaleEmitter.formatNamespacedProperty(p.uri, 
fjs.formatGetter(baseName), true));
                         }
                         else
                         {
                             write(ASEmitterTokens.MEMBER_ACCESS);
-                            write(JSRoyaleEmitterTokens.GETTER_PREFIX);
-                               write(baseName);
+                            write(fjs.formatGetter(baseName));
                         }
                         wroteGetter = true;
                        }
@@ -457,13 +449,12 @@ public class AccessorEmitter extends JSSubEmitter 
implements
                                INamespaceDefinition nsDef = 
(INamespaceDefinition)ns.resolve(project);
                                
fjs.formatQualifiedName(nsDef.getQualifiedName()); // register with used names 
                                //String s = nsDef.getURI();
-                               
write(JSRoyaleEmitter.formatNamespacedProperty(p.uri, 
JSRoyaleEmitterTokens.SETTER_PREFIX.getToken() + baseName, true));
+                               
write(JSRoyaleEmitter.formatNamespacedProperty(p.uri, 
fjs.formatSetter(baseName), true));
                     }
                     else
                     {
                         write(ASEmitterTokens.MEMBER_ACCESS);
-                        write(JSRoyaleEmitterTokens.SETTER_PREFIX);
-                       write(baseName);
+                        write(fjs.formatSetter(baseName));
                     }
                 }
                 else if (getterNode != null/* && 
getterNode.getDefinition().isOverride()*/)
@@ -491,13 +482,12 @@ public class AccessorEmitter extends JSSubEmitter 
implements
                                        INamespaceDefinition nsDef = 
(INamespaceDefinition)ns.resolve(project);
                                        
fjs.formatQualifiedName(nsDef.getQualifiedName()); // register with used names 
                                        //String s = nsDef.getURI();
-                                       
write(JSRoyaleEmitter.formatNamespacedProperty(p.uri, 
JSRoyaleEmitterTokens.SETTER_PREFIX.getToken() + baseName, true));
+                                       
write(JSRoyaleEmitter.formatNamespacedProperty(p.uri, 
fjs.formatSetter(baseName), true));
                         }
                         else
                         {
                             write(ASEmitterTokens.MEMBER_ACCESS);
-                            write(JSRoyaleEmitterTokens.SETTER_PREFIX);
-                               write(baseName);
+                            write(fjs.formatSetter(baseName));
                         }
                        }
                 }
@@ -594,13 +584,12 @@ public class AccessorEmitter extends JSSubEmitter 
implements
                                        INamespaceDefinition nsDef = 
(INamespaceDefinition)ns.resolve(project);
                                        
fjs.formatQualifiedName(nsDef.getQualifiedName()); // register with used names 
                                        //String s = nsDef.getURI();
-                                       
write(JSRoyaleEmitter.formatNamespacedProperty(p.uri , 
JSRoyaleEmitterTokens.GETTER_PREFIX.getToken() + baseName, true));
+                                       
write(JSRoyaleEmitter.formatNamespacedProperty(p.uri , 
fjs.formatGetter(baseName), true));
                            }
                            else
                            {
                                write(ASEmitterTokens.MEMBER_ACCESS);
-                               write(JSRoyaleEmitterTokens.GETTER_PREFIX);
-                               write(baseName);
+                               write(fjs.formatGetter(baseName));
                            }
                            write(ASEmitterTokens.SPACE);
                            write(ASEmitterTokens.EQUAL);
@@ -624,13 +613,12 @@ public class AccessorEmitter extends JSSubEmitter 
implements
                                        INamespaceDefinition nsDef = 
(INamespaceDefinition)ns.resolve(project);
                                        
fjs.formatQualifiedName(nsDef.getQualifiedName()); // register with used names 
                                        //String s = nsDef.getURI();
-                                       
write(JSRoyaleEmitter.formatNamespacedProperty(p.uri, 
JSRoyaleEmitterTokens.SETTER_PREFIX.getToken() + baseName, true));
+                                       
write(JSRoyaleEmitter.formatNamespacedProperty(p.uri, 
fjs.formatSetter(baseName), true));
                            }
                            else
                            {
                                write(ASEmitterTokens.MEMBER_ACCESS);
-                               write(JSRoyaleEmitterTokens.SETTER_PREFIX);
-                               write(baseName);
+                            write(fjs.formatSetter(baseName));
                            }
                            write(ASEmitterTokens.SPACE);
                            write(ASEmitterTokens.EQUAL);
@@ -708,13 +696,12 @@ public class AccessorEmitter extends JSSubEmitter 
implements
                                INamespaceDefinition nsDef = 
(INamespaceDefinition)ns.resolve(project);
                                
fjs.formatQualifiedName(nsDef.getQualifiedName()); // register with used names 
                                //String s = nsDef.getURI();
-                               
write(JSRoyaleEmitter.formatNamespacedProperty(p.uri, 
JSRoyaleEmitterTokens.GETTER_PREFIX.getToken() + baseName, true));
+                               
write(JSRoyaleEmitter.formatNamespacedProperty(p.uri, 
fjs.formatGetter(baseName), true));
                     }
                     else
                     {
                         write(ASEmitterTokens.MEMBER_ACCESS);
-                        write(JSRoyaleEmitterTokens.GETTER_PREFIX);
-                       write(baseName);
+                        write(fjs.formatGetter(baseName));
                     }
                 }
                 if (setterNode != null)
@@ -732,13 +719,12 @@ public class AccessorEmitter extends JSSubEmitter 
implements
                                INamespaceDefinition nsDef = 
(INamespaceDefinition)ns.resolve(project);
                                
fjs.formatQualifiedName(nsDef.getQualifiedName()); // register with used names 
                                //String s = nsDef.getURI();
-                               
write(JSRoyaleEmitter.formatNamespacedProperty(p.uri, 
JSRoyaleEmitterTokens.SETTER_PREFIX.getToken() + baseName, true));
+                               
write(JSRoyaleEmitter.formatNamespacedProperty(p.uri, 
fjs.formatSetter(baseName), true));
                     }
                     else
                     {
                         write(ASEmitterTokens.MEMBER_ACCESS);
-                        write(JSRoyaleEmitterTokens.SETTER_PREFIX);
-                       write(baseName);
+                        write(fjs.formatSetter(baseName));
                     }
                 }
                 write(ASEmitterTokens.BLOCK_CLOSE);
diff --git 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/BinaryOperatorEmitter.java
 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/BinaryOperatorEmitter.java
index e5a1ab2..0b98f44 100644
--- 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/BinaryOperatorEmitter.java
+++ 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/BinaryOperatorEmitter.java
@@ -156,8 +156,7 @@ public class BinaryOperatorEmitter extends JSSubEmitter 
implements
                         write(ASEmitterTokens.MEMBER_ACCESS);
                         write(JSGoogEmitterTokens.SUPERCLASS);
                         write(ASEmitterTokens.MEMBER_ACCESS);
-                        write(JSRoyaleEmitterTokens.SETTER_PREFIX);
-                        write(rnodeDef.getBaseName());
+                        write(fjs.formatSetter(rnodeDef.getBaseName()));
                         write(ASEmitterTokens.MEMBER_ACCESS);
                         write(JSEmitterTokens.APPLY);
                         write(ASEmitterTokens.PAREN_OPEN);
@@ -171,8 +170,7 @@ public class BinaryOperatorEmitter extends JSSubEmitter 
implements
                             write(ASEmitterTokens.MEMBER_ACCESS);
                             write(JSGoogEmitterTokens.SUPERCLASS);
                             write(ASEmitterTokens.MEMBER_ACCESS);
-                            write(JSRoyaleEmitterTokens.GETTER_PREFIX);
-                            write(rnodeDef.getBaseName());
+                                                       
write(fjs.formatGetter(rnodeDef.getBaseName()));
                             write(ASEmitterTokens.MEMBER_ACCESS);
                             write(JSEmitterTokens.APPLY);
                             write(ASEmitterTokens.PAREN_OPEN);
diff --git 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/FieldEmitter.java
 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/FieldEmitter.java
index d21aca8..e3e8b21 100644
--- 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/FieldEmitter.java
+++ 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/FieldEmitter.java
@@ -164,9 +164,9 @@ public class FieldEmitter extends JSSubEmitter implements
             className = 
getEmitter().formatQualifiedName(definition.getQualifiedName());
             if (isComplexInitializedStatic)
             {
-                   write(className
-                           + ASEmitterTokens.MEMBER_ACCESS.getToken() + 
JSRoyaleEmitterTokens.GETTER_PREFIX.getToken());
-                   writeFieldName(node, fjs);
+                   write(className);
+                write(ASEmitterTokens.MEMBER_ACCESS.getToken());
+                write(fjs.formatGetter(getFieldName(node, fjs)));
                    endMapping(node.getNameExpressionNode());
                 write(ASEmitterTokens.SPACE);
                 writeToken(ASEmitterTokens.EQUAL);
@@ -187,7 +187,7 @@ public class FieldEmitter extends JSSubEmitter implements
                 write(className);
                 writeToken(ASEmitterTokens.COMMA);
                 writeToken(ASEmitterTokens.BLOCK_OPEN);
-                   writeFieldName(node, fjs);
+                   write(getFieldName(node, fjs));
                 writeToken(ASEmitterTokens.COLON);
                 if (node.isConst())
                        write("{ value: value, writable: false }");
@@ -204,9 +204,9 @@ public class FieldEmitter extends JSSubEmitter implements
                 writeNewline(ASEmitterTokens.SEMICOLON);
                 if (!node.isConst())
                 {
-                           write(className
-                                   + ASEmitterTokens.MEMBER_ACCESS.getToken() 
+ JSRoyaleEmitterTokens.SETTER_PREFIX.getToken());
-                           writeFieldName(node, fjs);
+                           write(className);
+                    write(ASEmitterTokens.MEMBER_ACCESS.getToken());
+                    write(fjs.formatSetter(getFieldName(node, fjs)));
                        write(ASEmitterTokens.SPACE);
                        writeToken(ASEmitterTokens.EQUAL);
                        write(ASEmitterTokens.FUNCTION);
@@ -221,7 +221,7 @@ public class FieldEmitter extends JSSubEmitter implements
                        write(className);
                        writeToken(ASEmitterTokens.COMMA);
                     writeToken(ASEmitterTokens.BLOCK_OPEN);
-                           writeFieldName(node, fjs);
+                           write(getFieldName(node, fjs));
                        writeToken(ASEmitterTokens.COLON);
                        write("{ value: value, writable: true }");
                     write(ASEmitterTokens.BLOCK_CLOSE);
@@ -239,7 +239,7 @@ public class FieldEmitter extends JSSubEmitter implements
                 }
                 write(className);
                 write(ASEmitterTokens.MEMBER_ACCESS);
-                writeFieldName(node, fjs);
+                write(getFieldName(node, fjs));
                 write(ASEmitterTokens.SEMICOLON);
                 writeNewline();
                 writeNewline();
@@ -257,7 +257,7 @@ public class FieldEmitter extends JSSubEmitter implements
                 {
                     ((IJSGoogDocEmitter) 
getEmitter().getDocEmitter()).emitFieldDoc(node, def, getProject());
                 }
-                   writeFieldName(node, fjs);
+                   write(getFieldName(node, fjs));
                 writeToken(ASEmitterTokens.COLON);
                 writeNewline(ASEmitterTokens.BLOCK_OPEN, true);
                 write(ASEmitterTokens.GET);
@@ -265,8 +265,7 @@ public class FieldEmitter extends JSSubEmitter implements
                 write(ASEmitterTokens.SPACE);
                 write(className);
                 write(ASEmitterTokens.MEMBER_ACCESS);
-                write(JSRoyaleEmitterTokens.GETTER_PREFIX);
-                   writeFieldName(node, fjs);
+                write(fjs.formatGetter(getFieldName(node, fjs)));
                    if (!node.isConst())
                    {
                        writeNewline(ASEmitterTokens.COMMA);
@@ -275,8 +274,7 @@ public class FieldEmitter extends JSSubEmitter implements
                        write(ASEmitterTokens.SPACE);
                        write(className);
                        write(ASEmitterTokens.MEMBER_ACCESS);
-                       write(JSRoyaleEmitterTokens.SETTER_PREFIX);
-                           writeFieldName(node, fjs);
+                       write(fjs.formatSetter(getFieldName(node, fjs)));
                    }
                writeNewline(ASEmitterTokens.COMMA);
                 write("configurable: true");
@@ -480,7 +478,7 @@ public class FieldEmitter extends JSSubEmitter implements
         }
     }
     
-    private void writeFieldName(IVariableNode node, JSRoyaleEmitter fjs)
+    private String getFieldName(IVariableNode node, JSRoyaleEmitter fjs)
     {
         String qname = node.getName();
         IDefinition nodeDef = node.getDefinition();
@@ -492,9 +490,9 @@ public class FieldEmitter extends JSSubEmitter implements
             INamespaceDefinition nsDef = 
(INamespaceDefinition)ns.resolve(getProject());
             fjs.formatQualifiedName(nsDef.getQualifiedName()); // register 
with used names
             String s = nsDef.getURI();
-            write(JSRoyaleEmitter.formatNamespacedProperty(s, qname, false));
+            return JSRoyaleEmitter.formatNamespacedProperty(s, qname, false);
         }
-        else write(qname);
+        return qname;
     }
 
     public boolean emitFieldInitializer(IVariableNode node)
diff --git 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/MemberAccessEmitter.java
 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/MemberAccessEmitter.java
index fdb18a3..19c57db 100644
--- 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/MemberAccessEmitter.java
+++ 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/MemberAccessEmitter.java
@@ -563,6 +563,7 @@ public class MemberAccessEmitter extends JSSubEmitter 
implements
 
     private boolean writeLeftSide(IMemberAccessExpressionNode node, IASNode 
leftNode, IASNode rightNode)
     {
+        JSRoyaleEmitter fjs = (JSRoyaleEmitter) getEmitter();
         if (!(leftNode instanceof ILanguageIdentifierNode && 
((ILanguageIdentifierNode) leftNode)
                 .getKind() == 
ILanguageIdentifierNode.LanguageIdentifierKind.THIS))
         {
@@ -584,11 +585,14 @@ public class MemberAccessEmitter extends JSSubEmitter 
implements
                                        write(ASEmitterTokens.MEMBER_ACCESS);
                                        write(JSGoogEmitterTokens.SUPERCLASS);
                                        write(ASEmitterTokens.MEMBER_ACCESS);
-                                       
write(JSRoyaleEmitterTokens.GETTER_PREFIX);
                                        if (rightDef != null)
-                                               write(rightDef.getBaseName());
+                                       {
+                                               
write(fjs.formatGetter(rightDef.getBaseName()));
+                                       }
                                        else
-                                               write(((GetterNode) 
rightNode).getName());
+                                       {
+                                               
write(fjs.formatGetter(((IGetterNode) rightNode).getName()));
+                                       }
                                        write(ASEmitterTokens.MEMBER_ACCESS);
                                        write(JSEmitterTokens.APPLY);
                                        write(ASEmitterTokens.PAREN_OPEN);
diff --git 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/SuperCallEmitter.java
 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/SuperCallEmitter.java
index 285773b..3472752 100644
--- 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/SuperCallEmitter.java
+++ 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/SuperCallEmitter.java
@@ -53,6 +53,7 @@ public class SuperCallEmitter extends JSSubEmitter
 
     public void emit(IASNode node, String type)
     {
+        JSRoyaleEmitter fjs = (JSRoyaleEmitter) getEmitter();
         IFunctionNode fnode = (node instanceof IFunctionNode) ? 
(IFunctionNode) node
                 : null;
         IFunctionCallNode fcnode = (node instanceof IFunctionCallNode) ? 
(FunctionCallNode) node
@@ -102,10 +103,13 @@ public class SuperCallEmitter extends JSSubEmitter
                 write(JSGoogEmitterTokens.SUPERCLASS);
                 write(ASEmitterTokens.MEMBER_ACCESS);
                 if (fnode.getNodeID() == ASTNodeID.GetterID)
-                    write(JSRoyaleEmitterTokens.GETTER_PREFIX);
+                {
+                    write(fjs.formatGetter(fnode.getName()));
+                }
                 else
-                    write(JSRoyaleEmitterTokens.SETTER_PREFIX);
-                write(fnode.getName());
+                {
+                    write(fjs.formatSetter(fnode.getName()));
+                }
                 write(ASEmitterTokens.MEMBER_ACCESS);
                 write(JSEmitterTokens.APPLY);
                 write(ASEmitterTokens.PAREN_OPEN);
diff --git 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleEmitter.java
 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleEmitter.java
index 471994c..8906935 100644
--- 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleEmitter.java
+++ 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleEmitter.java
@@ -305,6 +305,34 @@ public class JSRoyaleEmitter extends JSGoogEmitter 
implements IJSRoyaleEmitter
        return Joiner.on("\n").join(finalLines);
     }
 
+    public String formatGetter(String name) {
+        String prefix = JSRoyaleEmitterTokens.GETTER_PREFIX.getToken();
+        RoyaleJSProject project = (RoyaleJSProject) getWalker().getProject();
+        if (project.config != null)
+        {
+            String configPrefix = project.config.getJsGetterPrefix();
+            if(configPrefix != null && configPrefix.length() > 0)
+            {
+                prefix = configPrefix;
+            }
+        }
+        return prefix + name;
+    }
+
+    public String formatSetter(String name) {
+        String prefix = JSRoyaleEmitterTokens.SETTER_PREFIX.getToken();
+        RoyaleJSProject project = (RoyaleJSProject) getWalker().getProject();
+        if (project.config != null)
+        {
+            String configPrefix = project.config.getJsSetterPrefix();
+            if(configPrefix != null && configPrefix.length() > 0)
+            {
+                prefix = configPrefix;
+            }
+        }
+        return prefix + name;
+    }
+
     public BindableEmitter getBindableEmitter()
     {
         return bindableEmitter;
diff --git 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/driver/js/goog/JSGoogCompcConfiguration.java
 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/driver/js/goog/JSGoogCompcConfiguration.java
index 53ee681..3d92bd2 100644
--- 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/driver/js/goog/JSGoogCompcConfiguration.java
+++ 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/driver/js/goog/JSGoogCompcConfiguration.java
@@ -499,4 +499,42 @@ public class JSGoogCompcConfiguration extends 
JSConfiguration
        inlineConstants = value;
     }
 
+    //
+    // 'js-getter-prefix'
+    //
+
+    protected String jsGetterPrefix = "";
+
+    public String getJsGetterPrefix()
+    {
+        return jsGetterPrefix;
+    }
+
+    @Config
+    @Mapping("js-getter-prefix")
+    public void setJsGetterPrefix(ConfigurationValue cv, String value)
+            throws ConfigurationException
+    {
+        jsGetterPrefix = value;
+    }
+
+    //
+    // 'js-setter-prefix'
+    //
+
+    protected String jsSetterPrefix = "";
+
+    public String getJsSetterPrefix()
+    {
+        return jsSetterPrefix;
+    }
+
+    @Config
+    @Mapping("js-setter-prefix")
+    public void setJsSetterPrefix(ConfigurationValue cv, String value)
+            throws ConfigurationException
+    {
+        jsSetterPrefix = value;
+    }
+
 }
diff --git 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/driver/js/goog/JSGoogConfiguration.java
 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/driver/js/goog/JSGoogConfiguration.java
index 5c00370..009ea52 100644
--- 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/driver/js/goog/JSGoogConfiguration.java
+++ 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/driver/js/goog/JSGoogConfiguration.java
@@ -1008,4 +1008,42 @@ public class JSGoogConfiguration extends JSConfiguration
        inlineConstants = value;
     }
 
+    //
+    // 'js-getter-prefix'
+    //
+
+    protected String jsGetterPrefix = "";
+
+    public String getJsGetterPrefix()
+    {
+        return jsGetterPrefix;
+    }
+
+    @Config
+    @Mapping("js-getter-prefix")
+    public void setJsGetterPrefix(ConfigurationValue cv, String value)
+            throws ConfigurationException
+    {
+        jsGetterPrefix = value;
+    }
+
+    //
+    // 'js-setter-prefix'
+    //
+
+    protected String jsSetterPrefix = "";
+
+    public String getJsSetterPrefix()
+    {
+        return jsSetterPrefix;
+    }
+
+    @Config
+    @Mapping("js-setter-prefix")
+    public void setJsSetterPrefix(ConfigurationValue cv, String value)
+            throws ConfigurationException
+    {
+        jsSetterPrefix = value;
+    }
+
 }

Reply via email to