mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-30 09:54:49 +00:00
46 lines
748 B
Nim
46 lines
748 B
Nim
discard """
|
|
msg: '''BracketExpr
|
|
Sym "array"
|
|
Infix
|
|
Ident ".."
|
|
IntLit 0
|
|
IntLit 2
|
|
BracketExpr
|
|
Sym "Vehicle"
|
|
Sym "int"
|
|
---------
|
|
BracketExpr
|
|
Sym "array"
|
|
Infix
|
|
Ident ".."
|
|
IntLit 0
|
|
IntLit 2
|
|
BracketExpr
|
|
Sym "Vehicle"
|
|
Sym "int"
|
|
---------'''
|
|
"""
|
|
|
|
# bug #7818
|
|
# this is not a macro bug, but array construction bug
|
|
# I use macro to avoid object slicing
|
|
# see #7712 and #7637
|
|
import macros
|
|
|
|
type
|
|
Vehicle[T] = object of RootObj
|
|
tire: T
|
|
Car[T] = object of Vehicle[T]
|
|
Bike[T] = object of Vehicle[T]
|
|
|
|
macro peek(n: typed): untyped =
|
|
echo getTypeImpl(n).treeRepr
|
|
echo "---------"
|
|
|
|
var v = Vehicle[int](tire: 3)
|
|
var c = Car[int](tire: 4)
|
|
var b = Bike[int](tire: 2)
|
|
|
|
peek([c, b, v])
|
|
peek([v, c, b])
|