I think I see the pattern:

DOMMatrixReadOnly implements DOMMatrixInit

DOMMatrixInit extends DOMMatrix2DInit

Any getters and setter defined in DOMMatrixInit are compiled as getters/setters

Any getters and setters in the super interface (DOMMatrix2DInit) becomes vars.

Definitely seems like a bug...

> On Feb 18, 2026, at 7:09 PM, Harbs <[email protected]> wrote:
> 
> Another really weird one:
> 
> /**
>  * @type {number}
>  * @see https://www.w3.org/TR/geometry-1/#dom-dommatrixreadonly-m12
>  */
> DOMMatrixReadOnly.prototype.m12;
> 
> /**
>  * @type {number}
>  * @see https://www.w3.org/TR/geometry-1/#dom-dommatrixreadonly-m13
>  */
> DOMMatrixReadOnly.prototype.m13;
> 
> Becomes:
> 
>     /**
>      * @see JSType - [number] 
>      * @see https://www.w3.org/TR/geometry-1/#dom-dommatrixreadonly-m12 
>      * @see [w3c_geometry1]
>      */
>     public var m12:Number;
> 
>     /**
>      * @see JSType - [number] 
>      * @see https://www.w3.org/TR/geometry-1/#dom-dommatrixreadonly-m13 
>      * @see [w3c_geometry1]
>      */
>     public function get m13():Number{ return 0; };
>     public function set m13(value:Number):void{};
> 
> 
> Why did m12 get compiled as a var, while m13 became getters/setters?
> 
> (The var causes an error.)
> 
> That was just one sampling. Some properties get compiled as varsity and 
> others as setters/getters.
> 
> I did not see any pattern.
> 
>> On Feb 18, 2026, at 4:47 PM, Harbs <[email protected]> wrote:
>> 
>> That issue came from fecthapi.js
>> 
>> Other files have other issues.
>> 
>>> On Feb 18, 2026, at 12:32 PM, Yishay Weiss <[email protected]> wrote:
>>> 
>>> Which externs file are you using?
>>> ________________________________
>>> From: Harbs <[email protected]>
>>> Sent: Wednesday, February 18, 2026 12:12 PM
>>> To: Apache Royale Development <[email protected]>
>>> Subject: typedefs
>>> 
>>> I’m trying to add more js typedefs and I’m running into issues.
>>> 
>>> One issue I just ran into is:
>>> 
>>> /** @type {boolean} */
>>> Body.prototype.bodyUsed;
>>> 
>>> 
>>> /** @override */
>>> Request.prototype.bodyUsed;
>>> 
>>> /** @override */
>>> Response.prototype.bodyUsed;
>>> 
>>> 
>>> Request and Response both:
>>> * @implements {Body}
>>> 
>>> When compiling, we get an error because the Request and Response 
>>> setters/getters are typed to “Object”, while the Body ones are correctly 
>>> types as Booleans.
>>> 
>>> It seems like externc does not find the inherited types using @implements.
>>> 
>>> Is this a bug? Something not implemented? Is it easy to fix?
>>> 
>>> We can add more files to the list we maintain in royale-extras, but I’d 
>>> like to reduce that rather than increase it.
>>> 
>>> Thoughts?
>>> 
>>> Harbs
>> 
> 

Reply via email to