diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2015-06-30 17:54:39 +0200 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2015-06-30 17:54:39 +0200 |
commit | 2f9ad55fbdaea5e9746e868a765c2a154a983f6f (patch) | |
tree | 2924610260e55f741811643d7d9b6ec9f891f636 /tests | |
parent | e9afddcb0d38a18bc321e9e85fdb3a8a0c1e3880 (diff) | |
parent | 1a14e9d366799181f7d04ea3572c8b9052607584 (diff) | |
download | Nim-2f9ad55fbdaea5e9746e868a765c2a154a983f6f.tar.gz |
Merge pull request #3025 from r-ku/3022_fix
Fixes #3022
Diffstat (limited to 'tests')
-rw-r--r-- | tests/generics/mgenericprocmatcher.nim | 11 | ||||
-rw-r--r-- | tests/generics/tgenericprocmatcher.nim | 23 |
2 files changed, 34 insertions, 0 deletions
diff --git a/tests/generics/mgenericprocmatcher.nim b/tests/generics/mgenericprocmatcher.nim new file mode 100644 index 000000000..92805fb7b --- /dev/null +++ b/tests/generics/mgenericprocmatcher.nim @@ -0,0 +1,11 @@ +import tables + +type + FFoo* = object + FBar* = object + +proc new*(_: typedesc[FFoo]): int = 2 +proc new*[T](_: typedesc[T]): int = 3 +proc new*(_: typedesc): int = 4 +proc new*(_: typedesc[seq[Table[int, seq[Table[int, string]]]]]): int = 5 +proc new*(_: typedesc[seq[Table[int, seq[Table[int, typedesc]]]]]): int = 6 diff --git a/tests/generics/tgenericprocmatcher.nim b/tests/generics/tgenericprocmatcher.nim new file mode 100644 index 000000000..dfffdb87c --- /dev/null +++ b/tests/generics/tgenericprocmatcher.nim @@ -0,0 +1,23 @@ +discard """ + exitcode: 0 +""" +import mgenericprocmatcher +import tables + +type + LFoo = object + LBar = object + + +when isMainModule: + doAssert FBar.new() == 3 + + proc new(_: typedesc[LFoo]): int = 0 + proc new[T](_: typedesc[T]): int = 1 + proc new*(_: typedesc[seq[Table[int, seq[Table[int, typedesc]]]]]): int = 7 + + doAssert LFoo.new() == 0 # Tests selecting more precise type + doAssert LBar.new() == 1 # Tests preferring function from local scope + doAssert FBar.new() == 1 + doAssert FFoo.new() == 2 # Tests selecting more precise type from other module + doAssert seq[Table[int, seq[Table[int, string]]]].new() == 5 # Truly complex type test |