diff options
author | mattias <mattias@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2019-10-22 12:16:29 +0000 |
---|---|---|
committer | mattias <mattias@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2019-10-22 12:16:29 +0000 |
commit | 184ef935beafa9884840e27cf57d982c7519e2b4 (patch) | |
tree | e2277dfe8a6d80c026c0c56420525042af2fe949 /packages/fcl-passrc/tests/tcresolvegenerics.pas | |
parent | 7ae18df321140b028831006b10165bfcc2b3bdc2 (diff) | |
download | fpc-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.pas | 39 |
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); |