Removes deprecated {.injectStmt.}. Fixes #18666 (#18984)

This commit is contained in:
Dominik Picheta 2021-10-13 10:09:45 +01:00 • committed by GitHub
commit 2aa97a228a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 2 additions and 79 deletions

View file

@ -1,51 +0,0 @@
discard """
joinable: false
output:'''
onInject: 1
onInject: 2
ok0
ok1
onInject: 3
onInject: 4
onInject: 5
0
onInject: 6
onInject: 7
onInject: 8
1
onInject: 9
onInject: 10
onInject: 11
2
ok2
onInject: 12
'''
"""
# test {.injectStmt.}
#[
{.injectStmt.} pragma can be used to inject a statement before every
other statement in the current module. It's now undocumented and may be removed
in the future and replaced with something more general and without its limitations.
(e.g. doesn't work in VM or js backends).
]#
from system/ansi_c import c_printf
var count = 0
proc onInject*() =
count.inc
# echo count # xxx would fail, probably infinite recursion
c_printf("onInject: %d\n", cast[int](count))
{.injectStmt: onInject().}
echo "ok0"
proc main()=
echo "ok1"
for a in 0..<3:
echo a
echo "ok2"
static: main() # xxx injectStmt not honored in VM
main()