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
parent 68539a2926
commit d01245e501
3 changed files with 8 additions and 8 deletions

View File

@@ -152,7 +152,7 @@ echo f
- `std/oswalkdir` was buggy, it's now deprecated and reuses `std/os` procs
- `net.newContext` now performs SSL Certificate checking on Linux and OSX.
Define `nimDisableCertificateValidation` to disable it globally.
- new syntax for lvalue references: `var b {.byaddr.} = expr` enabled by `import pragmas`
- new syntax for lvalue references: `var b {.byaddr.} = expr` enabled by `import std/byaddr`
- new module `std/stackframes`, in particular `setFrameMsg` which enables
custom runtime annotation of stackframes, see #13351 for examples. Turn on/off via
`--stackTraceMsgs:on/off`
@@ -166,7 +166,7 @@ echo f
of `=destroy` and `copyMem` to move objects efficiently.
- `var a {.foo.}: MyType = expr` now lowers to `foo(a, MyType, expr)` for non builtin pragmas,
enabling things like lvalue references, see `pragmas.byaddr`
enabling things like lvalue references, see `byaddr.byaddr`
- `macro pragmas` can now be used in type sections.

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[]

View File

@@ -1,4 +1,4 @@
import std/pragmas
import std/byaddr
block:
var s = @[10,11,12]