diff options
-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"]) |