mirror of
https://github.com/nim-lang/Nim.git
synced 2026-04-19 22:10:33 +00:00
fixes #7637; assignments are not allowed to slice object; minor breaking change
This commit is contained in:
@@ -1,9 +1,7 @@
|
||||
discard """
|
||||
output: '''tbObj of TC false
|
||||
false
|
||||
output: '''tbObj of TC true
|
||||
true
|
||||
5
|
||||
false'''
|
||||
5'''
|
||||
"""
|
||||
|
||||
# bug #1053
|
||||
@@ -20,10 +18,10 @@ type
|
||||
proc test(p: TA) =
|
||||
#echo "p of TB ", p of TB
|
||||
if p of TB:
|
||||
var tbObj = TB(p)
|
||||
#var tbObj = TB(p)
|
||||
|
||||
# tbObj is actually no longer compatible with TC:
|
||||
echo "tbObj of TC ", tbObj of TC
|
||||
echo "tbObj of TC ", p of TC
|
||||
|
||||
var v = TC()
|
||||
v.a = 1
|
||||
@@ -48,8 +46,8 @@ proc isMyObject(obj: TObject) =
|
||||
|
||||
asd.x = 5
|
||||
|
||||
var asdCopy = TObject(asd)
|
||||
echo asdCopy of MyObject
|
||||
#var asdCopy = TObject(asd)
|
||||
#echo asdCopy of MyObject
|
||||
|
||||
isMyObject(asd)
|
||||
isMyObject(asdCopy)
|
||||
#isMyObject(asdCopy)
|
||||
|
||||
24
tests/objects/tobj_asgn_dont_slice.nim
Normal file
24
tests/objects/tobj_asgn_dont_slice.nim
Normal file
@@ -0,0 +1,24 @@
|
||||
discard """
|
||||
outputsub: '''ObjectAssignmentError'''
|
||||
exitcode: "1"
|
||||
"""
|
||||
|
||||
# bug #7637
|
||||
type
|
||||
Fruit = object of RootObj
|
||||
name*: string
|
||||
Apple = object of Fruit
|
||||
Pear = object of Fruit
|
||||
|
||||
method eat(f: Fruit) {.base.} =
|
||||
raise newException(Exception, "PURE VIRTUAL CALL")
|
||||
|
||||
method eat(f: Apple) =
|
||||
echo "fruity"
|
||||
|
||||
method eat(f: Pear) =
|
||||
echo "juicy"
|
||||
|
||||
let basket = [Apple(name:"a"), Pear(name:"b")]
|
||||
|
||||
eat(basket[0])
|
||||
@@ -9,8 +9,8 @@ discard """
|
||||
(k: kindA, a: (x: "abc", z: [1, 8, 3]), method: ())
|
||||
(k: kindA, a: (x: "abc", z: [1, 9, 3]), method: ())
|
||||
(k: kindA, a: (x: "abc", z: [1, 10, 3]), method: ())
|
||||
(x: 123)
|
||||
(x: 123)
|
||||
(y: 0, x: 123)
|
||||
(y: 678, x: 123)
|
||||
(z: 89, y: 0, x: 128)
|
||||
(y: 678, x: 123)
|
||||
(y: 678, x: 123)
|
||||
@@ -33,7 +33,6 @@ type
|
||||
`method`: TEmpty # bug #1791
|
||||
|
||||
proc `$`[T](s: seq[T]): string =
|
||||
# XXX why is that not in the stdlib?
|
||||
result = "["
|
||||
for i, x in s:
|
||||
if i > 0: result.add(", ")
|
||||
@@ -59,7 +58,7 @@ type
|
||||
# inherited fields are ignored, so no fields are set
|
||||
when true:
|
||||
var
|
||||
o: A
|
||||
o: B
|
||||
o = B(x: 123)
|
||||
echo o
|
||||
o = B(y: 678, x: 123)
|
||||
|
||||
Reference in New Issue
Block a user