I found a problem related to Advanced compilation and @externs. I read the documentation and the FAQ, and I'm fairly sure I'm doing the right thing, and for complicated examples it all works. But I now have some much less complicated examples, and here the Closure Compiler gets over enthusiastic and breaks stuff.
I managed to slim down my example to be a single script, with a single externs file, which is intended to provide 3 functions to be used from external code, calling in to my compiled code. This is a standard use case covered by the documentation for externs.
BUT .. Basically there seems to be a BUG when the extern function is very simple, then the Compiler decides that it should be inlined, after which the code is no longer present as a function, and so cannot be used externally.
Adding the @noinline directive prevents this, and the function is retained (and retains its original name). A slightly more complicated version of the function is never inlined, and so it also remains.
I think the requirement is simple, a function declared in Externs should NEVER be inlined (and so should act as if the @noinline flag was always present). I have raised this as an issue, and I also managed to reproduce it in the Debugger .. and attach that to the Issue I raised.
Has anyone any suggestions as to how to encourage one of the Contributors to take a look at the issue ? Any assistance most welcome.
Regards,
Nick