Perhaps Falcon should have a specific compiler error or warning that says that setters must be public when using [Bindable]. I assume that the current error is kind of generic, so something more specific would help make it clear what's wrong and how to fix it.
- Josh On Mon, Nov 21, 2016 at 9:48 PM, Alex Harui <aha...@adobe.com> wrote: > After some investigation, it appears that for classes with [Bindable], > with MXMLC you could get away with having a public getter and private > setter. But that is because the MXMLC compiler converts the setter to a > public setter, defeating the whole point of making a private setter. > > So, I'd like to get ideas on what Falcon should do. Currently Falcon > reports an error like MXMLC does when a class isn't [Bindable] but has a > public getter and private setter. Should Falcon also convert the setter > to public like MXMLC does so existing code will continue to run even > though there is a chance you have a bug in your code where you are > accidentally setting the property from outside the class? > > Seems like it is a bug that MXMLC converts the setter to public and so > Falcon should not replicate that bug. > > Thoughts? > -Alex > > On 11/21/16, 12:22 AM, "Harbs" <harbs.li...@gmail.com> wrote: > > >I changed it to this.regular = font and I’m still getting the same error. > > > >On Nov 21, 2016, at 10:18 AM, Harbs <harbs.li...@gmail.com> wrote: > > > >> Huh. > >> > >> I just did a code review, and it looks like “this” was removed from the > >>FlexJS code a number of months ago. Not sure why… > >> > >> On Nov 21, 2016, at 9:41 AM, Alex Harui <aha...@adobe.com> wrote: > >> > >>> Please post a small test case I can compile with MXMLC. > >>> > >>> -Alex > >>> > >>> On 11/20/16, 11:37 PM, "Harbs" <harbs.li...@gmail.com> wrote: > >>> > >>>> Yes. This code is about 4 or 5 years old and I’ve had no errors to > >>>>date. > >>>> > >>>> On Nov 21, 2016, at 9:35 AM, Alex Harui <aha...@adobe.com> wrote: > >>>> > >>>>> Are you sure MXMLC compiles your code without error? MXMLC reported > >>>>>the > >>>>> "read-only" error for me. > >>>>> > >>>>> -Alex > >>>>> > >>>>> On 11/20/16, 10:44 PM, "Harbs" <harbs.li...@gmail.com> wrote: > >>>>> > >>>>>> The latest Falcon breaks valid existing code patterns. > >>>>>> > >>>>>> I know there was a recent discussion on related, but I can’t find it > >>>>>> right now. > >>>>>> > >>>>>> I have some code which I migrated from a Flash app: > >>>>>> > >>>>>> private var _regular:FontVO; > >>>>>> public function get regular():FontVO > >>>>>> { > >>>>>> return _regular; > >>>>>> } > >>>>>> private function set regular(value:FontVO):void > >>>>>> { > >>>>>> _regular = value; > >>>>>> } > >>>>>> > >>>>>> > >>>>>> Somewhere else in the same class I have the following: > >>>>>> > >>>>>> if(style.toLowerCase() == "regular" || > style.toLowerCase() == > >>>>>> "normal"){ > >>>>>> regular = font; > >>>>>> } > >>>>>> > >>>>>> This code compiled and worked correctly in Flash as well as in > >>>>>>Falcon > >>>>>> until today. I’m now getting an error: > >>>>>> Property regular is read-only. > >>>>>> > >>>>>> regular = font; > >>>>>> ^ > >>>>>> > >>>>>> This code is in the same class, but the compiler is not recognizing > >>>>>>the > >>>>>> private setter. > >>>>>> > >>>>>> Thanks, > >>>>>> Harbs > >>>>>> > >>>>> > >>>> > >>> > >> > > > >