mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-10 11:49:13 +02:00
pastojs: filer: fixed restoring overload names of specialized methods
git-svn-id: trunk@47674 -
(cherry picked from commit 0eac775cea
)
This commit is contained in:
parent
9459aabb51
commit
381f6f7f23
@ -1871,7 +1871,7 @@ type
|
|||||||
procedure SpecializeElArray(GenEl, SpecEl: TPasElement;
|
procedure SpecializeElArray(GenEl, SpecEl: TPasElement;
|
||||||
GenList: TPasElementArray; var SpecList: TPasElementArray; AllowReferences: boolean
|
GenList: TPasElementArray; var SpecList: TPasElementArray; AllowReferences: boolean
|
||||||
{$IFDEF CheckPasTreeRefCount}; const RefId: string{$ENDIF});
|
{$IFDEF CheckPasTreeRefCount}; const RefId: string{$ENDIF});
|
||||||
procedure SpecializeProcedure(GenEl, SpecEl: TPasProcedure; SpecializedItem: TPRSpecializedItem);
|
procedure SpecializeProcedure(GenEl, SpecEl: TPasProcedure; SpecializedItem: TPRSpecializedItem); virtual;
|
||||||
procedure SpecializeOperator(GenEl, SpecEl: TPasOperator);
|
procedure SpecializeOperator(GenEl, SpecEl: TPasOperator);
|
||||||
procedure SpecializeProcedureType(GenEl, SpecEl: TPasProcedureType; SpecializedItem: TPRSpecializedItem);
|
procedure SpecializeProcedureType(GenEl, SpecEl: TPasProcedureType; SpecializedItem: TPRSpecializedItem);
|
||||||
procedure SpecializeProcedureBody(GenEl, SpecEl: TProcedureBody);
|
procedure SpecializeProcedureBody(GenEl, SpecEl: TProcedureBody);
|
||||||
|
@ -1559,6 +1559,8 @@ type
|
|||||||
override;
|
override;
|
||||||
procedure SpecializeGenericImpl(SpecializedItem: TPRSpecializedItem);
|
procedure SpecializeGenericImpl(SpecializedItem: TPRSpecializedItem);
|
||||||
override;
|
override;
|
||||||
|
procedure SpecializeProcedure(GenEl, SpecEl: TPasProcedure;
|
||||||
|
SpecializedItem: TPRSpecializedItem); override;
|
||||||
function SpecializeParamsNeedDelay(SpecializedItem: TPRSpecializedItem): TPasElement; virtual;
|
function SpecializeParamsNeedDelay(SpecializedItem: TPRSpecializedItem): TPasElement; virtual;
|
||||||
function IsSpecializedNonStaticMethod(ProcType: TPasProcedureType): boolean;
|
function IsSpecializedNonStaticMethod(ProcType: TPasProcedureType): boolean;
|
||||||
protected
|
protected
|
||||||
@ -5267,6 +5269,22 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TPas2JSResolver.SpecializeProcedure(GenEl, SpecEl: TPasProcedure;
|
||||||
|
SpecializedItem: TPRSpecializedItem);
|
||||||
|
var
|
||||||
|
GenProcScope, SpecProcScope: TPas2JSProcedureScope;
|
||||||
|
begin
|
||||||
|
GenProcScope:=GenEl.CustomData as TPas2JSProcedureScope;
|
||||||
|
SpecProcScope:=SpecEl.CustomData as TPas2JSProcedureScope;
|
||||||
|
if SpecializedItem=nil then
|
||||||
|
begin
|
||||||
|
SpecProcScope.OverloadName:=GenProcScope.OverloadName;
|
||||||
|
SpecProcScope.JSName:=GenProcScope.JSName;
|
||||||
|
// SpecProcScope.ResultVarName is set on demand
|
||||||
|
end;
|
||||||
|
inherited SpecializeProcedure(GenEl, SpecEl, SpecializedItem);
|
||||||
|
end;
|
||||||
|
|
||||||
function TPas2JSResolver.SpecializeParamsNeedDelay(
|
function TPas2JSResolver.SpecializeParamsNeedDelay(
|
||||||
SpecializedItem: TPRSpecializedItem): TPasElement;
|
SpecializedItem: TPRSpecializedItem): TPasElement;
|
||||||
// finds first specialize param defined later than the generic
|
// finds first specialize param defined later than the generic
|
||||||
|
@ -4596,6 +4596,7 @@ var
|
|||||||
OldInGeneric: Boolean;
|
OldInGeneric: Boolean;
|
||||||
begin
|
begin
|
||||||
WritePasElement(Obj,El,aContext);
|
WritePasElement(Obj,El,aContext);
|
||||||
|
|
||||||
Scope:=El.CustomData as TPas2JSProcedureScope;
|
Scope:=El.CustomData as TPas2JSProcedureScope;
|
||||||
//writeln('TPCUWriter.WriteProcedure ',GetObjName(El),' ',GetObjName(Scope),' ',Resolver.GetElementSourcePosStr(El));
|
//writeln('TPCUWriter.WriteProcedure ',GetObjName(El),' ',GetObjName(Scope),' ',Resolver.GetElementSourcePosStr(El));
|
||||||
|
|
||||||
@ -6698,7 +6699,7 @@ begin
|
|||||||
if not ReadInteger(Obj,'Id',Id,GenEl) then
|
if not ReadInteger(Obj,'Id',Id,GenEl) then
|
||||||
RaiseMsg(20200531085133,GenEl);
|
RaiseMsg(20200531085133,GenEl);
|
||||||
if not ReadString(Obj,'SpecName',SpecName,GenEl) then
|
if not ReadString(Obj,'SpecName',SpecName,GenEl) then
|
||||||
RaiseMsg(20200531085133,GenEl);
|
RaiseMsg(20200531085134,GenEl);
|
||||||
|
|
||||||
PendSpec:=PromiseSpecialize(Id,SpecName,nil,GenEl);
|
PendSpec:=PromiseSpecialize(Id,SpecName,nil,GenEl);
|
||||||
PendSpec.Obj:=Obj;
|
PendSpec.Obj:=Obj;
|
||||||
|
Loading…
Reference in New Issue
Block a user