diff options
| author | peterjan <peterjan@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2013-11-06 09:22:12 +0000 |
|---|---|---|
| committer | peterjan <peterjan@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2013-11-06 09:22:12 +0000 |
| commit | f7eae94080793340aa3c12e6e27e2bb0d75e451a (patch) | |
| tree | 2a78cf2e211f339492ef5c424e700befb06f9ec1 | |
| parent | b7ed7c145773834a7940e80eebab1f1f900ab32f (diff) | |
| download | fpc-f7eae94080793340aa3c12e6e27e2bb0d75e451a.tar.gz | |
Added test for calling overloaded functions from within generic types
git-svn-id: http://svn.freepascal.org/svn/fpc/branches/peterjan@25948 3ad0048d-3df7-0310-abae-a5850022a9f2
| -rw-r--r-- | generics/partialspecialization/tests/test/tgeneric98.pp | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/generics/partialspecialization/tests/test/tgeneric98.pp b/generics/partialspecialization/tests/test/tgeneric98.pp new file mode 100644 index 0000000000..2a9191e421 --- /dev/null +++ b/generics/partialspecialization/tests/test/tgeneric98.pp @@ -0,0 +1,43 @@ +program tgeneric98; + +{$IFDEF FPC} + {$MODE DELPHI} +{$ENDIF} + +type + TCondition<TElement: class> = class(TObject) + end; + + TContainer<TElement: class> = class(TObject) + public + function Contains(Element: TElement): Boolean; overload; + function Contains(Condition: TCondition<TElement>): Boolean; overload; + procedure Test(); + end; + +{ TContainer<TElement> } + +procedure TContainer<TElement>.Test(); +var + Element: TElement; +begin + Element := nil; + Contains(Element); // Contains(TElement) should be called here as there is no ambiguity +end; + +function TContainer<TElement>.Contains(Element: TElement): Boolean; +begin +end; + +function TContainer<TElement>.Contains(Condition: TCondition<TElement>): Boolean; +begin +end; + +var + Container: TContainer<TObject>; +begin + Container := TContainer<TObject>.Create(); + Container.Contains(TObject.Create()); + Container.Contains(TCondition<TObject>.Create()); + Container.Free(); +end. |
