Josh, just to make sure I understand what the options do: If -prevent-rename-public-symbols=false and -js-dynamic-access-unknown-members=false, then external js methods (i.e. setTheme) will be renamed.
If -prevent-rename-public-symbols=false and -js-dynamic-access-unknown-members=true, then external js methods (i.e. setTheme) will not be renamed, but typed public methods will be renamed. Did I get that right? > On Nov 9, 2021, at 7:21 PM, Josh Tynjala <joshtynj...@bowlerhat.dev> wrote: > > 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> >>>> >>> >> >>