renamed new std/pragmas.nim to std/byaddr.nim (#13844)

* renamed new std/pragmas.nim to std/byaddr.nim

* minor code cleanup
This commit is contained in:
Andreas Rumpf 2020-04-02 11:52:31 +02:00 • committed by GitHub
commit d01245e501
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 8 additions and 8 deletions

View file

@ -1,9 +1,9 @@
# see `semLowerLetVarCustomPragma` for compiler support that enables these
# lowerings
template byaddr*(lhs, typ, expr) =
template byaddr*(lhs, typ, ex) =
## Allows a syntax for lvalue reference, exact analog to
## `auto& a = expr;` in C++
## `auto& a = ex;` in C++
runnableExamples:
var s = @[10,11,12]
var a {.byaddr.} = s[0]
@ -12,8 +12,8 @@ template byaddr*(lhs, typ, expr) =
doAssert a is int
var b {.byaddr.}: int = s[0]
doAssert a.addr == b.addr
when typ is type(nil):
let tmp = addr(expr)
when typ is typeof(nil):
let tmp = addr(ex)
else:
let tmp: ptr typ = addr(expr)
let tmp: ptr typ = addr(ex)
template lhs: untyped = tmp[]