test case haul for old generic/template/macro issues (#22564)

* test case haul for old generic/template/macro issues

closes #12582, closes #19552, closes #2465, closes #4596, closes #15246,
closes #12683, closes #7889, closes #4547, closes #12415, closes #2002,
closes #1771, closes #5121

The test for #5648 is also moved into its own test
from `types/tissues_types` due to not being joinable.

* fix template gensym test
This commit is contained in:
metagn
2023-08-27 12:27:47 +03:00
committed by GitHub
parent a108a451c5
commit c19fd69b69
9 changed files with 248 additions and 34 deletions

32
tests/types/t5648.nim Normal file
View File

@@ -0,0 +1,32 @@
discard """
output: '''
ptr Foo
'''
joinable: false
"""
# not joinable because it causes out of memory with --gc:boehm
# issue #5648
import typetraits
type Foo = object
bar: int
proc main() =
var f = create(Foo)
f.bar = 3
echo f.type.name
discard realloc(f, 0)
var g = Foo()
g.bar = 3
var
mainPtr = cast[pointer](main)
mainFromPtr = cast[typeof(main)](mainPtr)
doAssert main == mainFromPtr
main()

View File

@@ -3,7 +3,6 @@ discard """
true
true
true
ptr Foo
(member: "hello world")
(member: 123.456)
(member: "hello world", x: ...)
@@ -11,10 +10,7 @@ ptr Foo
0
false
'''
joinable: false
"""
# not joinable because it causes out of memory with --gc:boehm
import typetraits
block t1252:
echo float32 isnot float64
@@ -29,28 +25,6 @@ block t5640:
var v = vec2([0.0'f32, 0.0'f32])
block t5648:
type Foo = object
bar: int
proc main() =
var f = create(Foo)
f.bar = 3
echo f.type.name
discard realloc(f, 0)
var g = Foo()
g.bar = 3
var
mainPtr = cast[pointer](main)
mainFromPtr = cast[typeof(main)](mainPtr)
doAssert main == mainFromPtr
main()
block t7581:
discard int -1
@@ -107,3 +81,18 @@ block:
var f1: Foo
echo f1.bar
import macros
block: # issue #12582
macro foo(T: type): type =
nnkBracketExpr.newTree(bindSym "array", newLit 1, T)
var
_: foo(int) # fine
type
Foo = object
x: foo(int) # fine
Bar = ref object
x: foo(int) # error
let b = Bar()
let b2 = Bar(x: [123])