Side Note: Erik, I didn't forget what they are for, it's that I wrote the EXTERNC compiler out of the idea of the JSC pure js and GCC as a post processor wasn't on my #1 list, since in the end, I am going to make all GCC annotations and injections optional witht he JSC output type so theoretically people can use their own dependency load with a compiler hook or something connected to the backend.
Mike On Thu, Jul 2, 2015 at 11:40 AM, Frédéric THOMAS <webdoubl...@hotmail.com> wrote: > > > Can you check in the 'js-debug' if the Main.js has an 'exportSymbol' > > statement at the bottom? > // Ensures the symbol will be visible after compiler renaming. > goog.exportSymbol('Main', Main); > Frédéric THOMAS > > > ---------------------------------------- > > From: e...@ixsoftware.nl > > Date: Thu, 2 Jul 2015 17:34:58 +0200 > > Subject: Re: [2/2] git commit: [flex-falcon] [refs/heads/develop] - GCC > and externs: add the 'externs.js' files to the SWCs; tell GCC to use those > to prevent renaming > > To: dev@flex.apache.org > > > > Can you check in the 'js-debug' if the Main.js has an 'exportSymbol' > > statement at the bottom? > > > > EdB > > > > > > > > On Thu, Jul 2, 2015 at 5:33 PM, Erik de Bruin <e...@ixsoftware.nl> > wrote: > > > >> Are you using IntelliJ? > >> > >> Then you're on your own :-P > >> > >> I'll post my command line script, if that might help? > >> > >> EdB > >> > >> > >> > >> On Thu, Jul 2, 2015 at 5:31 PM, Frédéric THOMAS < > webdoubl...@hotmail.com> > >> wrote: > >> > >>> > >>>> This commit makes the 'release' version of Fred's excellent example > work > >>>> (with warnings). Don't forget to rebuild the 'jquery' externs SWC, as > it > >>>> needs to pick up the JS file. > >>> > >>> I rebuilt falcon, the externs, the project and I still have > >>> Uncaught ReferenceError: Main is not defined > >>> with js-release, what did I miss ? > >>> > >>> Thanks, > >>> Frédéric THOMAS > >>> > >>> > >>> ---------------------------------------- > >>>> From: erikdebr...@apache.org > >>>> Date: Thu, 2 Jul 2015 15:19:13 +0200 > >>>> Subject: Re: [2/2] git commit: [flex-falcon] [refs/heads/develop] - > GCC > >>> and externs: add the 'externs.js' files to the SWCs; tell GCC to use > those > >>> to prevent renaming > >>>> To: dev@flex.apache.org > >>>> > >>>> This commit makes the 'release' version of Fred's excellent example > work > >>>> (with warnings). Don't forget to rebuild the 'jquery' externs SWC, as > it > >>>> needs to pick up the JS file. > >>>> > >>>> Looking further into those warnings. > >>>> > >>>> EdB > >>>> > >>>> > >>>> > >>>> On Thu, Jul 2, 2015 at 3:13 PM, <erikdebr...@apache.org> wrote: > >>>> > >>>>> GCC and externs: add the 'externs.js' files to the SWCs; tell GCC to > >>> use > >>>>> those to prevent renaming > >>>>> > >>>>> We've worked so hard to create AS classes from the Closure externs, > >>> let's > >>>>> not forget what these were originally intended for... and what we > need > >>> them > >>>>> for: prevent renaming of externally declared functions. We needed to > >>>>> include the original extern files in their respective SWCs so we can > >>> later > >>>>> present them to the GCC. > >>>>> > >>>>> Signed-off-by: Erik de Bruin <e...@ixsoftware.nl> > >>>>> > >>>>> > >>>>> Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo > >>>>> Commit: > >>> http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/1f35e526 > >>>>> Tree: > http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/1f35e526 > >>>>> Diff: > http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/1f35e526 > >>>>> > >>>>> Branch: refs/heads/develop > >>>>> Commit: 1f35e5260e580b8b40f95551f383a362c2474edd > >>>>> Parents: e425a86 > >>>>> Author: Erik de Bruin <e...@ixsoftware.nl> > >>>>> Authored: Thu Jul 2 15:12:50 2015 +0200 > >>>>> Committer: Erik de Bruin <e...@ixsoftware.nl> > >>>>> Committed: Thu Jul 2 15:12:50 2015 +0200 > >>>>> > >>>>> > ---------------------------------------------------------------------- > >>>>> .../mxml/flexjs/MXMLFlexJSPublisher.java | 43 +++++++++++++++++++- > >>>>> externs/jasmine/compile-config.xml | 5 +++ > >>>>> externs/jquery/compile-config.xml | 5 +++ > >>>>> 3 files changed, 51 insertions(+), 2 deletions(-) > >>>>> > ---------------------------------------------------------------------- > >>>>> > >>>>> > >>>>> > >>>>> > >>> > http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/1f35e526/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java > >>>>> > ---------------------------------------------------------------------- > >>>>> diff --git > >>>>> > >>> > a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java > >>>>> > >>> > b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java > >>>>> index 1d6c7aa..cf3869b 100644 > >>>>> --- > >>>>> > >>> > a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java > >>>>> +++ > >>>>> > >>> > b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java > >>>>> @@ -22,7 +22,9 @@ import java.io.BufferedReader; > >>>>> import java.io.File; > >>>>> import java.io.FileInputStream; > >>>>> import java.io.IOException; > >>>>> +import java.io.InputStream; > >>>>> import java.io.InputStreamReader; > >>>>> +import java.io.OutputStream; > >>>>> import java.net.URL; > >>>>> import java.util.ArrayList; > >>>>> import java.util.Collection; > >>>>> @@ -49,6 +51,8 @@ import > >>>>> org.apache.flex.compiler.internal.driver.js.goog.JSGoogConfiguration; > >>>>> import org.apache.flex.compiler.internal.graph.GoogDepsWriter; > >>>>> import org.apache.flex.compiler.internal.projects.FlexJSProject; > >>>>> import org.apache.flex.compiler.utils.JSClosureCompilerWrapper; > >>>>> +import org.apache.flex.swc.ISWC; > >>>>> +import org.apache.flex.swc.ISWCFileEntry; > >>>>> > >>>>> public class MXMLFlexJSPublisher extends JSGoogPublisher implements > >>>>> IJSPublisher > >>>>> { > >>>>> @@ -57,6 +61,8 @@ public class MXMLFlexJSPublisher extends > >>> JSGoogPublisher > >>>>> implements IJSPublisher > >>>>> public static final String FLEXJS_INTERMEDIATE_DIR_NAME = "js-debug"; > >>>>> public static final String FLEXJS_RELEASE_DIR_NAME = "js-release"; > >>>>> > >>>>> + private static final String FLEXJS_EXTERNS = "externs"; > >>>>> + > >>>>> class DependencyRecord > >>>>> { > >>>>> String path; > >>>>> @@ -278,8 +284,41 @@ public class MXMLFlexJSPublisher extends > >>>>> JSGoogPublisher implements IJSPublisher > >>>>> > >>>>> JSClosureCompilerWrapper compilerWrapper = new > >>>>> JSClosureCompilerWrapper(); > >>>>> > >>>>> - GoogDepsWriter gdw = new GoogDepsWriter(intermediateDir, > >>>>> projectName, (JSGoogConfiguration) configuration, > >>>>> - project.getLibraries()); > >>>>> + List<ISWC> swcs = project.getLibraries(); > >>>>> + > >>>>> + // (erikdebruin) We don't want to forget that we need to tell the > >>>>> GCC > >>>>> + // about them fancy externs we've been working so > >>>>> hard on > >>>>> + for (ISWC swc : swcs) > >>>>> + { > >>>>> + String srcName = swc.getSWCFile().getName().replace(".swc", > >>>>> ".js"); > >>>>> + String srcPath = FLEXJS_EXTERNS + File.separator + srcName; > >>>>> + > >>>>> + ISWCFileEntry fileEntry = swc.getFile(FLEXJS_EXTERNS + > >>>>> File.separator + srcName); > >>>>> + if (fileEntry != null) > >>>>> + { > >>>>> + File destFile = new File(intermediateDirPath + > >>>>> File.separator + srcPath); > >>>>> + > >>>>> + InputStream inStream = fileEntry.createInputStream(); > >>>>> + OutputStream outStream = > >>>>> FileUtils.openOutputStream(destFile); > >>>>> + byte[] b = new byte[1024 * 1024]; > >>>>> + int bytes_read; > >>>>> + while ((bytes_read = inStream.read(b)) != -1) > >>>>> + { > >>>>> + outStream.write(b, 0, bytes_read); > >>>>> + } > >>>>> + outStream.flush(); > >>>>> + outStream.close(); > >>>>> + inStream.close(); > >>>>> + > >>>>> + String destPath = destFile.getAbsolutePath(); > >>>>> + > >>>>> + System.out.println("using extern: " + destPath); > >>>>> + > >>>>> + compilerWrapper.addJSExternsFile(destPath); > >>>>> + } > >>>>> + } > >>>>> + > >>>>> + GoogDepsWriter gdw = new GoogDepsWriter(intermediateDir, > >>>>> projectName, (JSGoogConfiguration) configuration, swcs); > >>>>> StringBuilder depsFileData = new StringBuilder(); > >>>>> try > >>>>> { > >>>>> > >>>>> > >>>>> > >>> > http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/1f35e526/externs/jasmine/compile-config.xml > >>>>> > ---------------------------------------------------------------------- > >>>>> diff --git a/externs/jasmine/compile-config.xml > >>>>> b/externs/jasmine/compile-config.xml > >>>>> index abf867e..2af1e2a 100644 > >>>>> --- a/externs/jasmine/compile-config.xml > >>>>> +++ b/externs/jasmine/compile-config.xml > >>>>> @@ -67,6 +67,11 @@ > >>>>> <path-element>out/as/functions</path-element> > >>>>> </include-sources> > >>>>> > >>>>> + <include-file> > >>>>> + <name>externs/jasmine-2.0.js</name> > >>>>> + <path>externs/jasmine-2.0.js</path> > >>>>> + </include-file> > >>>>> + > >>>>> <!-- > >>>>> <include-file> > >>>>> <name>defaults.css</name> > >>>>> > >>>>> > >>>>> > >>> > http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/1f35e526/externs/jquery/compile-config.xml > >>>>> > ---------------------------------------------------------------------- > >>>>> diff --git a/externs/jquery/compile-config.xml > >>>>> b/externs/jquery/compile-config.xml > >>>>> index c0c7f34..3ff4f10 100644 > >>>>> --- a/externs/jquery/compile-config.xml > >>>>> +++ b/externs/jquery/compile-config.xml > >>>>> @@ -71,6 +71,11 @@ > >>>>> <path-element>out/as/functions</path-element> > >>>>> </include-sources> > >>>>> > >>>>> + <include-file> > >>>>> + <name>externs/jquery-1.9.js</name> > >>>>> + <path>externs/jquery-1.9.js</path> > >>>>> + </include-file> > >>>>> + > >>>>> <!-- > >>>>> <include-file> > >>>>> <name>defaults.css</name> > >>>>> > >>>>> > >>> > >>> > >> > >> > >> > >> -- > >> Ix Multimedia Software > >> > >> Jan Luykenstraat 27 > >> 3521 VB Utrecht > >> > >> T. 06-51952295 > >> I. www.ixsoftware.nl > >> > > > > > > > > -- > > Ix Multimedia Software > > > > Jan Luykenstraat 27 > > 3521 VB Utrecht > > > > T. 06-51952295 > > I. www.ixsoftware.nl > >