mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-29 17:34:43 +00:00
* Error -> Defect for defects The distinction between Error and Defect is subjective, context-dependent and somewhat arbitrary, so when looking at an exception, it's hard to guess what it is - this happens often when looking at a `raises` list _without_ opening the corresponding definition and digging through layers of inheritance. With the help of a little consistency in naming, it's at least possible to start disentangling the two error types and the standard lib can set a good example here.
25 lines
417 B
Nim
25 lines
417 B
Nim
discard """
|
|
outputsub: '''ObjectAssignmentDefect'''
|
|
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])
|