summary refs log tree commit diff stats
path: root/compiler
diff options
context:
space:
mode:
authorflywind <xzsflywind@gmail.com>2022-01-16 18:08:38 +0800
committerGitHub <noreply@github.com>2022-01-16 11:08:38 +0100
commitd102b2f54c41f19a0545f28109d0a93550b5d886 (patch)
treef2c7a89f3ed5d7488ac798d06aeca65e29fc0c68 /compiler
parenta95399143fdbd518f4d5fe33487b656c4cde7d6d (diff)
downloadNim-d102b2f54c41f19a0545f28109d0a93550b5d886.tar.gz
deprecate unsafeAddr; extend addr (#19373)
* 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>

Co-authored-by: konsumlamm <44230978+konsumlamm@users.noreply.github.com>
Diffstat (limited to 'compiler')
-rw-r--r--compiler/isolation_check.nim2
-rw-r--r--compiler/semmagic.nim9
2 files changed, 3 insertions, 8 deletions
diff --git a/compiler/isolation_check.nim b/compiler/isolation_check.nim
index a8c5a3651..68a212794 100644
--- a/compiler/isolation_check.nim
+++ b/compiler/isolation_check.nim
@@ -71,7 +71,7 @@ proc isValueOnlyType(t: PType): bool =
 
 proc canAlias*(arg, ret: PType): bool =
   if isValueOnlyType(arg):
-    # can alias only with unsafeAddr(arg.x) and we don't care if it is not safe
+    # can alias only with addr(arg.x) and we don't care if it is not safe
     result = false
   else:
     var marker = initIntSet()
diff --git a/compiler/semmagic.nim b/compiler/semmagic.nim
index 874098294..c7fc75620 100644
--- a/compiler/semmagic.nim
+++ b/compiler/semmagic.nim
@@ -14,13 +14,8 @@ proc semAddrArg(c: PContext; n: PNode; isUnsafeAddr = false): PNode =
   let x = semExprWithType(c, n)
   if x.kind == nkSym:
     x.sym.flags.incl(sfAddrTaken)
-  if isAssignable(c, x, isUnsafeAddr) notin {arLValue, arLocalLValue}:
-    # Do not suggest the use of unsafeAddr if this expression already is a
-    # unsafeAddr
-    if isUnsafeAddr:
-      localError(c.config, n.info, errExprHasNoAddress)
-    else:
-      localError(c.config, n.info, errExprHasNoAddress & "; maybe use 'unsafeAddr'")
+  if isAssignable(c, x, true) notin {arLValue, arLocalLValue}:
+    localError(c.config, n.info, errExprHasNoAddress)
   result = x
 
 proc semTypeOf(c: PContext; n: PNode): PNode =