|
@@ -1545,6 +1545,7 @@ const
|
|
TempRefObjGetterName = 'get';
|
|
TempRefObjGetterName = 'get';
|
|
TempRefObjSetterName = 'set';
|
|
TempRefObjSetterName = 'set';
|
|
TempRefObjSetterArgName = 'v';
|
|
TempRefObjSetterArgName = 'v';
|
|
|
|
+ TempRefObjSetterArgNameAlt = 'p';
|
|
|
|
|
|
function CodePointToJSString(u: longword): TJSString;
|
|
function CodePointToJSString(u: longword): TJSString;
|
|
begin
|
|
begin
|
|
@@ -13406,6 +13407,7 @@ var
|
|
GetPath, SetPath: String;
|
|
GetPath, SetPath: String;
|
|
BracketExpr: TJSBracketMemberExpression;
|
|
BracketExpr: TJSBracketMemberExpression;
|
|
DotExpr: TJSDotMemberExpression;
|
|
DotExpr: TJSDotMemberExpression;
|
|
|
|
+ SetterArgName: Char;
|
|
begin
|
|
begin
|
|
// pass reference -> create a temporary JS object with a FullGetter and setter
|
|
// pass reference -> create a temporary JS object with a FullGetter and setter
|
|
Obj:=nil;
|
|
Obj:=nil;
|
|
@@ -13415,6 +13417,7 @@ begin
|
|
SetPathExpr:=nil;
|
|
SetPathExpr:=nil;
|
|
GetExpr:=nil;
|
|
GetExpr:=nil;
|
|
SetExpr:=nil;
|
|
SetExpr:=nil;
|
|
|
|
+ SetterArgName:=TempRefObjSetterArgName;
|
|
try
|
|
try
|
|
// create FullGetter and setter
|
|
// create FullGetter and setter
|
|
ParamContext.Access:=caByReference;
|
|
ParamContext.Access:=caByReference;
|
|
@@ -13572,7 +13575,10 @@ begin
|
|
// create SetExpr = v;
|
|
// create SetExpr = v;
|
|
AssignSt:=TJSSimpleAssignStatement(CreateElement(TJSSimpleAssignStatement,El));
|
|
AssignSt:=TJSSimpleAssignStatement(CreateElement(TJSSimpleAssignStatement,El));
|
|
AssignSt.LHS:=SetExpr;
|
|
AssignSt.LHS:=SetExpr;
|
|
- AssignSt.Expr:=CreatePrimitiveDotExpr(TempRefObjSetterArgName,El);
|
|
|
|
|
|
+ if (SetExpr is TJSPrimaryExpressionIdent)
|
|
|
|
+ and (TJSPrimaryExpressionIdent(SetExpr).Name=TJSString(SetterArgName)) then
|
|
|
|
+ SetterArgName:=TempRefObjSetterArgNameAlt;
|
|
|
|
+ AssignSt.Expr:=CreatePrimitiveDotExpr(SetterArgName,El);
|
|
SetExpr:=AssignSt;
|
|
SetExpr:=AssignSt;
|
|
end
|
|
end
|
|
else if (SetExpr.ClassType=TJSCallExpression) then
|
|
else if (SetExpr.ClassType=TJSCallExpression) then
|
|
@@ -13601,7 +13607,7 @@ begin
|
|
ObjLit.Name:=TempRefObjSetterName;
|
|
ObjLit.Name:=TempRefObjSetterName;
|
|
FuncSt:=CreateFunctionSt(El);
|
|
FuncSt:=CreateFunctionSt(El);
|
|
ObjLit.Expr:=FuncSt;
|
|
ObjLit.Expr:=FuncSt;
|
|
- FuncSt.AFunction.Params.Add(TempRefObjSetterArgName);
|
|
|
|
|
|
+ FuncSt.AFunction.Params.Add(SetterArgName);
|
|
FuncSt.AFunction.Body.A:=SetExpr;
|
|
FuncSt.AFunction.Body.A:=SetExpr;
|
|
SetExpr:=nil;
|
|
SetExpr:=nil;
|
|
|
|
|