From d01245e501c3d90449383d055da9cb1fe5a24a7f Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Thu, 2 Apr 2020 11:52:31 +0200 Subject: [PATCH] renamed new std/pragmas.nim to std/byaddr.nim (#13844) * renamed new std/pragmas.nim to std/byaddr.nim * minor code cleanup --- changelog.md | 4 ++-- lib/std/{pragmas.nim => byaddr.nim} | 10 +++++----- tests/stdlib/{tpragmas.nim => tbyaddr.nim} | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) rename lib/std/{pragmas.nim => byaddr.nim} (72%) rename tests/stdlib/{tpragmas.nim => tbyaddr.nim} (98%) diff --git a/changelog.md b/changelog.md index 2e6da90aa3..7dccc20b90 100644 --- a/changelog.md +++ b/changelog.md @@ -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. diff --git a/lib/std/pragmas.nim b/lib/std/byaddr.nim similarity index 72% rename from lib/std/pragmas.nim rename to lib/std/byaddr.nim index 5dce04c11a..dd7d19da7d 100644 --- a/lib/std/pragmas.nim +++ b/lib/std/byaddr.nim @@ -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[] diff --git a/tests/stdlib/tpragmas.nim b/tests/stdlib/tbyaddr.nim similarity index 98% rename from tests/stdlib/tpragmas.nim rename to tests/stdlib/tbyaddr.nim index b91d7e5472..b485635c72 100644 --- a/tests/stdlib/tpragmas.nim +++ b/tests/stdlib/tbyaddr.nim @@ -1,4 +1,4 @@ -import std/pragmas +import std/byaddr block: var s = @[10,11,12]