summary refs log tree commit diff stats
path: root/compiler/semmagic.nim
diff options
context:
space:
mode:
authorflywind <xzsflywind@gmail.com>2022-03-01 14:46:08 +0800
committerGitHub <noreply@github.com>2022-03-01 07:46:08 +0100
commitd6d36093b18dfa1e2b8b6325016f1def015250b4 (patch)
treea5b4acd79bcaf5c6851e8bf3d6714d76d10ecd4c /compiler/semmagic.nim
parent207237cec229171eafbd3357dcf128bdd270332a (diff)
downloadNim-d6d36093b18dfa1e2b8b6325016f1def015250b4.tar.gz
apply changes from #18017 and some fixes (#19571)
* implements https://github.com/nim-lang/RFCs/issues/369

* deprecate unsafeAddr; extend addr

addr is now available for all addressable locations, unsafeAddr is deprecated and become an alias for addr

* follow @Vindaar's advice

* change the signature of addr

* unsafeAddr => addr (stdlib)

* Update changelog.md

* unsafeAddr => addr (tests)

* Revert "unsafeAddr => addr (stdlib)"

This reverts commit ab83c99c507048a8396e636bf22d55fdd84d7d1c.

* doc changes; thanks to @konsumlamm

Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>

* merge

* remove

* fix bug

Co-authored-by: Araq <rumpf_a@web.de>
Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>
Diffstat (limited to 'compiler/semmagic.nim')
-rw-r--r--compiler/semmagic.nim6
1 files changed, 3 insertions, 3 deletions
diff --git a/compiler/semmagic.nim b/compiler/semmagic.nim
index c7fc75620..ed1826fd4 100644
--- a/compiler/semmagic.nim
+++ b/compiler/semmagic.nim
@@ -10,11 +10,11 @@
 # This include file implements the semantic checking for magics.
 # included from sem.nim
 
-proc semAddrArg(c: PContext; n: PNode; isUnsafeAddr = false): PNode =
+proc semAddrArg(c: PContext; n: PNode): PNode =
   let x = semExprWithType(c, n)
   if x.kind == nkSym:
     x.sym.flags.incl(sfAddrTaken)
-  if isAssignable(c, x, true) notin {arLValue, arLocalLValue}:
+  if isAssignable(c, x) notin {arLValue, arLocalLValue, arAddressableConst, arLentValue}:
     localError(c.config, n.info, errExprHasNoAddress)
   result = x
 
@@ -466,7 +466,7 @@ proc magicsAfterOverloadResolution(c: PContext, n: PNode,
   of mAddr:
     checkSonsLen(n, 2, c.config)
     result = n
-    result[1] = semAddrArg(c, n[1], n[0].sym.name.s == "unsafeAddr")
+    result[1] = semAddrArg(c, n[1])
     result.typ = makePtrType(c, result[1].typ)
   of mTypeOf:
     result = semTypeOf(c, n)