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

Reply via email to