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

commit 9a2c3b42febe1d2f10bcf4d5bf5c6edffa488457
Author: Josh Tynjala <joshtynj...@apache.org>
AuthorDate: Wed Jan 15 09:33:25 2020 -0800

    Fixed issue where Closure warned about externs in top-level package because 
they didn't use the var keyword (references #109)
---
 .../royale/compiler/internal/codegen/js/jx/ClassEmitter.java  |  4 ++++
 .../royale/compiler/internal/codegen/js/jx/FieldEmitter.java  |  8 ++++++--
 .../royale/compiler/internal/codegen/js/jx/MethodEmitter.java | 11 ++++++++++-
 3 files changed, 20 insertions(+), 3 deletions(-)

diff --git 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/ClassEmitter.java
 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/ClassEmitter.java
index 47e9317..9b86e96 100644
--- 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/ClassEmitter.java
+++ 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/ClassEmitter.java
@@ -140,6 +140,10 @@ public class ClassEmitter extends JSSubEmitter implements
                 String qname = definition.getQualifiedName();
                 if (qname != null && !qname.equals(""))
                 {
+                    if (fjs.getModel().isExterns && 
definition.getBaseName().equals(qname))
+                    {
+                        writeToken(ASEmitterTokens.VAR);
+                    }
                     write(getEmitter().formatQualifiedName(qname));
                     write(ASEmitterTokens.SPACE);
                     writeToken(ASEmitterTokens.EQUAL);
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 6254e11..ca635e3 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
@@ -142,8 +142,12 @@ public class FieldEmitter extends JSSubEmitter implements
                 classification == 
IVariableDefinition.VariableClassification.FILE_MEMBER;
         if (isPackageOrFileMember)
         {
-               className = 
getEmitter().formatQualifiedName(node.getQualifiedName());
-            write(className);
+            String qualifiedName = node.getQualifiedName();
+            if (fjs.getModel().isExterns && 
node.getName().equals(qualifiedName))
+            {
+                writeToken(ASEmitterTokens.VAR);
+            }
+            write(fjs.formatQualifiedName(qualifiedName));
         }
         else
         {
diff --git 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/MethodEmitter.java
 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/MethodEmitter.java
index 688b190..e765816 100644
--- 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/MethodEmitter.java
+++ 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/MethodEmitter.java
@@ -80,7 +80,12 @@ public class MethodEmitter extends JSSubEmitter implements
         if(classification == 
IFunctionDefinition.FunctionClassification.FILE_MEMBER ||
                 classification == 
IFunctionDefinition.FunctionClassification.PACKAGE_MEMBER)
         {
-            write(fjs.formatQualifiedName(fn.getQualifiedName()));
+            String qualifiedName = node.getQualifiedName();
+            if (fjs.getModel().isExterns && 
node.getName().equals(qualifiedName))
+            {
+                writeToken(ASEmitterTokens.VAR);
+            }
+            write(fjs.formatQualifiedName(qualifiedName));
         }
         else
         {
@@ -92,6 +97,10 @@ public class MethodEmitter extends JSSubEmitter implements
             }
             if (qname != null && !qname.equals(""))
             {
+                if (isConstructor && fjs.getModel().isExterns && 
typeDef.getBaseName().equals(qname))
+                {
+                    writeToken(ASEmitterTokens.VAR);
+                }
                 write(fjs.formatQualifiedName(qname));
                 if (!isConstructor)
                 {

Reply via email to