summaryrefslogtreecommitdiff
path: root/packages/fcl-passrc/tests/tcresolvegenerics.pas
diff options
context:
space:
mode:
authormattias <mattias@3ad0048d-3df7-0310-abae-a5850022a9f2>2019-10-22 12:16:29 +0000
committermattias <mattias@3ad0048d-3df7-0310-abae-a5850022a9f2>2019-10-22 12:16:29 +0000
commit184ef935beafa9884840e27cf57d982c7519e2b4 (patch)
treee2277dfe8a6d80c026c0c56420525042af2fe949 /packages/fcl-passrc/tests/tcresolvegenerics.pas
parent7ae18df321140b028831006b10165bfcc2b3bdc2 (diff)
downloadfpc-184ef935beafa9884840e27cf57d982c7519e2b4.tar.gz
fcl-passrc: resolver: pass inlinespec as param
git-svn-id: https://svn.freepascal.org/svn/fpc/trunk@43303 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'packages/fcl-passrc/tests/tcresolvegenerics.pas')
-rw-r--r--packages/fcl-passrc/tests/tcresolvegenerics.pas39
1 files changed, 39 insertions, 0 deletions
diff --git a/packages/fcl-passrc/tests/tcresolvegenerics.pas b/packages/fcl-passrc/tests/tcresolvegenerics.pas
index bc031d1e82..47c2b26e28 100644
--- a/packages/fcl-passrc/tests/tcresolvegenerics.pas
+++ b/packages/fcl-passrc/tests/tcresolvegenerics.pas
@@ -156,6 +156,8 @@ type
procedure TestGenProc_Infer_ProcT;
procedure TestGenProc_Infer_Mismatch;
procedure TestGenProc_Infer_ArrayOfT;
+ procedure TestGenProc_Infer_PassAsArgDelphi;
+ procedure TestGenProc_Infer_PassAsArgObjFPC;
// ToDo procedure TestGenProc_Infer_ProcType;
// generic methods
@@ -2342,6 +2344,43 @@ begin
ParseProgram;
end;
+procedure TTestResolveGenerics.TestGenProc_Infer_PassAsArgDelphi;
+begin
+ StartProgram(false);
+ Add([
+ '{$mode delphi}',
+ 'function Run<T>(a: T): T;',
+ 'var b: T;',
+ 'begin',
+ ' Run(Run<word>(3));',
+ ' Run(Run(4));',
+ 'end;',
+ 'begin',
+ ' Run(Run<word>(5));',
+ ' Run(Run(6));',
+ '']);
+ ParseProgram;
+end;
+
+procedure TTestResolveGenerics.TestGenProc_Infer_PassAsArgObjFPC;
+begin
+ StartProgram(false);
+ Add([
+ '{$mode objfpc}',
+ '{$ModeSwitch implicitfunctionspecialization}',
+ 'generic function Run<T>(a: T): T;',
+ 'var b: T;',
+ 'begin',
+ ' Run(specialize Run<word>(3));',
+ ' Run(Run(4));',
+ 'end;',
+ 'begin',
+ ' Run(specialize Run<word>(5));',
+ ' Run(Run(6));',
+ '']);
+ ParseProgram;
+end;
+
procedure TTestResolveGenerics.TestGenMethod_VirtualFail;
begin
StartProgram(false);