summary refs log tree commit diff stats
path: root/tests/stdlib/twith.nim
blob: b2d72bd0cae49678f87910a273c38e68193bfdae (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import std/with
import std/[assertions, formatfloat]

type
  Foo = object
    col, pos: string
    name: string

proc setColor(f: var Foo; r, g, b: int) = f.col = $(r, g, b)
proc setPosition(f: var Foo; x, y: float) = f.pos = $(x, y)

var f: Foo
with(f, setColor(2, 3, 4), setPosition(0.0, 1.0))
doAssert f.col == "(2, 3, 4)"
doAssert f.pos == "(0.0, 1.0)"

f = Foo()
with f:
  col = $(2, 3, 4)
  pos = $(0.0, 1.0)
  _.name = "bar"
doAssert f.col == "(2, 3, 4)"
doAssert f.pos == "(0.0, 1.0)"
doAssert f.name == "bar"