mirror of
https://github.com/nim-lang/Nim.git
synced 2026-02-17 08:34:20 +00:00
* defer skiptypes * defer skiptypes for tyRef & tyPtr * remove unneeded skipTypes
This commit is contained in:
45
tests/array/t7818.nim
Normal file
45
tests/array/t7818.nim
Normal file
@@ -0,0 +1,45 @@
|
||||
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])
|
||||
Reference in New Issue
Block a user