[
https://issues.apache.org/jira/browse/FLEX-33182?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13443310#comment-13443310
]
Alex Harui commented on FLEX-33182:
-----------------------------------
I checked with Jeff Dyer, who is the creator of ActionScript 3. He said:
---------BEGIN QUOTE ---------------
Overriding vars is not allowed in AS3. When I compile the code in the bug
report with an asc.jar from last year, here are the errors I get:
jeff-dyers-imac:asc-main jeffdyer$ java -jar asc.jar t.as <http://t.as>
<http://t.as>
[Compiler] Error #1017: The definition of base class Object was not found.
t.as <http://t.as> <http://t.as> , Ln 1, Col 1:
package publicoverridevsoverridepublic
^
1 error found
jeff-dyers-imac:asc-main jeffdyer$ java -jar asc.jar -import builtin.abc t.as
<http://t.as> <http://t.as>
[Compiler] Error #1023: Incompatible override.
t.as <http://t.as> <http://t.as> , Ln 20, Col 44:
override public function set var1(value:String):void
...........................................^
[Compiler] Error #1023: Incompatible override.
t.as <http://t.as> <http://t.as> , Ln 25, Col 44:
override public function get var1():String
...........................................^
[Compiler] Error #1023: Incompatible override.
t.as <http://t.as> <http://t.as> , Ln 38, Col 44:
public override function set var1(value:String):void
...........................................^
[Compiler] Error #1023: Incompatible override.
t.as <http://t.as> <http://t.as> , Ln 43, Col 44:
public override function get var1():String
...........................................^
4 errors found
------------- END QUOTE -------------
So, this is a compiler issue. The compiler should not be allowing this to
compile in the first place. I assume you are using MXMLC?
> override public in subclass results in public write only property. public
> override works as expected
> ----------------------------------------------------------------------------------------------------
>
> Key: FLEX-33182
> URL: https://issues.apache.org/jira/browse/FLEX-33182
> Project: Apache Flex
> Issue Type: Bug
> Affects Versions: Adobe Flex SDK 4.6 (Release)
> Environment: Flash Builder 4.6
> Reporter: Michael Grove
> Attachments: test.zip
>
>
> I'll upload a zip of classes and test cases for flexunit that demonstrate
> this problem. Here's the gist:
> We’ve found that the list of accessors is different if a derived class
> overrides a getter/setter with “public override” vs. “override public”.
> “override public” introduces an additional write only public property as
> shown in both describeType output and in Flash Builder.
> Here are some simple classes that demonstrate the problem, text continued
> below.
> package publicoverridevsoverridepublic
> {
> [Bindable]
> public class BaseClass
> {
> public var var1:String;
> public var var2:String;
> }
> }
> package publicoverridevsoverridepublic
> {
> [Bindable]
> public class SubClassOverridePublic extends BaseClass
> {
> override public function set var1(value:String):void
> {
> super.var1 = value;
> }
> override public function get var1():String
> {
> return super.var1;
> }
> }
> }
> package publicoverridevsoverridepublic
> {
> [Bindable]
> public class SubClassPublicOverride extends BaseClass
> {
> public override function set var1(value:String):void
> {
> super.var1 = value;
> }
> public override function get var1():String
> {
> return super.var1;
> }
> }
> }
> The attributes of SubClassPublicOverride in Flash Builder include a
> _3612138var1 property. It’s a private property that according to Flash
> Builder is write only (only includes a setter). I’m not sure what the
> purpose of this property is, or more generally any of the private properties
> I’ve seen in Flash Builder with numeric prefixes like this. And I’m not sure
> why it is believed only to have a setter. But as it is private, it is not
> included in the results from describeType().
> The attributes of SubClassOverridePublic in Flash Builder have the same
> _3612138var1 property but this time it is public and write only.
> I've never heard of any language treating "public override" and "override
> public" as semantically different and assume this must be a bug.
> Note that some Flex formatters out there are preconfigured to favor “override
> public” to “public override” (that’s actually what broke us – formatting the
> file). If you’re not using describeType you probably don’t care. But it’d
> be interesting to know what else might be different between “override public”
> and “public override”.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira