diff options
-rw-r--r-- | compiler/liftdestructors.nim | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/compiler/liftdestructors.nim b/compiler/liftdestructors.nim index 2a7301f24..6f7b285ed 100644 --- a/compiler/liftdestructors.nim +++ b/compiler/liftdestructors.nim @@ -143,9 +143,6 @@ proc fillBodyObj(c: var TLiftCtx; n, body, x, y: PNode; enforceDefaultOp: bool) fillBody(c, f.typ, body, x.dotField(f), b) of nkNilLit: discard of nkRecCase: - let oldfilterDiscriminator = c.filterDiscriminator - if c.filterDiscriminator == n[0].sym: - c.filterDiscriminator = nil # we have found the case part, proceed as normal # XXX This is only correct for 'attachedSink'! var localEnforceDefaultOp = enforceDefaultOp if c.kind == attachedSink: @@ -159,6 +156,11 @@ proc fillBodyObj(c: var TLiftCtx; n, body, x, y: PNode; enforceDefaultOp: bool) # copy the selector: fillBodyObj(c, n[0], body, x, y, enforceDefaultOp = false) + + let oldfilterDiscriminator = c.filterDiscriminator + if c.filterDiscriminator == n[0].sym: + c.filterDiscriminator = nil # we have found the case part, proceed as normal + # we need to generate a case statement: var caseStmt = newNodeI(nkCaseStmt, c.info) # XXX generate 'if' that checks same branches |