summaryrefslogtreecommitdiff
path: root/packages/fcl-passrc/tests/tcresolvegenerics.pas
diff options
context:
space:
mode:
Diffstat (limited to 'packages/fcl-passrc/tests/tcresolvegenerics.pas')
-rw-r--r--packages/fcl-passrc/tests/tcresolvegenerics.pas27
1 files changed, 27 insertions, 0 deletions
diff --git a/packages/fcl-passrc/tests/tcresolvegenerics.pas b/packages/fcl-passrc/tests/tcresolvegenerics.pas
index 83f59c6c7c..db692e4358 100644
--- a/packages/fcl-passrc/tests/tcresolvegenerics.pas
+++ b/packages/fcl-passrc/tests/tcresolvegenerics.pas
@@ -157,6 +157,7 @@ type
procedure TestGenProc_TypeParamCntOverloadNoParams;
procedure TestGenProc_TypeParamWithDefaultParamDelphiFail;
procedure TestGenProc_ParamSpecWithT;
+ procedure TestGenProc_ParamSpecWithTNestedType;
// ToDo: NestedResultAssign
// generic function infer types
@@ -2554,6 +2555,32 @@ begin
ParseProgram;
end;
+procedure TTestResolveGenerics.TestGenProc_ParamSpecWithTNestedType;
+begin
+ StartProgram(false);
+ Add([
+ '{$mode delphi}',
+ 'type',
+ ' TObject = class end;',
+ ' TBird<T> = class',
+ ' type',
+ ' TEvent = procedure(aSender: T);',
+ ' end;',
+ 'procedure Fly<T>(Event: TBird<T>.TEvent; Sender: T);',
+ 'begin',
+ ' Event(Sender);',
+ 'end;',
+ 'procedure Run(aSender: TObject);',
+ 'begin',
+ 'end;',
+ 'var',
+ ' Bird: TBird<TObject>;',
+ 'begin',
+ ' Fly<TObject>(@Run,Bird);',
+ '']);
+ ParseProgram;
+end;
+
procedure TTestResolveGenerics.TestGenProc_Infer_NeedExplicitFail;
begin
StartProgram(false);