parent
08a954f7ee
commit
32ec5af60a
3 changed files with 72 additions and 11 deletions
55
tests/objects/tinherentedvalues.nim
Normal file
55
tests/objects/tinherentedvalues.nim
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
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)
|
||||
Loading…
Add table
Add a link
Reference in a new issue