As I said in the previous post, I'm trying to create a "Any Value" case type. Another problem I have is supporting "seq[AnyValue]". Seq of anything else seems to work. Maybe it's a type recursion problem? Is there a work-around?
Here's the example: type AnyValueType* = enum avBool, # ... avBoolSeq, # ... avAnySeq AnyValue* = object case kind*: AnyValueType of avBool: boolValue*: bool # ... of avBoolSeq: boolSeqValue*: seq[bool] # ... of avAnySeq: anyseqValue*: seq[AnyValue] converter toBoolAnyValue*(v: bool): AnyValue {.inline, noSideEffect.} = result.kind = avBool result.boolValue = v converter toBoolSeqAnyValue*(v: seq[bool]): AnyValue {.inline, noSideEffect.} = result.kind = avBoolSeq result.boolSeqValue = v converter toSeqAnyValueAnyValue*(v: seq[AnyValue]): AnyValue {.inline, noSideEffect.} = result.kind = avAnySeq result.anyseqValue = v when isMainModule: let boolValue: bool = true let boolValueAV: AnyValue = boolValue let boolSeqValue: seq[bool] = @[boolValue] let boolSeqValueAV: AnyValue = boolSeqValue let anyseqValue: seq[AnyValue] = @[boolValueAV] let anyseqValueAV: AnyValue = anyseqValue assert(boolValueAV.boolValue == boolValue) assert(boolSeqValueAV.boolSeqValue == boolSeqValue) assert(anyseqValueAV.anyseqValue == anyseqValue) # Compiler bug :(