summaryrefslogtreecommitdiff
path: root/packages/pastojs
diff options
context:
space:
mode:
authormattias <mattias@3ad0048d-3df7-0310-abae-a5850022a9f2>2021-03-31 20:50:37 +0000
committermattias <mattias@3ad0048d-3df7-0310-abae-a5850022a9f2>2021-03-31 20:50:37 +0000
commit2d68c1444b18dbc52fd381f7e93e92d8031368ba (patch)
tree1761984162fedf1ae5090051786e9c6e3e57c088 /packages/pastojs
parentedcc41e76209e28e5d6c2621605b8fe8f39f1eef (diff)
downloadfpc-2d68c1444b18dbc52fd381f7e93e92d8031368ba.tar.gz
pastojs: specialzie anonymous function
git-svn-id: https://svn.freepascal.org/svn/fpc/trunk@49093 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'packages/pastojs')
-rw-r--r--packages/pastojs/tests/tcgenerics.pas59
-rw-r--r--packages/pastojs/tests/tcmodules.pas1
2 files changed, 59 insertions, 1 deletions
diff --git a/packages/pastojs/tests/tcgenerics.pas b/packages/pastojs/tests/tcgenerics.pas
index 0bf0242894..1f486d4d9f 100644
--- a/packages/pastojs/tests/tcgenerics.pas
+++ b/packages/pastojs/tests/tcgenerics.pas
@@ -75,6 +75,7 @@ type
procedure TestGenProc_TypeInfo;
procedure TestGenProc_Infer_Widen;
procedure TestGenProc_Infer_PassAsArg;
+ procedure TestGenProc_AnonymousProc;
// ToDo: FuncName:= instead of Result:=
// generic methods
@@ -2216,6 +2217,64 @@ begin
'']));
end;
+procedure TTestGenerics.TestGenProc_AnonymousProc;
+begin
+ StartProgram(false);
+ Add([
+ '{$mode delphi}',
+ 'type',
+ ' TProc = reference to procedure;',
+ ' TFunc = reference to function(Value: JSValue): JSValue;',
+ 'function Run<T>(a: T; p: TProc): T;',
+ 'var b: T;',
+ ' f: TFunc;',
+ 'begin',
+ ' Result:=Run(a,procedure()begin end);',
+ ' f:=function(b: JSValue): JSValue begin end;',
+ ' f:=function(b: JSValue): JSValue',
+ ' function Sub(c: JSValue): JSValue;',
+ ' begin',
+ ' Result:=c;',
+ ' end;',
+ ' begin',
+ ' Result:=Sub(b);',
+ ' end;',
+ 'end;',
+ 'begin',
+ ' Run<word>(3,procedure() begin end);',
+ '']);
+ ConvertProgram;
+ CheckSource('TestGenProc_AnonymousProc',
+ LinesToStr([ // statements
+ 'this.Run$G1 = function (a, p) {',
+ ' var Result = 0;',
+ ' var b = 0;',
+ ' var f = null;',
+ ' Result = $mod.Run$G1(a, function () {',
+ ' });',
+ ' f = function (b) {',
+ ' var Result = undefined;',
+ ' return Result;',
+ ' };',
+ ' f = function (b) {',
+ ' var Result = undefined;',
+ ' function Sub(c) {',
+ ' var Result = undefined;',
+ ' Result = c;',
+ ' return Result;',
+ ' };',
+ ' Result = Sub(b);',
+ ' return Result;',
+ ' };',
+ ' return Result;',
+ '};',
+ '']),
+ LinesToStr([ // $mod.$main
+ '$mod.Run$G1(3, function () {',
+ '});',
+ '']));
+end;
+
procedure TTestGenerics.TestGenMethod_ImplicitSpec_ObjFPC;
begin
StartProgram(false);
diff --git a/packages/pastojs/tests/tcmodules.pas b/packages/pastojs/tests/tcmodules.pas
index 47dfa9014d..883d91f70e 100644
--- a/packages/pastojs/tests/tcmodules.pas
+++ b/packages/pastojs/tests/tcmodules.pas
@@ -830,7 +830,6 @@ type
Procedure TestRTTI_Class_OtherUnit_TypeAlias;
Procedure TestRTTI_Class_OmitRTTI;
Procedure TestRTTI_Class_Field_AnonymousArrayOfSelfClass;
- Procedure TestRTTI_Class_Field_AnonymousArrayOfSelfClass2;
Procedure TestRTTI_IndexModifier;
Procedure TestRTTI_StoredModifier;
Procedure TestRTTI_DefaultValue;