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

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

commit b58298c64978382382e5927ef9df06cdf2f6aaaa
Author: Alex Harui <[email protected]>
AuthorDate: Thu Jun 7 13:02:30 2018 -0700

    try different format for externs
---
 .../internal/codegen/js/jx/AccessorEmitter.java    | 421 ++++++++++++---------
 1 file changed, 244 insertions(+), 177 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 aaeee8d..a31ee90 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
@@ -94,162 +94,197 @@ public class AccessorEmitter extends JSSubEmitter 
implements
                 PropertyNodes p = getModel().getPropertyMap().get(propName);
                 IGetterNode getterNode = p.getter;
                 ISetterNode setterNode = p.setter;
-                if (getterNode != null)
+                if (getModel().isExterns)
                 {
+                       IAccessorNode node = (getterNode != null) ? getterNode 
: setterNode;
                     writeNewline();
                     writeNewline();
                     writeNewline();
+                       writeNewline("/**");
+                    if (emitExports)
+                       writeNewline("  * @export");
+                    if (p.type != null)
+                       writeNewline("  * @type 
{"+JSGoogDocEmitter.convertASTypeToJSType(p.type.getBaseName(), 
p.type.getPackageName()) + "} */");
+                    else
+                       writeNewline("  */");
                     write(getEmitter().formatQualifiedName(qname));
                     write(ASEmitterTokens.MEMBER_ACCESS);
                     write(JSEmitterTokens.PROTOTYPE);
-                    if (fjs.isCustomNamespace((FunctionNode)getterNode))
+                    if (fjs.isCustomNamespace((FunctionNode)node))
                     {
-                               INamespaceDecorationNode ns = 
((FunctionNode)getterNode).getActualNamespaceNode();
+                               INamespaceDecorationNode ns = 
((FunctionNode)node).getActualNamespaceNode();
                                INamespaceDefinition nsDef = 
(INamespaceDefinition)ns.resolve(project);
                                
fjs.formatQualifiedName(nsDef.getQualifiedName()); // register with used names 
                                String s = nsDef.getURI();
-                               write("[\"" + s + "::" + 
JSRoyaleEmitterTokens.GETTER_PREFIX.getToken() + propName + "\"]");
+                               write("[\"" + s + "::" + propName + "\"]");
                     }
                     else
                     {
                         write(ASEmitterTokens.MEMBER_ACCESS);
-                        write(JSRoyaleEmitterTokens.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);
+                    write(ASEmitterTokens.SEMICOLON);                  
+                       
                 }
-                if (setterNode != null)
+                else
                 {
-                       boolean isBindable = false;                
-                       IAccessorDefinition setterDef = 
(IAccessorDefinition)setterNode.getDefinition();
-                       IAccessorDefinition getterDef = null;
-                       if (getterNode != null)
-                               getterDef = 
(IAccessorDefinition)getterNode.getDefinition();
-                       if (setterDef.isBindable() || (getterDef != null && 
getterDef.isBindable()))
-                       {
-                               if (setterDef.isBindable())
-                               {
-                                       IMetaTag[] tags = 
setterDef.getMetaTagsByName("Bindable");
-                                       if (tags.length > 1)
-                                       isBindable = true;
-                                       else if (tags.length == 1)
-                                       {
-                                               if 
(tags[0].getAllAttributes().length == 0)
-                                                       isBindable = true;
-                                       }
-                               }
-                               else if (getterDef != null && 
getterDef.isBindable())
-                               {
-                                       IMetaTag[] tags = 
getterDef.getMetaTagsByName("Bindable");
-                                       if (tags.length > 1)
-                                       isBindable = true;
-                                       else if (tags.length == 1)
-                                       {
-                                               if 
(tags[0].getAllAttributes().length == 0)
-                                                       isBindable = true;
-                                       }                                       
-                               }
-                       }
-                    writeNewline();
-                    writeNewline();
-                    writeNewline();
-                    write(getEmitter().formatQualifiedName(qname));
-                    write(ASEmitterTokens.MEMBER_ACCESS);
-                    write(JSEmitterTokens.PROTOTYPE);
-                    if (fjs.isCustomNamespace((FunctionNode)setterNode))
-                    {
-                               INamespaceDecorationNode ns = 
((FunctionNode)setterNode).getActualNamespaceNode();
-                               INamespaceDefinition nsDef = 
(INamespaceDefinition)ns.resolve(project);
-                               
fjs.formatQualifiedName(nsDef.getQualifiedName()); // register with used names 
-                               String s = nsDef.getURI();
-                               write("[\"" + s + "::" + 
JSRoyaleEmitterTokens.SETTER_PREFIX.getToken() + propName + "\"]");
-                    }
-                    else
-                    {
-                        write(ASEmitterTokens.MEMBER_ACCESS);
-                        if (isBindable)
-                               write(JSRoyaleEmitterTokens.BINDABLE_PREFIX);
-                        write(JSRoyaleEmitterTokens.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 (isBindable)
-                    {
-                       writeNewline();
-                       writeNewline();
-                       writeNewline();
-                        write(getEmitter().formatQualifiedName(qname));
-                        write(ASEmitterTokens.MEMBER_ACCESS);
-                        write(JSEmitterTokens.PROTOTYPE);
-                        write(ASEmitterTokens.MEMBER_ACCESS);
-                        write(JSRoyaleEmitterTokens.SETTER_PREFIX);
-                       write(propName);
-                        write(ASEmitterTokens.SPACE);
-                        write(ASEmitterTokens.EQUAL);
-                        write(ASEmitterTokens.SPACE);
-                        write(ASEmitterTokens.FUNCTION);
-                        write(ASEmitterTokens.PAREN_OPEN);
-                        write("value");
-                        write(ASEmitterTokens.PAREN_CLOSE);
-                        write(ASEmitterTokens.SPACE);
-                        writeNewline(ASEmitterTokens.BLOCK_OPEN);
-                        write(ASEmitterTokens.VAR);
-                        write(ASEmitterTokens.SPACE);
-                        write("oldValue");
-                        write(ASEmitterTokens.SPACE);
-                        write(ASEmitterTokens.EQUAL);
-                        write(ASEmitterTokens.SPACE);
-                        write(ASEmitterTokens.THIS);
-                        write(ASEmitterTokens.MEMBER_ACCESS);
-                        write(JSRoyaleEmitterTokens.GETTER_PREFIX);
-                       write(propName);
-                        write(ASEmitterTokens.PAREN_OPEN);
-                        write(ASEmitterTokens.PAREN_CLOSE);
-                        writeNewline(ASEmitterTokens.SEMICOLON);
-                        write(ASEmitterTokens.IF);
-                        write(ASEmitterTokens.SPACE);
-                        write(ASEmitterTokens.PAREN_OPEN);
-                        write("oldValue != value");
-                        write(ASEmitterTokens.PAREN_CLOSE);
-                        write(ASEmitterTokens.SPACE);
-                        writeNewline(ASEmitterTokens.BLOCK_OPEN);
-                        write(ASEmitterTokens.THIS);
-                        write(ASEmitterTokens.MEMBER_ACCESS);
-                        write(JSRoyaleEmitterTokens.BINDABLE_PREFIX);
-                        write(JSRoyaleEmitterTokens.SETTER_PREFIX);
-                       write(propName);
-                        write(ASEmitterTokens.PAREN_OPEN);
-                        write("value");
-                        write(ASEmitterTokens.PAREN_CLOSE);
-                        writeNewline(ASEmitterTokens.SEMICOLON);
-                        writeNewline("    
this.dispatchEvent("+fjs.formatQualifiedName(BindableEmitter.VALUECHANGE_EVENT_QNAME)+".createUpdateEvent(");
-                        writeNewline("         this, \"" + propName + "\", 
oldValue, value));");
-                        writeNewline(ASEmitterTokens.BLOCK_CLOSE);
-                        write(ASEmitterTokens.BLOCK_CLOSE);
-                        write(ASEmitterTokens.SEMICOLON);                      
  
-                        
-                    }
+                       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();
+                                       INamespaceDefinition nsDef = 
(INamespaceDefinition)ns.resolve(project);
+                                       
fjs.formatQualifiedName(nsDef.getQualifiedName()); // register with used names 
+                                       String s = nsDef.getURI();
+                                       write("[\"" + s + "::" + 
JSRoyaleEmitterTokens.GETTER_PREFIX.getToken() + propName + "\"]");
+                           }
+                           else
+                           {
+                               write(ASEmitterTokens.MEMBER_ACCESS);
+                               write(JSRoyaleEmitterTokens.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)
+                       {
+                               boolean isBindable = false;                
+                               IAccessorDefinition setterDef = 
(IAccessorDefinition)setterNode.getDefinition();
+                               IAccessorDefinition getterDef = null;
+                               if (getterNode != null)
+                                       getterDef = 
(IAccessorDefinition)getterNode.getDefinition();
+                               if (setterDef.isBindable() || (getterDef != 
null && getterDef.isBindable()))
+                               {
+                                       if (setterDef.isBindable())
+                                       {
+                                               IMetaTag[] tags = 
setterDef.getMetaTagsByName("Bindable");
+                                               if (tags.length > 1)
+                                               isBindable = true;
+                                               else if (tags.length == 1)
+                                               {
+                                                       if 
(tags[0].getAllAttributes().length == 0)
+                                                               isBindable = 
true;
+                                               }
+                                       }
+                                       else if (getterDef != null && 
getterDef.isBindable())
+                                       {
+                                               IMetaTag[] tags = 
getterDef.getMetaTagsByName("Bindable");
+                                               if (tags.length > 1)
+                                               isBindable = true;
+                                               else if (tags.length == 1)
+                                               {
+                                                       if 
(tags[0].getAllAttributes().length == 0)
+                                                               isBindable = 
true;
+                                               }                               
        
+                                       }
+                               }
+                           writeNewline();
+                           writeNewline();
+                           writeNewline();
+                           write(getEmitter().formatQualifiedName(qname));
+                           write(ASEmitterTokens.MEMBER_ACCESS);
+                           write(JSEmitterTokens.PROTOTYPE);
+                           if (fjs.isCustomNamespace((FunctionNode)setterNode))
+                           {
+                                       INamespaceDecorationNode ns = 
((FunctionNode)setterNode).getActualNamespaceNode();
+                                       INamespaceDefinition nsDef = 
(INamespaceDefinition)ns.resolve(project);
+                                       
fjs.formatQualifiedName(nsDef.getQualifiedName()); // register with used names 
+                                       String s = nsDef.getURI();
+                                       write("[\"" + s + "::" + 
JSRoyaleEmitterTokens.SETTER_PREFIX.getToken() + propName + "\"]");
+                           }
+                           else
+                           {
+                               write(ASEmitterTokens.MEMBER_ACCESS);
+                               if (isBindable)
+                                       
write(JSRoyaleEmitterTokens.BINDABLE_PREFIX);
+                               write(JSRoyaleEmitterTokens.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 (isBindable)
+                           {
+                               writeNewline();
+                               writeNewline();
+                               writeNewline();
+                               write(getEmitter().formatQualifiedName(qname));
+                               write(ASEmitterTokens.MEMBER_ACCESS);
+                               write(JSEmitterTokens.PROTOTYPE);
+                               write(ASEmitterTokens.MEMBER_ACCESS);
+                               write(JSRoyaleEmitterTokens.SETTER_PREFIX);
+                               write(propName);
+                               write(ASEmitterTokens.SPACE);
+                               write(ASEmitterTokens.EQUAL);
+                               write(ASEmitterTokens.SPACE);
+                               write(ASEmitterTokens.FUNCTION);
+                               write(ASEmitterTokens.PAREN_OPEN);
+                               write("value");
+                               write(ASEmitterTokens.PAREN_CLOSE);
+                               write(ASEmitterTokens.SPACE);
+                               writeNewline(ASEmitterTokens.BLOCK_OPEN);
+                               write(ASEmitterTokens.VAR);
+                               write(ASEmitterTokens.SPACE);
+                               write("oldValue");
+                               write(ASEmitterTokens.SPACE);
+                               write(ASEmitterTokens.EQUAL);
+                               write(ASEmitterTokens.SPACE);
+                               write(ASEmitterTokens.THIS);
+                               write(ASEmitterTokens.MEMBER_ACCESS);
+                               write(JSRoyaleEmitterTokens.GETTER_PREFIX);
+                               write(propName);
+                               write(ASEmitterTokens.PAREN_OPEN);
+                               write(ASEmitterTokens.PAREN_CLOSE);
+                               writeNewline(ASEmitterTokens.SEMICOLON);
+                               write(ASEmitterTokens.IF);
+                               write(ASEmitterTokens.SPACE);
+                               write(ASEmitterTokens.PAREN_OPEN);
+                               write("oldValue != value");
+                               write(ASEmitterTokens.PAREN_CLOSE);
+                               write(ASEmitterTokens.SPACE);
+                               writeNewline(ASEmitterTokens.BLOCK_OPEN);
+                               write(ASEmitterTokens.THIS);
+                               write(ASEmitterTokens.MEMBER_ACCESS);
+                               write(JSRoyaleEmitterTokens.BINDABLE_PREFIX);
+                               write(JSRoyaleEmitterTokens.SETTER_PREFIX);
+                               write(propName);
+                               write(ASEmitterTokens.PAREN_OPEN);
+                               write("value");
+                               write(ASEmitterTokens.PAREN_CLOSE);
+                               writeNewline(ASEmitterTokens.SEMICOLON);
+                               writeNewline("    
this.dispatchEvent("+fjs.formatQualifiedName(BindableEmitter.VALUECHANGE_EVENT_QNAME)+".createUpdateEvent(");
+                               writeNewline("         this, \"" + propName + 
"\", oldValue, value));");
+                               writeNewline(ASEmitterTokens.BLOCK_CLOSE);
+                               write(ASEmitterTokens.BLOCK_CLOSE);
+                               write(ASEmitterTokens.SEMICOLON);               
         
+                               
+                           }
+                       }
                 }
             }
         }
-        if (!getModel().getPropertyMap().isEmpty())
+        if (!getModel().getPropertyMap().isEmpty() && !getModel().isExterns)
         {
             writeNewline();
             writeNewline();
@@ -437,69 +472,101 @@ public class AccessorEmitter extends JSSubEmitter 
implements
                 PropertyNodes p = 
getModel().getStaticPropertyMap().get(propName);
                 IGetterNode getterNode = p.getter;
                 ISetterNode setterNode = p.setter;
-                if (getterNode != null)
+                if (getModel().isExterns)
                 {
+                       IAccessorNode node = (getterNode != null) ? getterNode 
: setterNode;
                     writeNewline();
                     writeNewline();
                     writeNewline();
+                       writeNewline("/**");
+                    if (emitExports)
+                       writeNewline("  * @export");
+                    if (p.type != null)
+                       writeNewline("  * @type 
{"+JSGoogDocEmitter.convertASTypeToJSType(p.type.getBaseName(), 
p.type.getPackageName()) + "} */");
+                    else
+                       writeNewline("  */");
                     write(getEmitter().formatQualifiedName(qname));
-                    if (fjs.isCustomNamespace((FunctionNode)getterNode))
+                    if (fjs.isCustomNamespace((FunctionNode)node))
                     {
-                               INamespaceDecorationNode ns = 
((FunctionNode)getterNode).getActualNamespaceNode();
+                               INamespaceDecorationNode ns = 
((FunctionNode)node).getActualNamespaceNode();
                                INamespaceDefinition nsDef = 
(INamespaceDefinition)ns.resolve(project);
                                
fjs.formatQualifiedName(nsDef.getQualifiedName()); // register with used names 
                                String s = nsDef.getURI();
-                               write("[\"" + s + "::" + 
JSRoyaleEmitterTokens.GETTER_PREFIX.getToken() + propName + "\"]");
+                               write("[\"" + s + "::" + propName + "\"]");
                     }
                     else
                     {
                         write(ASEmitterTokens.MEMBER_ACCESS);
-                        write(JSRoyaleEmitterTokens.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);
+                    write(ASEmitterTokens.SEMICOLON);                  
                 }
-                if (setterNode != null)
+                else
                 {
-                    writeNewline();
-                    writeNewline();
-                    writeNewline();
-                    write(getEmitter().formatQualifiedName(qname));
-                    if (fjs.isCustomNamespace((FunctionNode)setterNode))
-                    {
-                               INamespaceDecorationNode ns = 
((FunctionNode)setterNode).getActualNamespaceNode();
-                               INamespaceDefinition nsDef = 
(INamespaceDefinition)ns.resolve(project);
-                               
fjs.formatQualifiedName(nsDef.getQualifiedName()); // register with used names 
-                               String s = nsDef.getURI();
-                               write("[\"" + s + "::" + 
JSRoyaleEmitterTokens.SETTER_PREFIX.getToken() + propName + "\"]");
-                    }
-                    else
-                    {
-                        write(ASEmitterTokens.MEMBER_ACCESS);
-                        write(JSRoyaleEmitterTokens.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 (getterNode != null)
+                       {
+                           writeNewline();
+                           writeNewline();
+                           writeNewline();
+                           write(getEmitter().formatQualifiedName(qname));
+                           if (fjs.isCustomNamespace((FunctionNode)getterNode))
+                           {
+                                       INamespaceDecorationNode ns = 
((FunctionNode)getterNode).getActualNamespaceNode();
+                                       INamespaceDefinition nsDef = 
(INamespaceDefinition)ns.resolve(project);
+                                       
fjs.formatQualifiedName(nsDef.getQualifiedName()); // register with used names 
+                                       String s = nsDef.getURI();
+                                       write("[\"" + s + "::" + 
JSRoyaleEmitterTokens.GETTER_PREFIX.getToken() + propName + "\"]");
+                           }
+                           else
+                           {
+                               write(ASEmitterTokens.MEMBER_ACCESS);
+                               write(JSRoyaleEmitterTokens.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));
+                           if (fjs.isCustomNamespace((FunctionNode)setterNode))
+                           {
+                                       INamespaceDecorationNode ns = 
((FunctionNode)setterNode).getActualNamespaceNode();
+                                       INamespaceDefinition nsDef = 
(INamespaceDefinition)ns.resolve(project);
+                                       
fjs.formatQualifiedName(nsDef.getQualifiedName()); // register with used names 
+                                       String s = nsDef.getURI();
+                                       write("[\"" + s + "::" + 
JSRoyaleEmitterTokens.SETTER_PREFIX.getToken() + propName + "\"]");
+                           }
+                           else
+                           {
+                               write(ASEmitterTokens.MEMBER_ACCESS);
+                               write(JSRoyaleEmitterTokens.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().getStaticPropertyMap().isEmpty())
+        if (!getModel().getStaticPropertyMap().isEmpty() && 
!getModel().isExterns)
         {
             writeNewline();
             writeNewline();

-- 
To stop receiving notification emails like this one, please contact
[email protected].

Reply via email to