You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by jo...@apache.org on 2025/04/17 22:56:39 UTC

(royale-compiler) 01/02: JSRoyaleASDocEmitter: instead of skipping certain fields, output valid empty values instead

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 60af8943a697b3d7598237edab80f9b9a721bd83
Author: Josh Tynjala <jo...@apache.org>
AuthorDate: Thu Apr 17 14:34:02 2025 -0700

    JSRoyaleASDocEmitter: instead of skipping certain fields, output valid empty values instead
    
    The ASDoc app uses JSONReviver, which needs those fields to exist so that it can generate the correct key to figure out which class to instantiate.
---
 .../codegen/js/royale/JSRoyaleASDocEmitter.java    | 176 ++++++++-------------
 1 file changed, 64 insertions(+), 112 deletions(-)

diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleASDocEmitter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleASDocEmitter.java
index bb2bc02cb..580121d84 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleASDocEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleASDocEmitter.java
@@ -117,11 +117,8 @@ public class JSRoyaleASDocEmitter extends JSRoyaleEmitter implements IJSRoyaleAS
         write(formatQualifiedName(node.getQualifiedName()));
         writeNewline("\"");
         indentPush();
-        if (asDoc != null)
-        {
-            writeNewline(",");
-        	writeASDoc(asDoc, (RoyaleASDocProject)getWalker().getProject());
-        }
+		writeNewline(",");
+		writeASDoc(asDoc, (RoyaleASDocProject)getWalker().getProject());
         indentPop();
         writeNewline("}");
     }
@@ -251,49 +248,34 @@ public class JSRoyaleASDocEmitter extends JSRoyaleEmitter implements IJSRoyaleAS
         else
         	write(formatQualifiedName(node.getBaseClassName()));
         writeNewline("\"");
-        if (asDoc != null)
-        {
-            writeNewline(",");
-        	writeASDoc(asDoc, (RoyaleASDocProject)getWalker().getProject());
-        }
+		writeNewline(",");
+		writeASDoc(asDoc, (RoyaleASDocProject)getWalker().getProject());
         final IDefinitionNode[] members = node.getAllMemberNodes();
-        if (members.length > 0)
-        {
-        	writeNewline(",");
-        	writeNewline("\"members\": [");
-        	indentPush();
-        	indentPush();
-        }
+		writeNewline(",");
+		writeNewline("\"members\": [");
+		indentPush();
+		indentPush();
         firstMember = true;
         for (IDefinitionNode mnode : members)
         {
         	getWalker().walk(mnode);
         }
-        if (members.length > 0)
-        {
-            indentPop();
-            indentPop();
-        	writeNewline("]");
-        }
+		indentPop();
+		indentPop();
+		writeNewline("]");
         IMetaTagNode[] metas = node.getMetaTagNodesByName("Event");
-        if (metas.length > 0)
-        {
-        	writeNewline(",");
-        	writeNewline("\"events\": [");
-        	indentPush();
-        	indentPush();
-        }
+		writeNewline(",");
+		writeNewline("\"events\": [");
+		indentPush();
+		indentPush();
         firstMember = true;
         for (IMetaTagNode mnode : metas)
         {
         	writeEventTagNode(mnode);
         }
-        if (metas.length > 0)
-        {
-            indentPop();
-            indentPop();
-        	writeNewline("]");
-        }
+		indentPop();
+		indentPop();
+		writeNewline("]");
         
         indentPop();
         writeNewline("}");
@@ -317,43 +299,31 @@ public class JSRoyaleASDocEmitter extends JSRoyaleEmitter implements IJSRoyaleAS
         write(formatQualifiedName(node.getQualifiedName()));
         write("\"");
         IExpressionNode bases[] = node.getExtendedInterfaceNodes();
-        if (bases.length > 0)
-        {
-            writeNewline(",");
-            writeNewline("\"baseInterfaceNames\": [");
-            boolean firstBase = true;
-            int n = bases.length;
-	        for (int i = 0; i < n; i++)
-	        {
-	        	if (!firstBase)
-	        		writeNewline(", ");
-	        	firstBase = false;
-	        	IDefinition baseDef = bases[i].resolve(getWalker().getProject());
-	        	write("\"" + formatQualifiedName(baseDef.getQualifiedName()) + "\"");
-	        }
-        	writeNewline("]");
-        }
+		writeNewline(",");
+		writeNewline("\"baseInterfaceNames\": [");
+		boolean firstBase = true;
+		int n = bases.length;
+		for (int i = 0; i < n; i++)
+		{
+			if (!firstBase)
+				writeNewline(", ");
+			firstBase = false;
+			IDefinition baseDef = bases[i].resolve(getWalker().getProject());
+			write("\"" + formatQualifiedName(baseDef.getQualifiedName()) + "\"");
+		}
+		writeNewline("]");
         indentPush();
-        if (asDoc != null)
-        {
-        	writeNewline(",");
-        	writeASDoc(asDoc, (RoyaleASDocProject)getWalker().getProject());
-        }
+		writeNewline(",");
+		writeASDoc(asDoc, (RoyaleASDocProject)getWalker().getProject());
         final IDefinitionNode[] members = node.getAllMemberDefinitionNodes();
-        if (members.length > 0)
-        {
-        	writeNewline(",");
-        	writeNewline("\"members\": [");
-        }
+		writeNewline(",");
+		writeNewline("\"members\": [");
         firstMember = true;
         for (IDefinitionNode mnode : members)
         {
         	getWalker().walk(mnode);
         }
-        if (members.length > 0)
-        {
-        	writeNewline("]");
-        }
+		writeNewline("]");
         indentPop();
         writeNewline("}");
         addToIndex(node.getDefinition(), asDoc);
@@ -405,11 +375,8 @@ public class JSRoyaleASDocEmitter extends JSRoyaleEmitter implements IJSRoyaleAS
         writeNewline("\",");
         writeDefinitionAttributes(def);
         indentPush();
-        if (asDoc != null)
-        {
-            writeNewline(",");
-        	writeASDoc(asDoc, (RoyaleASDocProject)getWalker().getProject());
-        }
+		writeNewline(",");
+		writeASDoc(asDoc, (RoyaleASDocProject)getWalker().getProject());
         indentPop();
         write("}");
         addToIndex(node.getDefinition(), asDoc);
@@ -451,11 +418,8 @@ public class JSRoyaleASDocEmitter extends JSRoyaleEmitter implements IJSRoyaleAS
         writeNewline("\",");
         writeDefinitionAttributes(def);
         indentPush();
-        if (asDoc != null)
-        {
-            writeNewline(",");
-        	writeASDoc(asDoc, (RoyaleASDocProject)getWalker().getProject());
-        }
+		writeNewline(",");
+		writeASDoc(asDoc, (RoyaleASDocProject)getWalker().getProject());
         indentPop();
         write("}");
         addToIndex(node.getDefinition(), asDoc);
@@ -481,11 +445,8 @@ public class JSRoyaleASDocEmitter extends JSRoyaleEmitter implements IJSRoyaleAS
         writeNewline("\",");
         writeDefinitionAttributes(node.getDefinition());
         indentPush();
-        if (asDoc != null)
-        {
-            writeNewline(",");
-        	writeASDoc(asDoc, (RoyaleASDocProject)getWalker().getProject());
-        }
+		writeNewline(",");
+		writeASDoc(asDoc, (RoyaleASDocProject)getWalker().getProject());
         indentPop();
         write("}");
         addToIndex(node.getDefinition(), asDoc);
@@ -508,11 +469,8 @@ public class JSRoyaleASDocEmitter extends JSRoyaleEmitter implements IJSRoyaleAS
         writeNewline("\",");
         writeDefinitionAttributes(node.getDefinition());
         indentPush();
-        if (asDoc != null)
-        {
-            writeNewline(",");
-        	writeASDoc(asDoc, (RoyaleASDocProject)getWalker().getProject());
-        }
+		writeNewline(",");
+		writeASDoc(asDoc, (RoyaleASDocProject)getWalker().getProject());
         indentPop();
         write("}");
         addToIndex(node.getDefinition(), asDoc);
@@ -555,11 +513,8 @@ public class JSRoyaleASDocEmitter extends JSRoyaleEmitter implements IJSRoyaleAS
         writeNewline("\",");
         writeDefinitionAttributes(def);
         indentPush();
-        if (asDoc != null)
-        {
-            writeNewline(",");
-        	writeASDoc(asDoc, (RoyaleASDocProject)getWalker().getProject());
-        }
+		writeNewline(",");
+		writeASDoc(asDoc, (RoyaleASDocProject)getWalker().getProject());
         indentPop();
         write("}");
         addToIndex(node.getDefinition(), asDoc);
@@ -584,11 +539,8 @@ public class JSRoyaleASDocEmitter extends JSRoyaleEmitter implements IJSRoyaleAS
         writeDefinitionAttributes(node.getDefinition());
         indentPush();
         writeNewline(",");
-        if (asDoc != null)
-        {
-        	writeASDoc(asDoc, (RoyaleASDocProject)getWalker().getProject());
-            writeNewline(",");
-        }
+		writeASDoc(asDoc, (RoyaleASDocProject)getWalker().getProject());
+		writeNewline(",");
         write("  \"return\": \"");
         if (node.getReturnType().equals("void"))
 		{
@@ -630,21 +582,24 @@ public class JSRoyaleASDocEmitter extends JSRoyaleEmitter implements IJSRoyaleAS
     public void writeASDoc(ASDocComment asDoc, RoyaleASDocProject project)
     {
     	List<String> tagList = project.tags;
-    	asDoc.compile();
+		if (asDoc != null)
+		{
+    		asDoc.compile();
+		}
         write("  \"description\": \"");
-        String d = asDoc.getDescription();
+        String d = asDoc != null ? asDoc.getDescription() : "";
 		d = d.replace("\t", " ");
 		d = d.replace("\\\"", "&quot;");
 		d = d.replace("\\", "\\\\");
     	write(d);
 		write("\"");
-    	Map<String, List<IASDocTag>> tags = asDoc.getTags();
+    	Map<String, List<IASDocTag>> tags = asDoc != null ? asDoc.getTags() : null;
+		writeNewline(",");
+		writeNewline("\"tags\": [");
+		indentPush();
+		indentPush();
     	if (tags != null)
     	{
-    		writeNewline(",");
-    		writeNewline("\"tags\": [");
-    		indentPush();
-    		indentPush();
     		boolean firstTag = true;
     		Set<String> tagNames = tags.keySet();
     		for (String tagName : tagNames)
@@ -682,10 +637,10 @@ public class JSRoyaleASDocEmitter extends JSRoyaleEmitter implements IJSRoyaleAS
         		indentPop();
         		indentPop();
     		}
-    		write("  ]");
-    		indentPop();
-    		indentPop();
-    	}
+		}
+		write("  ]");
+		indentPop();
+		indentPop();
     }
            
     public void writeDefinitionAttributes(IDefinition def)
@@ -799,11 +754,8 @@ public class JSRoyaleASDocEmitter extends JSRoyaleEmitter implements IJSRoyaleAS
         write(evt.getValue("type"));
         writeNewline("\"");
         indentPush();
-        if (asDoc != null)
-        {
-            writeNewline(",");
-        	writeASDoc(asDoc, (RoyaleASDocProject)getWalker().getProject());
-        }
+		writeNewline(",");
+		writeASDoc(asDoc, (RoyaleASDocProject)getWalker().getProject());
         indentPop();
         write("}");
         addToIndex(evt.getDefinition(), asDoc);