diff options
author | LemonBoy <LemonBoy@users.noreply.github.com> | 2018-08-14 21:28:14 +0200 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2018-08-14 21:28:14 +0200 |
commit | 531c66d1ec583a35d8d6bc637c94457fcd87a8e3 (patch) | |
tree | 291c76084f57b5a6fa0a643d51037c7f498fe507 | |
parent | c04404635b9efa2d6642887ca40f6222c54d9465 (diff) | |
download | Nim-531c66d1ec583a35d8d6bc637c94457fcd87a8e3.tar.gz |
Allow taking address of skForVar variables (#8632)
Fixes #8630
-rw-r--r-- | compiler/parampatterns.nim | 2 | ||||
-rw-r--r-- | tests/compiles/t8630.nim | 13 |
2 files changed, 14 insertions, 1 deletions
diff --git a/compiler/parampatterns.nim b/compiler/parampatterns.nim index 944aec048..bbaf7a069 100644 --- a/compiler/parampatterns.nim +++ b/compiler/parampatterns.nim @@ -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 diff --git a/tests/compiles/t8630.nim b/tests/compiles/t8630.nim new file mode 100644 index 000000000..aa2be11cd --- /dev/null +++ b/tests/compiles/t8630.nim @@ -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"]) |