Merge pull request #11159 from JasperJenkins/const-named-tuple-unpack
Const named tuple unpacking
This commit is contained in:
commit
cd79c6f532
3 changed files with 23 additions and 2 deletions
|
|
@ -641,7 +641,8 @@ proc semConst(c: PContext, n: PNode): PNode =
|
||||||
addSon(b, copyTree(def))
|
addSon(b, copyTree(def))
|
||||||
else:
|
else:
|
||||||
setVarType(c, v, typ.sons[j])
|
setVarType(c, v, typ.sons[j])
|
||||||
v.ast = def[j]
|
v.ast = if def[j].kind != nkExprColonExpr: def[j]
|
||||||
|
else: def[j].sons[1]
|
||||||
b.sons[j] = newSymNode(v)
|
b.sons[j] = newSymNode(v)
|
||||||
addSon(result,b)
|
addSon(result,b)
|
||||||
dec c.inStaticContext
|
dec c.inStaticContext
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
discard """
|
discard """
|
||||||
action: run
|
action: run
|
||||||
disabled: true
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
block:
|
block:
|
||||||
|
|
|
||||||
|
|
@ -81,6 +81,27 @@ block unpack_const:
|
||||||
doAssert z == 6
|
doAssert z == 6
|
||||||
|
|
||||||
|
|
||||||
|
# bug #10724
|
||||||
|
block unpack_const_named:
|
||||||
|
const (a, ) = (x: 1, )
|
||||||
|
doAssert a == 1
|
||||||
|
|
||||||
|
const (b, c) = (x: 2, y: 3)
|
||||||
|
doAssert b == 2
|
||||||
|
doAssert c == 3
|
||||||
|
|
||||||
|
const (d, e, f) = (x: 4, y: 5, z: 6)
|
||||||
|
doAssert d == 4
|
||||||
|
doAssert e == 5
|
||||||
|
doAssert f == 6
|
||||||
|
|
||||||
|
block const_named:
|
||||||
|
const x = block:
|
||||||
|
(a: 1, b: 2, c: 3)
|
||||||
|
doAssert x.a == 1
|
||||||
|
doAssert x.b == 2
|
||||||
|
doAssert x.c == 3
|
||||||
|
|
||||||
|
|
||||||
block tuple_subscript:
|
block tuple_subscript:
|
||||||
proc`[]` (t: tuple, key: string): string =
|
proc`[]` (t: tuple, key: string): string =
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue