I'm getting some odd behavior that I don't understand. I've simplified it down to this example: type NodeKind = enum A, B Node = object case kind: NodeKind of A: children: seq[Node] of B: value: int # <-------- this line const root = Node(kind: A, children: @[Node(), Node()]) static: echo "COMPILETIME CHILDREN ", root.children.len echo "RUNTIME CHILDREN ", root.children.len Run
When run it produces this: COMPILETIME CHILDREN 2 RUNTIME CHILDREN 0 Run However if you change the marked line to discard: COMPILETIME CHILDREN 2 RUNTIME CHILDREN 2 Run Changing the const to var produces the correct result either way, but the actual code this is based on needs to be a const. I'm not sure if this is a bug or if I'm just misunderstanding something