summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorLemonBoy <LemonBoy@users.noreply.github.com>2018-08-14 21:28:14 +0200
committerAndreas Rumpf <rumpf_a@web.de>2018-08-14 21:28:14 +0200
commit531c66d1ec583a35d8d6bc637c94457fcd87a8e3 (patch)
tree291c76084f57b5a6fa0a643d51037c7f498fe507
parentc04404635b9efa2d6642887ca40f6222c54d9465 (diff)
downloadNim-531c66d1ec583a35d8d6bc637c94457fcd87a8e3.tar.gz
Allow taking address of skForVar variables (#8632)
Fixes #8630
-rw-r--r--compiler/parampatterns.nim2
-rw-r--r--tests/compiles/t8630.nim13
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"])