diff options
Diffstat (limited to 'tests/concepts/tmodifiersinplace.nim')
-rw-r--r-- | tests/concepts/tmodifiersinplace.nim | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/tests/concepts/tmodifiersinplace.nim b/tests/concepts/tmodifiersinplace.nim new file mode 100644 index 000000000..db5583929 --- /dev/null +++ b/tests/concepts/tmodifiersinplace.nim @@ -0,0 +1,30 @@ +type + VarContainer[T] = concept c + put(var c, T) + + AltVarContainer[T] = concept var c + put(c, T) + + NonVarContainer[T] = concept c + put(c, T) + + GoodContainer = object + x: int + + BadContainer = object + x: int + +proc put(x: BadContainer, y: int) = discard +proc put(x: var GoodContainer, y: int) = discard + +template ok(x) = assert(x) +template no(x) = assert(not(x)) + +static: + ok GoodContainer is VarContainer[int] + ok GoodContainer is AltVarContainer[int] + no BadContainer is VarContainer[int] + no BadContainer is AltVarContainer[int] + ok GoodContainer is NonVarContainer[int] + ok BadContainer is NonVarContainer[int] + |