summary refs log tree commit diff stats
path: root/tests/stdlib/twith.nim
blob: 80382f7c42f735cb403b6b43325c8ee2502a8da2 (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
import std/with

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"