diff options
author | Ryan McConnell <rammcconnell@gmail.com> | 2024-01-05 08:42:21 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-05 09:42:21 +0100 |
commit | 74fa8ed59a15caa2ee91f9e559b37728618c3865 (patch) | |
tree | 5c8cc5b69b190f8275adce0a334cbbe5ea9012c0 /tests/concepts/t976.nim | |
parent | 4eaa3b028cd8963799a637c8a4f7f553386fe395 (diff) | |
download | Nim-74fa8ed59a15caa2ee91f9e559b37728618c3865.tar.gz |
Changing generic weight of `tyGenericParam` (#22143)
This is in reference to a [feature request](https://github.com/nim-lang/Nim/issues/22142) that I posted. I'm making this PR to demonstrate the suggested change and expect that this should be scrutinized --------- Co-authored-by: Bung <crc32@qq.com> Co-authored-by: Andreas Rumpf <rumpf_a@web.de>
Diffstat (limited to 'tests/concepts/t976.nim')
-rw-r--r-- | tests/concepts/t976.nim | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/tests/concepts/t976.nim b/tests/concepts/t976.nim new file mode 100644 index 000000000..776d53827 --- /dev/null +++ b/tests/concepts/t976.nim @@ -0,0 +1,57 @@ +discard """ + output: ''' +Printable +''' +joinable: false +""" + +#[ + The converter is a proper example of a confounding variable + Moved to an isolated file +]# + +type + Obj1[T] = object + v: T +converter toObj1[T](t: T): Obj1[T] = + return Obj1[T](v: t) +block t976: + type + int1 = distinct int + int2 = distinct int + int1g = concept x + x is int1 + int2g = concept x + x is int2 + + proc take[T: int1g](value: int1) = + when T is int2: + static: error("killed in take(int1)") + + proc take[T: int2g](vale: int2) = + when T is int1: + static: error("killed in take(int2)") + + var i1: int1 = 1.int1 + var i2: int2 = 2.int2 + + take[int1](i1) + take[int2](i2) + + template reject(e) = + static: assert(not compiles(e)) + + reject take[string](i2) + reject take[int1](i2) + + # bug #6249 + type + Obj2 = ref object + PrintAble = concept x + $x is string + + proc `$`[T](nt: Obj1[T]): string = + when T is PrintAble: result = "Printable" + else: result = "Non Printable" + + echo Obj2() \ No newline at end of file |