Nim/tests/concepts/tusertypeclasses2.nim
jcosborn add003a074
fix assignment to converted concept type (#15051)
* fix assignment to converted concept type

* check for resolved concepts

* add extra test
2020-07-24 21:19:11 +02:00

44 lines
757 B
Nim

block:
type
hasFieldX = concept z
z.x is int
obj_x = object
x: int
ref_obj_x = ref object
x: int
ref_to_obj_x = ref obj_x
p_o_x = ptr obj_x
v_o_x = var obj_x
template check(x) =
static: assert(x)
check obj_x is hasFieldX
check ref_obj_x is hasFieldX
check ref_to_obj_x is hasFieldX
check p_o_x is hasFieldX
check v_o_x is hasFieldX
block:
type
Foo = concept x
x.isFoo
Bar = distinct float
template isFoo(x: Bar): untyped = true
proc foo(x: var Foo) =
float(x) = 1.0
proc foo2(x: var Bar) =
float(x) = 1.0
proc foo3(x: var (Bar|SomeNumber)) =
float(x) = 1.0
proc foo4(x: var any) =
float(x) = 1.0
var x: Bar
foo(x)
foo2(x)
foo3(x)
foo4(x)