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> > >> > > > >