|
@@ -1559,6 +1559,8 @@ type
|
|
|
override;
|
|
|
procedure SpecializeGenericImpl(SpecializedItem: TPRSpecializedItem);
|
|
|
override;
|
|
|
+ procedure SpecializeProcedure(GenEl, SpecEl: TPasProcedure;
|
|
|
+ SpecializedItem: TPRSpecializedItem); override;
|
|
|
function SpecializeParamsNeedDelay(SpecializedItem: TPRSpecializedItem): TPasElement; virtual;
|
|
|
function IsSpecializedNonStaticMethod(ProcType: TPasProcedureType): boolean;
|
|
|
protected
|
|
@@ -5267,6 +5269,22 @@ begin
|
|
|
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(
|
|
|
SpecializedItem: TPRSpecializedItem): TPasElement;
|
|
|
// finds first specialize param defined later than the generic
|