This commit appears to break things.

I’m getting the following error in Core tests:

https://paste.apache.org/Bmsg <https://paste.apache.org/Bmsg>

Harbs

> On Mar 17, 2018, at 5:16 PM, [email protected] wrote:
> 
> 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
> 
> 
> The following commit(s) were added to refs/heads/develop by this push:
>     new ac500b7  handle main MXML file in packages
> ac500b7 is described below
> 
> commit ac500b75530fc9094768824e4339fbd7df95e7ed
> Author: Alex Harui <[email protected]>
> AuthorDate: Sat Mar 17 08:16:12 2018 -0700
> 
>    handle main MXML file in packages
> ---
> .../internal/codegen/js/jsc/JSCPublisher.java      | 10 ++--
> .../internal/codegen/js/node/NodePublisher.java    | 14 ++---
> .../codegen/mxml/royale/MXMLRoyalePublisher.java   | 61 ++++++++++++++--------
> .../compiler/internal/graph/GoogDepsWriter.java    |  4 --
> .../internal/projects/SourceListManager.java       |  4 +-
> .../internal/projects/SourcePathManager.java       | 11 ++++
> 6 files changed, 64 insertions(+), 40 deletions(-)
> 
> diff --git 
> a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jsc/JSCPublisher.java
>  
> b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jsc/JSCPublisher.java
> index 8f530e2..4a54cfb 100644
> --- 
> a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jsc/JSCPublisher.java
> +++ 
> b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jsc/JSCPublisher.java
> @@ -41,28 +41,28 @@ public class JSCPublisher extends MXMLRoyalePublisher
>     private RoyaleJSProject project;
> 
>     @Override
> -    protected String getTemplateBody(String projectName)
> +    protected String getTemplateBody(String mainClassQName)
>     {
> -        IDefinition def = project.resolveQNameToDefinition(projectName);
> +        IDefinition def = project.resolveQNameToDefinition(mainClassQName);
>         IDefinitionNode node = def.getNode();
>         if (node instanceof IMXMLDocumentNode)
>         {
>             //we should probably customize MXML too, but for now, pass it to 
> the
>             //default implementation -JT
> -            return super.getTemplateBody(projectName);
> +            return super.getTemplateBody(mainClassQName);
>         }
>         //for ActionScript classes, simply call the constructor by default
>         StringBuilder bodyHTML = new StringBuilder();
>         bodyHTML.append("\t<script type=\"text/javascript\">\n");
>         bodyHTML.append("\t\tnew ");
> -        bodyHTML.append(projectName);
> +        bodyHTML.append(mainClassQName);
>         bodyHTML.append("();\n");
>         bodyHTML.append("\t</script>\n");
>         return bodyHTML.toString();
>     }
> 
>     @Override
> -    protected void writeHTML(String type, String projectName, File targetDir,
> +    protected void writeHTML(String type, String projectName, String 
> mainClassQName, File targetDir,
>                              String deps, List<String> additionalHTML) throws 
> IOException
>     {
>         if ("intermediate".equals(type))
> diff --git 
> a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/node/NodePublisher.java
>  
> b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/node/NodePublisher.java
> index bb3515d..3c2eb6f 100644
> --- 
> a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/node/NodePublisher.java
> +++ 
> b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/node/NodePublisher.java
> @@ -37,7 +37,7 @@ public class NodePublisher extends JSCPublisher
>     }
> 
>     @Override
> -    protected String getTemplateDependencies(String type, String 
> projectName, String deps)
> +    protected String getTemplateDependencies(String type, String 
> projectName, String mainClassQName, String deps)
>     {
>         StringBuilder depsJS = new StringBuilder();
>         if ("intermediate".equals(type))
> @@ -62,31 +62,31 @@ public class NodePublisher extends JSCPublisher
>     }
> 
>     @Override
> -    protected String getTemplateBody(String projectName)
> +    protected String getTemplateBody(String mainClassQName)
>     {
>         StringBuilder bodyJS = new StringBuilder();
>         if (exportModule)
>         {
>             bodyJS.append("module.exports = ");
> -            bodyJS.append(projectName);
> +            bodyJS.append(mainClassQName);
>             bodyJS.append(";");
>         }
>         else
>         {
>             bodyJS.append("new ");
> -            bodyJS.append(projectName);
> +            bodyJS.append(mainClassQName);
>             bodyJS.append("();");
>         }
>         return bodyJS.toString();
>     }
> 
>     @Override
> -    protected void writeHTML(String type, String projectName, File targetDir,
> +    protected void writeHTML(String type, String projectName, String 
> mainClassQName, File targetDir,
>                              String deps, List<String> additionalHTML) throws 
> IOException
>     {
>         StringBuilder contents = new StringBuilder();
> -        contents.append(getTemplateDependencies(type, projectName, deps));
> -        contents.append(getTemplateBody(projectName));
> +        contents.append(getTemplateDependencies(type, projectName, 
> mainClassQName, deps));
> +        contents.append(getTemplateBody(mainClassQName));
>         writeFile(new File(targetDir, "index.js"), contents.toString(), 
> false);
>     }
> }
> 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 1c3e943..6ad8bbb 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
> @@ -96,11 +96,11 @@ public class MXMLRoyalePublisher extends JSGoogPublisher 
> implements IJSPublisher
>     private boolean useStrictPublishing;
> 
>     private GoogDepsWriter getGoogDepsWriter(File intermediateDir, 
> -                                                                             
> String projectName, 
> +                                                                             
> String mainClassQName, 
>                                                                               
> JSGoogConfiguration googConfiguration, 
>                                                                               
> List<ISWC> swcs)
>     {
> -     return new GoogDepsWriter(intermediateDir, projectName, 
> googConfiguration, swcs);
> +     return new GoogDepsWriter(intermediateDir, mainClassQName, 
> googConfiguration, swcs);
>     }
> 
>     @Override
> @@ -159,7 +159,25 @@ public class MXMLRoyalePublisher extends JSGoogPublisher 
> implements IJSPublisher
>         // The "intermediate" is the "js-debug" output.
>         final File intermediateDir = outputFolder;
> 
> +        // The source directory is the source path entry containing the Main 
> class.
> +        List<File> sourcePaths = project.getSourcePath();
> +        String targetFile = configuration.getTargetFile().toLowerCase();
> +        File imageSrcDir = null;
> +        for (File sp : sourcePaths)
> +        {
> +             String lowercasePath = sp.getAbsolutePath().toLowerCase();
> +             if (targetFile.startsWith(lowercasePath))
> +                     imageSrcDir = sp;
> +        }
>         final String projectName = 
> FilenameUtils.getBaseName(configuration.getTargetFile());
> +        String qName = null;
> +        try {
> +                     qName = project.mainCU.getQualifiedNames().get(0);
> +             } catch (InterruptedException e) {
> +                     // TODO Auto-generated catch block
> +                     e.printStackTrace();
> +             }
> +             final String mainClassQName = qName;
>         final String outputFileName = projectName + "." + 
> project.getBackend().getOutputExtension();
> 
>         // The "release" is the "js-release" directory.
> @@ -184,11 +202,8 @@ public class MXMLRoyalePublisher extends JSGoogPublisher 
> implements IJSPublisher
>         IOFileFilter assetFiles = FileFilterUtils.or(pngSuffixFilter, 
> jpgSuffixFilter, jpegSuffixFilter, svgSuffixFilter, gifSuffixFilter,
>                 jsonSuffixFilter);
>         IOFileFilter resourceFilter = 
> FileFilterUtils.or(DirectoryFileFilter.DIRECTORY, assetFiles);
> -        // The source directory is the directory containing the Main class.
> -        File imageSrcDir = new 
> File(configuration.getTargetFile()).getAbsoluteFile().getParentFile();
>         // FIXME: All images need to be located relative to the Main class 
> ... for Maven this is a problem.
>         FileUtils.copyDirectory(imageSrcDir, intermediateDir, resourceFilter);
> -        
>         // Iterate over all themes SWCs and add the contents of any included 
> files in
>         // an assets folder to an assets folder in the destination folder.
>         final ISWCManager swcManager = project.getWorkspace().getSWCManager();
> @@ -347,7 +362,7 @@ public class MXMLRoyalePublisher extends JSGoogPublisher 
> implements IJSPublisher
>         // Add all files generated by the compiler to the compilation unit.
>         
> /////////////////////////////////////////////////////////////////////////////////
> 
> -        GoogDepsWriter gdw = getGoogDepsWriter(intermediateDir, projectName, 
> googConfiguration, allswcs);
> +        GoogDepsWriter gdw = getGoogDepsWriter(intermediateDir, 
> mainClassQName, googConfiguration, allswcs);
>         // This list contains all files generated by the compiler, this is 
> both the
>         // compiled js files created by the sources of the current project 
> plus the
>         // js files of used dependencies.
> @@ -365,10 +380,10 @@ public class MXMLRoyalePublisher extends 
> JSGoogPublisher implements IJSPublisher
>         // is generated here so it can be used for outputting the html 
> templates.
>         String depsFileData = gdw.generateDeps(project, problems);
> 
> -        if (project.isModule(projectName))
> +        if (project.isModule(mainClassQName))
>         {
>               // need better test someday
> -             depsFileData += "\ngoog.require('" + projectName + "');\n";
> +             depsFileData += "\ngoog.require('" + mainClassQName + "');\n";
>             writeFile(new File(intermediateDir, projectName + "__deps.js"), 
> depsFileData, false);
>             Set<String> provideds = computeProvideds(depsFileData);
>             compilerWrapper.setProvideds(provideds);
> @@ -380,17 +395,17 @@ public class MXMLRoyalePublisher extends 
> JSGoogPublisher implements IJSPublisher
>               // Create the index.html for the debug-js version.
>               if (!((JSGoogConfiguration)configuration).getSkipTranspile()) {
>                   if (template != null) {
> -                     writeTemplate(template, "intermediate", projectName, 
> intermediateDir, depsFileData, gdw.additionalHTML);
> +                     writeTemplate(template, "intermediate", projectName, 
> mainClassQName, intermediateDir, depsFileData, gdw.additionalHTML);
>                   } else {
> -                     writeHTML("intermediate", projectName, intermediateDir, 
> depsFileData, gdw.additionalHTML);
> +                     writeHTML("intermediate", projectName, mainClassQName, 
> intermediateDir, depsFileData, gdw.additionalHTML);
>                   }
>               }
>               // Create the index.html for the release-js version.
>               if (configuration.release()) {
>                   if (template != null) {
> -                     writeTemplate(template, "release", projectName, 
> releaseDir, depsFileData, gdw.additionalHTML);
> +                     writeTemplate(template, "release", projectName, 
> mainClassQName, releaseDir, depsFileData, gdw.additionalHTML);
>                   } else {
> -                     writeHTML("release", projectName, releaseDir, null, 
> gdw.additionalHTML);
> +                     writeHTML("release", projectName, mainClassQName, 
> releaseDir, null, gdw.additionalHTML);
>                   }
>               }
>         }        
> @@ -608,7 +623,7 @@ public class MXMLRoyalePublisher extends JSGoogPublisher 
> implements IJSPublisher
>         return code;
>     }
> 
> -    protected void writeTemplate(File template, String type, String 
> projectName, File targetDir, String deps, List<String> additionalHTML)
> +    protected void writeTemplate(File template, String type, String 
> projectName, String mainClassQName, File targetDir, String deps, List<String> 
> additionalHTML)
>               throws IOException
>       {
>           // Check if the template exists.
> @@ -629,7 +644,7 @@ public class MXMLRoyalePublisher extends JSGoogPublisher 
> implements IJSPublisher
>             bgcolor = ta.getBackgroundColor();
>             pageTitle = ta.getPageTitle();
>         }
> -        String result = input.replaceAll("\\$\\{application\\}", 
> projectName);
> +        String result = input.replaceAll("\\$\\{application\\}", 
> mainClassQName);
>         if (bgcolor != null)
>             result = result.replaceAll("\\$\\{bgcolor\\}", bgcolor);
>         //result = result.replaceAll("\\$\\{expressInstallSwf\\}", 
> expressInstallSwf);
> @@ -646,10 +661,10 @@ public class MXMLRoyalePublisher extends 
> JSGoogPublisher implements IJSPublisher
> 
>         StringBuilder addHTML = new StringBuilder();
>         addHTML.append(getTemplateAdditionalHTML(additionalHTML));
> -             addHTML.append(getTemplateDependencies(type, projectName, 
> deps));
> +             addHTML.append(getTemplateDependencies(type, projectName, 
> mainClassQName, deps));
>         result = result.replaceAll("\\$\\{head\\}", addHTML.toString());
> 
> -        String templateBody = getTemplateBody(projectName);
> +        String templateBody = getTemplateBody("release".equals(type) ? 
> projectName : mainClassQName);
>         result = result.replaceAll("\\$\\{body\\}", templateBody);
> 
>               writeFile(new File(targetDir, 
> googConfiguration.getHtmlOutputFileName()), result, false);
> @@ -665,7 +680,7 @@ public class MXMLRoyalePublisher extends JSGoogPublisher 
> implements IJSPublisher
>         return htmlFile.toString();
>     }
> 
> -    protected String getTemplateDependencies(String type, String 
> projectName, String deps)
> +    protected String getTemplateDependencies(String type, String 
> projectName, String mainClassQName, String deps)
>     {
>         StringBuilder depsHTML = new StringBuilder();
>         if ("intermediate".equals(type))
> @@ -674,7 +689,7 @@ public class MXMLRoyalePublisher extends JSGoogPublisher 
> implements IJSPublisher
>             depsHTML.append("\t<script type=\"text/javascript\">\n");
>             depsHTML.append(deps);
>             depsHTML.append("\t\tgoog.require(\"");
> -            depsHTML.append(projectName);
> +            depsHTML.append(mainClassQName);
>             depsHTML.append("\");\n");
>             depsHTML.append("\t</script>\n");
>         }
> @@ -687,19 +702,19 @@ public class MXMLRoyalePublisher extends 
> JSGoogPublisher implements IJSPublisher
>         return depsHTML.toString();
>     }
> 
> -     protected String getTemplateBody(String projectName)
> +     protected String getTemplateBody(String mainClassQName)
>     {
>         StringBuilder bodyHTML = new StringBuilder();
>         bodyHTML.append("\t<script type=\"text/javascript\">\n");
>         bodyHTML.append("\t\tnew ");
> -        bodyHTML.append(projectName);
> +        bodyHTML.append(mainClassQName);
>         bodyHTML.append("()");
>         bodyHTML.append(".start();\n");
>         bodyHTML.append("\t</script>\n");
>         return bodyHTML.toString();
>     }
> 
> -    protected void writeHTML(String type, String projectName, File 
> targetDir, String deps, List<String> additionalHTML)
> +    protected void writeHTML(String type, String projectName, String 
> mainClassQName, File targetDir, String deps, List<String> additionalHTML)
>             throws IOException
>     {
>         StringBuilder htmlFile = new StringBuilder();
> @@ -711,12 +726,12 @@ public class MXMLRoyalePublisher extends 
> JSGoogPublisher implements IJSPublisher
>         htmlFile.append("\t<link rel=\"stylesheet\" type=\"text/css\" 
> href=\"").append(projectName).append(".css\">\n");
> 
>         htmlFile.append(getTemplateAdditionalHTML(additionalHTML));
> -        htmlFile.append(getTemplateDependencies(type, projectName, deps));
> +        htmlFile.append(getTemplateDependencies(type, projectName, 
> mainClassQName, deps));
> 
>         htmlFile.append("</head>\n");
>         htmlFile.append("<body>\n");
> 
> -        htmlFile.append(getTemplateBody(projectName));
> +        htmlFile.append(getTemplateBody(mainClassQName));
> 
>         htmlFile.append("</body>\n");
>         htmlFile.append("</html>");
> diff --git 
> a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/graph/GoogDepsWriter.java
>  
> b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/graph/GoogDepsWriter.java
> index b412817..45f95b6 100644
> --- 
> a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/graph/GoogDepsWriter.java
> +++ 
> b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/graph/GoogDepsWriter.java
> @@ -703,10 +703,6 @@ public class GoogDepsWriter {
>           File f;
>           
>               String classPath = className.replace(".", File.separator);
> -             // special case app names with underscores, but hope that
> -             // no other class names have underscores in them
> -        if (className.equals(mainName))
> -             classPath = className;
> 
>         fn = outputFolderPath + File.separator + classPath + ".js";
>         f = new File(fn);
> diff --git 
> a/compiler/src/main/java/org/apache/royale/compiler/internal/projects/SourceListManager.java
>  
> b/compiler/src/main/java/org/apache/royale/compiler/internal/projects/SourceListManager.java
> index 21bd8a4..a42555a 100644
> --- 
> a/compiler/src/main/java/org/apache/royale/compiler/internal/projects/SourceListManager.java
> +++ 
> b/compiler/src/main/java/org/apache/royale/compiler/internal/projects/SourceListManager.java
> @@ -124,8 +124,10 @@ final class SourceListManager
>             unitsToAdd = new 
> ArrayList<ICompilationUnit>(newSourcesToCreate.size());
>             for (File file : newSourcesToCreate)
>             {
> +             File sourcePath = sourcePathManager.getSourcePath(file);
> +             String qname = sourcePathManager.computeQName(sourcePath, file);
>                 ICompilationUnit unit = 
> project.getSourceCompilationUnitFactory().createCompilationUnit(
> -                    file, DefinitionPriority.BasePriority.SOURCE_LIST, 0, 
> null, null);
> +                    file, DefinitionPriority.BasePriority.SOURCE_LIST, 0, 
> qname, null);
> 
>                 //It can be null in some cases, see 
> #ResourceBundleSourceFileHandler
>                 if(unit != null)
> diff --git 
> a/compiler/src/main/java/org/apache/royale/compiler/internal/projects/SourcePathManager.java
>  
> b/compiler/src/main/java/org/apache/royale/compiler/internal/projects/SourcePathManager.java
> index 23f8bbc..366cab1 100644
> --- 
> a/compiler/src/main/java/org/apache/royale/compiler/internal/projects/SourcePathManager.java
> +++ 
> b/compiler/src/main/java/org/apache/royale/compiler/internal/projects/SourcePathManager.java
> @@ -95,6 +95,17 @@ public final class SourcePathManager
>         return false;
>     }
> 
> +    public File getSourcePath(File file)
> +    {
> +        for (final DirectoryID directory : sourcePaths.keySet())
> +        {
> +            if (directory.isParentOf(file))
> +                return directory.getFile();
> +        }
> +        
> +        return null;
> +    }
> +    
>     private void accumulateQNameFiles(Set<QNameFile> qNameFiles, File 
> directory, String baseQName, String locale, 
>             Collection<ICompilerProblem> problems, int order)
>     {
> 
> -- 
> To stop receiving notification emails like this one, please contact
> [email protected].

Reply via email to