mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-29 17:34:43 +00:00
56 lines
720 B
Nim
56 lines
720 B
Nim
discard """
|
|
output: '''tbObj of TC false
|
|
false
|
|
true
|
|
5
|
|
false'''
|
|
"""
|
|
|
|
# bug #1053
|
|
type
|
|
TA = object of TObject
|
|
a: int
|
|
|
|
TB = object of TA
|
|
b: int
|
|
|
|
TC = object of TB
|
|
c: int
|
|
|
|
proc test(p: TA) =
|
|
#echo "p of TB ", p of TB
|
|
if p of TB:
|
|
var tbObj = TB(p)
|
|
|
|
# tbObj is actually no longer compatible with TC:
|
|
echo "tbObj of TC ", tbObj of TC
|
|
|
|
var v = TC()
|
|
v.a = 1
|
|
v.b = 2
|
|
v.c = 3
|
|
test(v)
|
|
|
|
|
|
# bug #924
|
|
type
|
|
MyObject = object of TObject
|
|
x: int
|
|
|
|
var
|
|
asd: MyObject
|
|
|
|
proc isMyObject(obj: TObject) =
|
|
echo obj of MyObject
|
|
if obj of MyObject:
|
|
let a = MyObject(obj)
|
|
echo a.x
|
|
|
|
asd.x = 5
|
|
|
|
var asdCopy = TObject(asd)
|
|
echo asdCopy of MyObject
|
|
|
|
isMyObject(asd)
|
|
isMyObject(asdCopy)
|