diff options
author | ringabout <43030857+ringabout@users.noreply.github.com> | 2023-01-01 17:25:04 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-01 10:25:04 +0100 |
commit | 5b20f0685c71e68ab08f7a1941f7e160d91e538f (patch) | |
tree | 92f05e546316a9b3f388e294a1fefe5be8904793 | |
parent | 4032eb4baafcfb4a1cb8fd41a474daac70103856 (diff) | |
download | Nim-5b20f0685c71e68ab08f7a1941f7e160d91e538f.tar.gz |
fixes pragmas reorder (#21205)
-rw-r--r-- | compiler/reorder.nim | 1 | ||||
-rw-r--r-- | tests/pragmas/tpragmas_reorder.nim | 19 |
2 files changed, 20 insertions, 0 deletions
diff --git a/compiler/reorder.nim b/compiler/reorder.nim index 4fabf9041..4ad3f1219 100644 --- a/compiler/reorder.nim +++ b/compiler/reorder.nim @@ -106,6 +106,7 @@ proc computeDeps(cache: IdentCache; n: PNode, declares, uses: var IntSet; topLev if a.kind == nkExprColonExpr and a[0].kind == nkIdent and a[0].ident.s == "pragma": # user defined pragma decl(a[1]) + for i in 1..<n.safeLen: deps(n[i]) else: for i in 0..<n.safeLen: deps(n[i]) of nkMixinStmt, nkBindStmt: discard diff --git a/tests/pragmas/tpragmas_reorder.nim b/tests/pragmas/tpragmas_reorder.nim new file mode 100644 index 000000000..c4b1a6b0a --- /dev/null +++ b/tests/pragmas/tpragmas_reorder.nim @@ -0,0 +1,19 @@ +discard """ + matrix: "--experimental:codeReordering" +""" + +runnableExamples: + import strtabs + var t = newStringTable() + t["name"] = "John" + t["city"] = "Monaco" + doAssert t.len == 2 + doAssert t.hasKey "name" + doAssert "name" in t + +include "system/inclrtl" + +{.pragma: rtlFunc, rtl.} + +proc hasKey*(): bool {.rtlFunc.} = + discard \ No newline at end of file |