Objects casting and custom destructor
### Description

An error occurs when defining a custom destructor (`=destroy`) for a `Child` object type after calling a parent procedure using type conversion from `Child` to `Parent`. Specifically, the compiler throws an error: 
```
Cannot bind another '=destroy' to: Child; previous declaration was constructed here implicitly: refer to procCall Parent(c).parentCall
```


Here is the code that produces the error:

```nim
type
  Parent = object of RootObj
  Child = object of Parent

proc parentCall(p: Parent) =
  echo $p.type

## This one works
# proc `=destroy`(c: Child) =
#   echo "Child destructor" 

proc childCallParent(c: Child) =
  procCall Parent(c).parentCall

### Error : Cannot bind another '=destroy' to: Child; previous declaration was constructed here implicitly: refer to procCall Parent(c).parentCall ###
proc `=destroy`(c: Child) =
  echo "Child destructor"

let c: Child = Child()
c.childCallParent
```

### Nim Version

2.1.0
2.0.8
1.6.20

### Current Output

```text
Cannot bind another '=destroy' to: Child; previous declaration was constructed here implicitly
```


### Expected Output

```text
No errors
```


### Possible Solution

If the `=destroy` procedure is defined *before* the `childCallParent` procedure (and the type conversion), the program compiles and runs correctly. Uncommenting the first `=destroy` proc and removing the second one resolves the issue.


However, this workaround is not ideal because it imposes restrictions on the order of procedure definitions.

### Additional Information

_No response_