* revert #12217 since the root problem seems to have been fixed; fix #15974;fix #12551; fix #19464

* fix #16020; fix #16780

* fix tests and #16613

* fix #14553

* fix #19909; skip skipRegisterAddr

* fix #18641
This commit is contained in:
flywind 2022-06-22 14:43:58 +08:00 • committed by GitHub
commit 3cb2d7af05
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 263 additions and 14 deletions

View file

@ -1,6 +1,6 @@
import macros
block t9043: # issue #9043
block t9043: # bug #9043
proc foo[N: static[int]](dims: array[N, int]): string =
const N1 = N
const N2 = dims.len
@ -26,3 +26,51 @@ block t4952:
let tree = newTree(nnkExprColonExpr)
let t = (n: tree)
doAssert: t.n.kind == tree.kind
# bug #19909
type
SinglyLinkedList[T] = ref object
SinglyLinkedListObj[T] = ref object
proc addMoved[T](a, b: var SinglyLinkedList[T]) =
if a.addr != b.addr: discard
proc addMoved[T](a, b: var SinglyLinkedListObj[T]) =
if a.addr != b.addr: discard
proc main =
var a: SinglyLinkedList[int]; new a
var b: SinglyLinkedList[int]; new b
a.addMoved b
var a0: SinglyLinkedListObj[int]
var b0: SinglyLinkedListObj[int]
a0.addMoved b0
static: main()
# bug #18641
type A = object
ha1: int
static:
var a = A()
var a2 = a.addr
a2.ha1 = 11
doAssert a2.ha1 == 11
a.ha1 = 12
doAssert a.ha1 == 12
doAssert a2.ha1 == 12 # ok
static:
proc fn() =
var a = A()
var a2 = a.addr
a2.ha1 = 11
doAssert a2.ha1 == 11
a.ha1 = 12
doAssert a.ha1 == 12
doAssert a2.ha1 == 12 # fails
fn()