12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- discard """
- output: "SUCCESS"
- """
- type
- BasicNumber = object of RootObj
- value: float32
- RefChild* = ref object
- curr*: TokenObject
- Token* {.pure.} = enum
- foo,
- bar,
- TokenObject = object
- case kind*: Token
- of Token.foo:
- foo*: string
- of Token.bar:
- bar*: BasicNumber
- var t = RefChild()
- t.curr = TokenObject(kind: Token.bar, bar: BasicNumber(value: 12.34))
- t.curr = TokenObject(kind: Token.foo, foo: "foo")
- echo "SUCCESS"
- proc passToVar(x: var Token) = discard
- {.cast(uncheckedAssign).}:
- passToVar(t.curr.kind)
- t.curr = TokenObject(kind: t.curr.kind, foo: "abc")
- t.curr.kind = Token.foo
- block:
- type
- TokenKind = enum
- strLit, intLit
- Token = object
- case kind*: TokenKind
- of strLit:
- s*: string
- of intLit:
- i*: int64
- var t = Token(kind: strLit, s: "abc")
- {.cast(uncheckedAssign).}:
- # inside the 'cast' section it is allowed to assign to the 't.kind' field directly:
- t.kind = intLit
- {.cast(uncheckedAssign).}:
- t.kind = strLit
|