Files
Nim/tests/stdlib/tdecls.nim
ringabout 3d2f0e2c7c make more standard libraries work with nimPreviewSlimSystem (#20343)
* make more standard libraries work with `nimPreviewSlimSystem`

* typo

* part two

* Delete specutils.nim

* fixes more tests

* more fixes

* fixes tests

* fixes three more tests

* add formatfloat import

* fix

* last
2022-09-27 20:06:23 +02:00

50 lines
992 B
Nim

discard """
targets: "c cpp js"
"""
import std/assertions
import std/decls
template fun() =
var s = @[10,11,12]
var a {.byaddr.} = s[0]
a+=100
doAssert s == @[110,11,12]
doAssert a is int
var b {.byaddr.}: int = s[0]
doAssert a.addr == b.addr
when false:
# template specific redeclaration issue
# see https://github.com/nim-lang/Nim/issues/8275
doAssert not compiles(block:
# redeclaration not allowed
var foo = 0
var foo {.byaddr.} = s[0])
doAssert not compiles(block:
# ditto
var foo {.byaddr.} = s[0]
var foo {.byaddr.} = s[0])
block:
var b {.byaddr.} = s[1] # redeclaration ok in sub scope
b = 123
doAssert s == @[110,123,12]
b = b * 10
doAssert s == @[1100,123,12]
doAssert not compiles(block:
var b2 {.byaddr.}: float = s[2])
doAssert compiles(block:
var b2 {.byaddr.}: int = s[2])
proc fun2() = fun()
fun()
fun2()
static: fun2()
when false: # pending bug #13887
static: fun()