summary refs log tree commit diff stats
path: root/tests/overload/toverload_issues.nim
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2019-05-21 01:11:43 +0200
committerAndreas Rumpf <rumpf_a@web.de>2019-05-22 07:41:16 +0200
commit90e882d55b69020b52efd891c935e942d10829ee (patch)
tree7539e199ada2ef5900d98d4cdd4a8aa167bb89a2 /tests/overload/toverload_issues.nim
parent11fca968b2cb3714b55141acf39bd1691d7ae8eb (diff)
downloadNim-90e882d55b69020b52efd891c935e942d10829ee.tar.gz
fixes #11239
Diffstat (limited to 'tests/overload/toverload_issues.nim')
-rw-r--r--tests/overload/toverload_issues.nim16
1 files changed, 16 insertions, 0 deletions
diff --git a/tests/overload/toverload_issues.nim b/tests/overload/toverload_issues.nim
index fe1603a44..5db7b54fa 100644
--- a/tests/overload/toverload_issues.nim
+++ b/tests/overload/toverload_issues.nim
@@ -179,3 +179,19 @@ proc varargProc(args: varargs[AbstractObject, convert]): int =
 
 var obj = SomeObject(a: 17)
 discard varargProc(obj)
+
+
+
+# bug #11239
+
+type MySeq*[T] = object
+
+proc foo(a: seq[int]): string = "foo: seq[int]"
+proc foo[T](a: seq[T]): string = "foo: seq[T]"
+proc foo(a: MySeq[int]): string = "foo: MySeq[int]"
+proc foo[T](a: MySeq[T]): string = "foo: MySeq[T]"
+
+doAssert foo(@[1,2,3]) == "foo: seq[int]"
+doAssert foo(@["WER"]) == "foo: seq[T]"
+doAssert foo(MySeq[int]()) == "foo: MySeq[int]"
+doAssert foo(MySeq[string]()) == "foo: MySeq[T]"
K. Agaram <vc@akkartik.com> 2015-05-23 14:39:10 -0700 1438' href='/akkartik/mu/commit/064random.cc?h=main&id=8cb4e3653bbaaf8a445c30d63fc6bad4c5164e87'>8cb4e365 ^
8cb4e365 ^






795f5244 ^
166e3c0d ^



8cb4e365 ^




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
                                             
            
                                        
                                                
                                       
                   

        
                                                
                   
                                                                
                                                         
                     






                                             
                                                                                  



                                       




                                                
:(before "End Primitive Recipe Declarations")
REAL_RANDOM,
:(before "End Primitive Recipe Numbers")
put(Recipe_ordinal, "real-random", REAL_RANDOM);
:(before "End Primitive Recipe Checks")
case REAL_RANDOM: {
  break;
}
:(before "End Primitive Recipe Implementations")
case REAL_RANDOM: {
  // todo: limited range of numbers, might be imperfectly random
  // todo: thread state in extra ingredients and products
  products.resize(1);
  products.at(0).push_back(rand());
  break;
}

:(before "End Primitive Recipe Declarations")
MAKE_RANDOM_NONDETERMINISTIC,
:(before "End Primitive Recipe Numbers")
put(Recipe_ordinal, "make-random-nondeterministic", MAKE_RANDOM_NONDETERMINISTIC);
:(before "End Primitive Recipe Checks")
case MAKE_RANDOM_NONDETERMINISTIC: {
  break;
}
:(before "End Primitive Recipe Implementations")
case MAKE_RANDOM_NONDETERMINISTIC: {
  srand(time(NULL));
  break;
}