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 2022/01/12 07:08:12 UTC

[royale-compiler] 03/06: get release modules to work by preventing rename of superClass_ in base.js, and by excluding compilation of files excluded from the module

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

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

commit 5a60e41d795e003a4d781626f489f6d50ac881f6
Author: Alex Harui <ah...@apache.org>
AuthorDate: Tue Jan 11 00:45:02 2022 -0800

    get release modules to work by preventing rename of superClass_ in base.js, and by excluding compilation of files excluded from the module
---
 .../codegen/mxml/royale/MXMLRoyalePublisher.java   | 52 +++++++++++++++++++++-
 1 file changed, 50 insertions(+), 2 deletions(-)

diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyalePublisher.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyalePublisher.java
index ec52ced..2d6759c 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyalePublisher.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyalePublisher.java
@@ -391,6 +391,30 @@ public class MXMLRoyalePublisher extends JSGoogPublisher implements IJSGoogPubli
             FileUtils.write(new File(new File(intermediateDir, "library/closure"),
                     closureSourceFile.getName()), closureSourceFile.getCode(), Charset.forName("utf8"));
         }
+        if ((googConfiguration.getExternsReport() != null) ||
+        		project.isModule(mainClassQName))
+        {
+        	File baseJS = new File(intermediateDir, "library/closure/goog/base.js");
+            String input = readCode(baseJS);
+            input = input.replaceAll("\\.superClass_", "[\"superClass_\"]");
+            FileUtils.write(baseJS, input);
+            int n = closureSourceFiles.size();
+            for (int i = 0; i < n; i++)
+            {
+            	SourceFile sf = closureSourceFiles.get(i);
+            	String name = sf.getName();
+            	if (name.contains("base.js"))
+            	{
+                    //String relative = new File(intermediateDir, "closure").toURI().relativize(baseJS.toURI()).getPath();
+                    //String code = FileUtils.readFileToString(baseJS, "UTF-8");
+                    SourceFile sourceFile = new JarSourceFile(sf.getName(), input, false);
+            		//SourceFile sourceFile = SourceFile.fromFile(baseJS.getAbsolutePath());
+                    closureSourceFiles.set(i, sourceFile);
+                    break;
+            	}
+            }
+        }
+        
         List<String> closureEntryPoints = new ArrayList<String>();
         closureEntryPoints.add("goog.events.EventTarget");
         closureEntryPoints.add("goog.html.sanitizer.HtmlSanitizer");
@@ -404,7 +428,7 @@ public class MXMLRoyalePublisher extends JSGoogPublisher implements IJSGoogPubli
         JSClosureCompilerWrapper compilerWrapper = null;
         if (configuration.release())
         {
-            compilerWrapper = new JSClosureCompilerWrapper(googConfiguration.getJSCompilerOptions());
+            compilerWrapper = new JSClosureCompilerWrapper(googConfiguration.getJSCompilerOptions(), project.isModule(mainClassQName));
             compilerWrapper.setPropertyNamesToKeep(closurePropertyNamesToKeep);
             if (closureSymbolNamesToExport == null) {
                 closureSymbolNamesToExport = new HashSet<String>();
@@ -497,8 +521,32 @@ public class MXMLRoyalePublisher extends JSGoogPublisher implements IJSGoogPubli
         }
         if (compilerWrapper != null)
         {
+        	Set<String> externs = googConfiguration.getExterns();
             for (String file : fileList)
             {
+            	if (externs.size() > 0)
+            	{
+            		if (gdw.providedMap.containsKey(file))
+        			{
+            			String provided = gdw.providedMap.get(file);
+            			if (externs.contains(provided))
+            			{
+                            if (googConfiguration.isVerbose())
+                            {            
+                                System.out.println("skipping extern source file: " + file);
+                            }
+            				continue;
+            			}
+        			}
+            		if (file.endsWith("Language.js"))
+            		{
+                        if (googConfiguration.isVerbose())
+                        {            
+                            System.out.println("skipping extern source file: " + file);
+                        }
+        				continue;            			
+            		}
+            	}
                 compilerWrapper.addJSSourceFile(file);
                 if (googConfiguration.isVerbose())
                 {            
@@ -594,7 +642,7 @@ public class MXMLRoyalePublisher extends JSGoogPublisher implements IJSGoogPubli
         if (compilerWrapper != null) {
             boolean ok = true;
             final File projectReleaseMainFile = new File(releaseDir, outputFileName);
-            compilerWrapper.setOptions(projectReleaseMainFile.getCanonicalPath(), useStrictPublishing, !googConfiguration.getRemoveCirculars(), projectName);
+            compilerWrapper.setOptions(projectReleaseMainFile.getCanonicalPath(), useStrictPublishing, !googConfiguration.getRemoveCirculars(), projectName, googConfiguration.getExternsReport());
             compilerWrapper.targetFilePath = projectReleaseMainFile.getCanonicalPath();
             compilerWrapper.setSourceMap(googConfiguration.getSourceMap());
             compilerWrapper.setVerbose(googConfiguration.isVerbose());