mirror of
https://github.com/nim-lang/Nim.git
synced 2026-04-28 18:24:01 +00:00
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:
32
tests/types/t5648.nim
Normal file
32
tests/types/t5648.nim
Normal 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()
|
||||
@@ -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])
|
||||
|
||||
Reference in New Issue
Block a user