mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-15 06:29:38 +02:00
pastojs: specialize procedure using pascal name
git-svn-id: trunk@46796 -
This commit is contained in:
parent
2f661371fe
commit
ce9d7f9995
@ -1513,7 +1513,6 @@ type
|
|||||||
function GenerateGUID(El: TPasClassType): string; virtual;
|
function GenerateGUID(El: TPasClassType): string; virtual;
|
||||||
protected
|
protected
|
||||||
// generic/specialize
|
// generic/specialize
|
||||||
function CreateSpecializedTypeName(Item: TPRSpecializedItem): string; override;
|
|
||||||
procedure SpecializeGenericIntf(SpecializedItem: TPRSpecializedItem);
|
procedure SpecializeGenericIntf(SpecializedItem: TPRSpecializedItem);
|
||||||
override;
|
override;
|
||||||
procedure SpecializeGenericImpl(SpecializedItem: TPRSpecializedItem);
|
procedure SpecializeGenericImpl(SpecializedItem: TPRSpecializedItem);
|
||||||
@ -5024,22 +5023,6 @@ begin
|
|||||||
Result:=Result+'}';
|
Result:=Result+'}';
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TPas2JSResolver.CreateSpecializedTypeName(Item: TPRSpecializedItem): string;
|
|
||||||
var
|
|
||||||
C: TClass;
|
|
||||||
begin
|
|
||||||
C:=Item.GenericEl.ClassType;
|
|
||||||
if (C=TPasProcedureType)
|
|
||||||
or (C=TPasFunctionType)
|
|
||||||
or (C=TPasArrayType)
|
|
||||||
or (C=TPasRecordType)
|
|
||||||
or (C=TPasClassType)
|
|
||||||
then
|
|
||||||
Result:=inherited CreateSpecializedTypeName(Item)
|
|
||||||
else
|
|
||||||
Result:=Item.GenericEl.Name+'$G'+IntToStr(Item.Index+1);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TPas2JSResolver.SpecializeGenericIntf(
|
procedure TPas2JSResolver.SpecializeGenericIntf(
|
||||||
SpecializedItem: TPRSpecializedItem);
|
SpecializedItem: TPRSpecializedItem);
|
||||||
begin
|
begin
|
||||||
@ -19418,8 +19401,10 @@ var
|
|||||||
C: TClass;
|
C: TClass;
|
||||||
NewEl: TJSElement;
|
NewEl: TJSElement;
|
||||||
Members: TFPList;
|
Members: TFPList;
|
||||||
|
aResolver: TPas2JSResolver;
|
||||||
begin
|
begin
|
||||||
Result:=false;
|
Result:=false;
|
||||||
|
aResolver:=FuncContext.Resolver;
|
||||||
if El.ClassType=TPasRecordType then
|
if El.ClassType=TPasRecordType then
|
||||||
mt:=mtRecord
|
mt:=mtRecord
|
||||||
else if El.ClassType=TPasClassType then
|
else if El.ClassType=TPasClassType then
|
||||||
@ -19457,7 +19442,11 @@ begin
|
|||||||
if C=TPasVariable then
|
if C=TPasVariable then
|
||||||
NewEl:=CreateRTTIMemberField(Members,i,MembersFuncContext)
|
NewEl:=CreateRTTIMemberField(Members,i,MembersFuncContext)
|
||||||
else if C.InheritsFrom(TPasProcedure) then
|
else if C.InheritsFrom(TPasProcedure) then
|
||||||
NewEl:=CreateRTTIMemberMethod(Members,i,MembersFuncContext)
|
begin
|
||||||
|
if aResolver.GetProcTemplateTypes(TPasProcedure(P))<>nil then
|
||||||
|
continue; // parametrized functions cannot be published
|
||||||
|
NewEl:=CreateRTTIMemberMethod(Members,i,MembersFuncContext);
|
||||||
|
end
|
||||||
else if C=TPasProperty then
|
else if C=TPasProperty then
|
||||||
NewEl:=CreateRTTIMemberProperty(Members,i,MembersFuncContext)
|
NewEl:=CreateRTTIMemberProperty(Members,i,MembersFuncContext)
|
||||||
else if C.InheritsFrom(TPasType)
|
else if C.InheritsFrom(TPasType)
|
||||||
|
Loading…
Reference in New Issue
Block a user