mirror of
https://github.com/nim-lang/Nim.git
synced 2026-04-21 06:45:27 +00:00
@@ -2,7 +2,8 @@ discard """
|
||||
output: '''obj = (inner: (kind: Just, id: 7))
|
||||
obj.inner.id = 7
|
||||
id = 7
|
||||
obj = (inner: (kind: Just, id: 7))'''
|
||||
obj = (inner: (kind: Just, id: 7))
|
||||
2'''
|
||||
"""
|
||||
|
||||
# bug #6960
|
||||
@@ -105,3 +106,35 @@ type
|
||||
|
||||
proc bug5137(d: MyIntDistinct) =
|
||||
discard d.MyInt
|
||||
|
||||
#-------------------------------------
|
||||
# bug #8979
|
||||
|
||||
type
|
||||
MyKind = enum
|
||||
Fixed, Float
|
||||
|
||||
MyObject = object
|
||||
someInt: int
|
||||
case kind: MyKind
|
||||
of Float: index: string
|
||||
of Fixed: nil
|
||||
|
||||
MyResult = object
|
||||
val: array[0..1, string]
|
||||
vis: set[0..1]
|
||||
|
||||
import macros
|
||||
|
||||
func myfunc(obj: MyObject): MyResult {.raises: [].} =
|
||||
template index: auto =
|
||||
case obj.kind:
|
||||
of Float: $obj.index
|
||||
of Fixed: "Fixed"
|
||||
macro to_str(a: untyped): string =
|
||||
result = newStrLitNode(a.repr)
|
||||
result.val[0] = index
|
||||
result.val[1] = to_str(obj.kind + Ola)
|
||||
|
||||
let x = MyObject(someInt: 10, kind: Fixed)
|
||||
echo myfunc(x).val.len
|
||||
|
||||
Reference in New Issue
Block a user