Well I have just tested the boundaries of what will compile to a swc. Wow,
I SERIOUSLY did not think I was going to figure this out but a good puzzle
is always good for the brain.

(sorry for the code but I am trying to explain something)

/**
 * namespace
 * @const
 */
var chrome = {};

/** @const */
chrome.app = {};

/**
 * @type {boolean}
 */
chrome.app.isInstalled;

/**
 * @const
 */
chrome.webstore = {};

/**
 * @const
 */
chrome.runtime = {};

/** @type {!Object|undefined} */
chrome.runtime.lastError = {};

/** @type {string|undefined} */
chrome.runtime.lastError.message;


Long story short,  chrome, chrome.app,  chrome.webstore, chrome.runtime are
Literal Classes(Object Literals). I spent 3 hours thinking about how the
hell this was going to be possible with code completion. I studied the
problem and realized I need to make classes for all namespace object
literals.

Then, chrome is a root level namespace so it's app, webstore and runtime
instances need to be static. Then I couldn't access the next in line
lastError from chrome.runtime. So a non root level var needs to be non
static, then every other property/var up the chain needs to be non static.

So the outcome is, I have 4 passes in the compiler now and I got it to
work! Crazy enough the COMPC compiler actually compiles this mess. The
classes are the same name as the package name it's next to. :)

The only problem is IJ wants to optimize it to an import which is incorrect
but, hey it's works.

"I think" this means I am close to getting packages to work. I will have to
try a lot more tests before I feel like I have this working for different
situations.

Image of the emitted class and code;

http://snag.gy/XzveF.jpg

Mike




On Fri, Jun 12, 2015 at 12:15 PM, Alex Harui <aha...@adobe.com> wrote:

>
>
> On 6/12/15, 9:00 AM, "Michael Schmalle" <teotigraphix...@gmail.com> wrote:
>
> >You know, I am being an idiot, I can work on compilers but it the simple
> >things that confuse me. What is the correct way to test nightlies of
> >FlexJS? I tried building the installer.xml in flex-asjs and it totally
> >screwed up the folder.
> >
> >So what should I have setup to test the compiler with FlexJS projects?
>
> Run the Installer, or grab the binary package, unzip it and run
> installer.xml in that.
>
> When just doing dev work without FB integration, I just point some
> environment variables at the Falcon repo and use Ant to compile the
> examples.
>
> I’m off-line for the rest of the AM.  Hopefully others can help you get
> unstuck.
>
> -Alex
>
>

Reply via email to