You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ah...@apache.org on 2018/06/07 20:03:36 UTC

[royale-compiler] 02/05: check for @externs and output differently

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 5c346ddfc999d56fd2cc598ddfdce1f5a83f5e15
Author: Alex Harui <ah...@apache.org>
AuthorDate: Thu Jun 7 11:10:55 2018 -0700

    check for @externs and output differently
---
 .../codegen/js/jx/PackageHeaderEmitter.java        | 24 +++++++++++++++++++---
 1 file changed, 21 insertions(+), 3 deletions(-)

diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/PackageHeaderEmitter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/PackageHeaderEmitter.java
index acc7317..2d7f52d 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/PackageHeaderEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/PackageHeaderEmitter.java
@@ -45,6 +45,7 @@ import org.apache.royale.compiler.internal.projects.RoyaleJSProject;
 import org.apache.royale.compiler.internal.scopes.ASProjectScope;
 import org.apache.royale.compiler.internal.scopes.PackageScope;
 import org.apache.royale.compiler.internal.tree.as.ClassNode;
+import org.apache.royale.compiler.internal.tree.as.InterfaceNode;
 import org.apache.royale.compiler.projects.ICompilerProject;
 import org.apache.royale.compiler.scopes.IASScope;
 import org.apache.royale.compiler.targets.ITarget.TargetType;
@@ -65,6 +66,7 @@ public class PackageHeaderEmitter extends JSSubEmitter implements
     @Override
     public void emit(IPackageDefinition definition)
     {
+        RoyaleJSProject project = (RoyaleJSProject) getProject();
         IASScope containedScope = definition.getContainedScope();
         ITypeDefinition type = EmitterUtils.findType(containedScope
                 .getAllLocalDefinitions());
@@ -85,6 +87,17 @@ public class PackageHeaderEmitter extends JSSubEmitter implements
                     getEmitter().getModel().isExterns = isExterns;
                 }
             }
+            else if (typeNode instanceof InterfaceNode)
+            {
+            	InterfaceNode interfaceNode = (InterfaceNode) typeNode;
+                ASDocComment asDoc = (ASDocComment) interfaceNode.getASDocComment();
+                if (asDoc != null)
+                {
+                    String asDocString = asDoc.commentNoEnd();
+                    isExterns = asDocString.contains(JSRoyaleEmitterTokens.EXTERNS.getToken());
+                    getEmitter().getModel().isExterns = isExterns;
+                }
+            }
         }
         if (qname == null)
         {
@@ -118,7 +131,6 @@ public class PackageHeaderEmitter extends JSSubEmitter implements
             return;
         }
 
-        RoyaleJSProject project = (RoyaleJSProject) getProject();
         List<File> sourcePaths = project.getSourcePath();
         String sourceName = definition.getSourcePath();
         for (File sourcePath : sourcePaths)
@@ -187,6 +199,7 @@ public class PackageHeaderEmitter extends JSSubEmitter implements
         		for (String part : parts)
         		{
         			current += part;
+    				writeNewline("/** @const */");
         			if (firstOne)
         			{
         				write("var ");
@@ -205,6 +218,8 @@ public class PackageHeaderEmitter extends JSSubEmitter implements
 
     public void emitContents(IPackageDefinition definition)
     {
+        if (getEmitter().getModel().isExterns) return;
+
         // TODO (mschmalle) will remove this cast as more things get abstracted
         JSRoyaleEmitter fjs = (JSRoyaleEmitter) getEmitter();
 
@@ -309,7 +324,7 @@ public class PackageHeaderEmitter extends JSSubEmitter implements
 
         }
 
-        boolean emitsRequires = emitRequires(requiresList, writtenRequires, cname);
+        boolean emitsRequires = emitRequires(requiresList, writtenRequires, cname, royaleProject);
         boolean emitsInterfaces = emitInterfaces(interfacesList, writtenRequires);
 
         // erikdebruin: Add missing language feature support, with e.g. 'is' and
@@ -349,7 +364,7 @@ public class PackageHeaderEmitter extends JSSubEmitter implements
         writeNewline();
     }
 
-    private boolean emitRequires(List<String> requiresList, List<String> writtenRequires, String cname)
+    private boolean emitRequires(List<String> requiresList, List<String> writtenRequires, String cname, RoyaleJSProject project)
     {
         boolean emitsRequires = false;
         if (requiresList != null)
@@ -366,6 +381,9 @@ public class PackageHeaderEmitter extends JSSubEmitter implements
                 if (imp.equals(cname))
                     continue;
 
+                if (project.sourceExterns.contains(imp))
+                	continue;
+                
                 if (NativeUtils.isNative(imp))
                 {
                     if (!(imp.equals("QName") || imp.equals("Namespace") || imp.equals("XML") || imp.equals("XMLList")))

-- 
To stop receiving notification emails like this one, please contact
aharui@apache.org.