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 <[email protected]> wrote:
>
>
> On 6/12/15, 9:00 AM, "Michael Schmalle" <[email protected]> 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
>
>