Allow taking address of skForVar variables (#8632)

Fixes #8630
This commit is contained in:
LemonBoy
2018-08-14 21:28:14 +02:00
committed by Andreas Rumpf
parent c04404635b
commit 531c66d1ec
2 changed files with 14 additions and 1 deletions

View File

@@ -217,7 +217,7 @@ proc isAssignable*(owner: PSym, n: PNode; isUnsafeAddr=false): TAssignableResult
if n.typ != nil and n.typ.kind == tyVar:
result = arLValue
of nkSym:
let kinds = if isUnsafeAddr: {skVar, skResult, skTemp, skParam, skLet}
let kinds = if isUnsafeAddr: {skVar, skResult, skTemp, skParam, skLet, skForVar}
else: {skVar, skResult, skTemp}
if n.sym.kind in kinds:
if owner != nil and owner == n.sym.owner and

13
tests/compiles/t8630.nim Normal file
View File

@@ -0,0 +1,13 @@
discard """
output: '''
foo
bar
'''
"""
proc test(strings: seq[string]) =
for s in strings:
var p3 = unsafeAddr(s)
echo p3[]
test(@["foo", "bar"])