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) {