mirror of
https://github.com/nim-lang/Nim.git
synced 2026-04-20 06:20:38 +00:00
This commit is contained in:
45
tests/misc/t5540.nim
Normal file
45
tests/misc/t5540.nim
Normal file
@@ -0,0 +1,45 @@
|
||||
# bug #5540; works in 1.2.0
|
||||
# fails in 1.0 (Error: cannot generate VM code for)
|
||||
# fails in 0.18.0 (Error: type mismatch: got <type T>)
|
||||
|
||||
block:
|
||||
type
|
||||
Fruit = object
|
||||
Yellow = object
|
||||
a: int
|
||||
template getColor(x: typedesc[Fruit]): typedesc = Yellow
|
||||
type
|
||||
Banana[T] = object
|
||||
b: T
|
||||
a: getColor(Fruit)
|
||||
Apple[T] = object
|
||||
a: T
|
||||
b: getColor(T)
|
||||
block:
|
||||
var x: Banana[int]
|
||||
doAssert x.b == 0
|
||||
doAssert x.a is Yellow
|
||||
block:
|
||||
var x: Apple[Fruit]
|
||||
doAssert x.b is Yellow
|
||||
|
||||
block:
|
||||
type
|
||||
Fruit = object
|
||||
Yellow = object
|
||||
a: int
|
||||
|
||||
template getColor(x: typedesc[Fruit]): typedesc = Yellow
|
||||
|
||||
type
|
||||
Banana[T] = object
|
||||
b: T
|
||||
a: getColor(Fruit)
|
||||
|
||||
Apple[T] = object
|
||||
a: T
|
||||
b: getColor(T)
|
||||
|
||||
var x: Banana[int]
|
||||
x.b = 13
|
||||
x.a.a = 17
|
||||
Reference in New Issue
Block a user