diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2017-03-31 16:40:21 +0200 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2017-03-31 16:40:21 +0200 |
commit | 529609f7ed31fd0df25ad3e6ce89948430167d86 (patch) | |
tree | d7bb65b46aaaccdf80f524dfb4ea801f929ef1db /lib | |
parent | 82bf1e6697e3864058e94773c88a422f0686df02 (diff) | |
parent | c11d7c35dd0dbe54cef108988955c48f4e1fab48 (diff) | |
download | Nim-529609f7ed31fd0df25ad3e6ce89948430167d86.tar.gz |
Merge remote-tracking branch 'origin/concepts-rebased' into araq
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pure/typetraits.nim | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/lib/pure/typetraits.nim b/lib/pure/typetraits.nim index 2c3d872df..55c4bf038 100644 --- a/lib/pure/typetraits.nim +++ b/lib/pure/typetraits.nim @@ -19,7 +19,7 @@ proc name*(t: typedesc): string {.magic: "TypeTrait".} ## ## import typetraits ## - ## proc `$`*[T](some:typedesc[T]): string = name(T) + ## proc `$`*(T: typedesc): string = name(T) ## ## template test(x): stmt = ## echo "type: ", type(x), ", value: ", x @@ -31,6 +31,21 @@ proc name*(t: typedesc): string {.magic: "TypeTrait".} ## test(@['A','B']) ## # --> type: seq[char], value: @[A, B] - proc arity*(t: typedesc): int {.magic: "TypeTrait".} ## Returns the arity of the given type + +proc genericHead*(t: typedesc): typedesc {.magic: "TypeTrait".} + ## Accepts an instantiated generic type and returns its + ## uninstantiated form. + ## + ## For example: + ## seq[int].genericHead will be just seq + ## seq[int].genericHead[float] will be seq[float] + ## + ## A compile-time error will be produced if the supplied type + ## is not generic + +proc stripGenericParams*(t: typedesc): typedesc {.magic: "TypeTrait".} + ## This trait is similar to `genericHead`, but instead of producing + ## error for non-generic types, it will just return them unmodified + |