Browse Source

pastojs: specialize procedure using pascal name

git-svn-id: trunk@46796 -
Mattias Gaertner 4 years ago
parent
commit
ce9d7f9995
1 changed files with 7 additions and 18 deletions
  1. 7 18
      packages/pastojs/src/fppas2js.pp

+ 7 - 18
packages/pastojs/src/fppas2js.pp

@@ -1513,7 +1513,6 @@ type
     function GenerateGUID(El: TPasClassType): string; virtual;
   protected
     // generic/specialize
-    function CreateSpecializedTypeName(Item: TPRSpecializedItem): string; override;
     procedure SpecializeGenericIntf(SpecializedItem: TPRSpecializedItem);
       override;
     procedure SpecializeGenericImpl(SpecializedItem: TPRSpecializedItem);
@@ -5024,22 +5023,6 @@ begin
   Result:=Result+'}';
 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(
   SpecializedItem: TPRSpecializedItem);
 begin
@@ -19418,8 +19401,10 @@ var
   C: TClass;
   NewEl: TJSElement;
   Members: TFPList;
+  aResolver: TPas2JSResolver;
 begin
   Result:=false;
+  aResolver:=FuncContext.Resolver;
   if El.ClassType=TPasRecordType then
     mt:=mtRecord
   else if El.ClassType=TPasClassType then
@@ -19457,7 +19442,11 @@ begin
     if C=TPasVariable then
       NewEl:=CreateRTTIMemberField(Members,i,MembersFuncContext)
     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
       NewEl:=CreateRTTIMemberProperty(Members,i,MembersFuncContext)
     else if C.InheritsFrom(TPasType)