Unlike previously, these days, looser code is much more likely to work with
the default compiler options. That was a nice side effect of my efforts to
do the opposite. Harbs wanted me to get the compiler to rename/minify even
more than it was able to before, which I achieved after many months of
work. In the process, I fixed a ton of issues that helped get loose typing
working better.

As you all probably recall, I added a bunch of compiler options to control
the compiler's behavior in regards to exporting and renaming in release
builds compiled with Closure compiler. These new compiler options allow
people to go back to the old behavior, where you were required to almost
always use strict types, and they allow more things to be renamed/minified
than we ever allowed previously (assuming that you write your code
carefully enough). Details in my old threads with the title "Compiler
options for reducing release build size of Royale projects" (and "Part 2").

--
Josh Tynjala
Bowler Hat LLC <https://bowlerhat.dev>


On Tue, Nov 9, 2021 at 4:15 AM Yishay Weiss <yishayj...@hotmail.com> wrote:

> I was playing around with it, trying to demonstrate the advantages of
> typed objects, expecting Object to mess up function calls. The demo glitch
> was that GCC was fine with a looser version.
>
> From: Harbs<mailto:harbs.li...@gmail.com>
> Sent: Tuesday, November 9, 2021 2:13 PM
> To: dev@royale.apache.org<mailto:dev@royale.apache.org>
> Subject: Re: Why Does GCC Not Rename This?
>
> Why is it Object and not “Editor”?
>
>     private var editor:Editor;
>
>
> > On Nov 9, 2021, at 2:03 PM, Harbs <harbs.li...@gmail.com> wrote:
> >
> > Oh. I misread what you wrote. I thought you were asking about “theme”.
> >
> > -js-dynamic-access-unknown-members=true is probably effecting that. What
> compiler option is being used?
> >
> >> On Nov 9, 2021, at 1:59 PM, Harbs <harbs.li...@gmail.com> wrote:
> >>
> >> @nocollapse is what prevents renaming.
> >>
> >> Why it’s writing @nocollapse is another question...
> >>
> >>> On Nov 9, 2021, at 1:36 PM, Yishay Weiss <yishayj...@hotmail.com>
> wrote:
> >>>
> >>>
> >>> An application that uses this class [1] minifies to this [2]. In
> >>>
> >>> org.apache.royale.ace.ACEEditor.prototype.set__theme = function(value)
> {
> >>> this.org_apache_royale_ace_ACEEditor__theme = value;
> >>> var /** @type {Object} */ obj = this.editor;
> >>> obj.setTheme(value);
> >>> };
> >>>
> >>> I expected the closure compiler to rename setTheme(), but instead it
> retained it. How did it know to do that? Is it because it’s an Object type?
> >>>
> >>>
> >>> [1] Apache Paste Bucket<https://paste.apache.org/gg0dy>
> >>> [2] Apache Paste Bucket<https://paste.apache.org/4c5f0>
> >>
> >
>
>

Reply via email to