[closes #11625 and closes #2488]add global and threadvar(with --threads:off mode ) pragmas supports for JS backend (#15772)

* add global pragma support for js backend

* globalThis

* add support for threadvar

* more tests

* Update compiler/jsgen.nim

Co-authored-by: Andreas Rumpf <rumpf_a@web.de>
This commit is contained in:
flywind 2020-10-30 22:34:07 +08:00 • committed by GitHub
commit 2cfe5e0745
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 36 additions and 1 deletions

30
tests/js/tglobal.nim Normal file
View file

@ -0,0 +1,30 @@
block global:
proc getState(): int =
var state0 {.global.}: int
inc state0
result = state0
for i in 0 ..< 3:
doAssert getState() == i + 1
for i in 0 ..< 3:
once:
doAssert i == 0
block threadvar:
proc getThreadState0(): int =
var state0 {.threadvar.}: int
inc state0
result = state0
for i in 0 ..< 3:
doAssert getThreadState0() == i + 1
proc getThreadState1(): int =
var state1 {.threadvar.}: int
inc state1
result = state1
for i in 0 ..< 3:
doAssert getThreadState1() == i + 1