[Pas2js] Subclassing TJSArray
Michael Van Canneyt
michael at freepascal.org
Fri May 11 11:53:49 CEST 2018
On Fri, 11 May 2018, Ryan Joseph wrote:
> I was curious if I could subclass an array without it being external but I got a compile error as seen below. If I move Get/SetElements to public then it compiles but the JavaScript seems wrong. Bugs or not implemented yet?
>
> ========
>
> type
> TVec2 = class (TJSArray)
> private
> procedure SetX (newValue: GLfloat);
> procedure SetY (newValue: GLfloat);
>
> function GetX: GLfloat;
> function GetY: GLfloat;
> public
> property x: GLfloat read GetX write SetX;
> property y: GLfloat read GetY write SetY;
> end;
>
> procedure TVec2.SetX (newValue: GLfloat);
> begin
> SetElements(0, newValue);
> end;
>
> procedure TVec2.SetY (newValue: GLfloat);
> begin
> SetElements(1, newValue);
> end;
>
> function TVec2.GetX: GLfloat;
> begin
> result := GLfloat(GetElements(0)); // Illegal type conversion: "set" to "Double"
> end;
>
> function TVec2.GetY: GLfloat;
> begin
> result := GLfloat(GetElements(1));
> end;
>
>
> v := TVec2.new(2);
> v.x := 100;
> v.y := 200;
>
> ======
>
> this.SetX = function (newValue) {
> this[](0,newValue); // ERROR HERE
> };
> this.SetY = function (newValue) {
> this[](1,newValue);
> };
Unless I made a mistake in the translation, it looks like a compiler bug.
Michael.
More information about the Pas2js
mailing list