diff options
author | mattias <mattias@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2021-03-31 20:50:37 +0000 |
---|---|---|
committer | mattias <mattias@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2021-03-31 20:50:37 +0000 |
commit | 2d68c1444b18dbc52fd381f7e93e92d8031368ba (patch) | |
tree | 1761984162fedf1ae5090051786e9c6e3e57c088 /packages/pastojs | |
parent | edcc41e76209e28e5d6c2621605b8fe8f39f1eef (diff) | |
download | fpc-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.pas | 59 | ||||
-rw-r--r-- | packages/pastojs/tests/tcmodules.pas | 1 |
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; |