Fixes 8979

This commit is contained in:
Andrii Riabushenko 2018-09-16 21:33:21 +01:00
commit acaf2b8e76
2 changed files with 35 additions and 2 deletions

View file

@ -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