summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpeterjan <peterjan@3ad0048d-3df7-0310-abae-a5850022a9f2>2013-11-06 09:22:12 +0000
committerpeterjan <peterjan@3ad0048d-3df7-0310-abae-a5850022a9f2>2013-11-06 09:22:12 +0000
commitf7eae94080793340aa3c12e6e27e2bb0d75e451a (patch)
tree2a78cf2e211f339492ef5c424e700befb06f9ec1
parentb7ed7c145773834a7940e80eebab1f1f900ab32f (diff)
downloadfpc-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.pp43
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.